如何获取用户输入的每个单词的第一个字母 [英] How to get the first letter of each word enter by user

查看:45
本文介绍了如何获取用户输入的每个单词的第一个字母的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码的详细信息

name:-read(X),write('Name : '),write(X),nameCode(X).
nameCode(X):-nl, write('Name Code : ').

我想从每个单词中取出前 3 个字母并显示出来.应该在我的代码中添加什么?此外,我得到的结果只允许我输入用户的一个名字.当我尝试在查询中输入多个名字(peter jane mary)时,它显示如下语法消息

| ?- name.
|: peter jane mary.
* Syntax Error

下面是我要打印的结果

Name : peter jane mary
Name Code : PJM

推荐答案

1- 首先,用户输入他/她的名字/中间名/姓氏.

1- First the user enters his/her first/middle/last name.

2- 已读取.

3- string_chars 将字符串分解成字符:peter 将变成 p,e,t,e,r

3- string_chars breaks the string into characters : peter will become p,e,t,e,r

4- getFirstLetter 谓词从列表中提取第一个元素:从彼得我们得到 p.

4- getFirstLetter Predicate extracts the first element from the list: from peter we get p.

5- upcase_atom 将小写字母转换为大写:p 将变为 P.

5- upcase_atom convert lowercase letters to uppercase: p will become P.

6- 使用 write 显示答案.

6- display the answer using write.

 k:- 
  write('Enter First name: '),nl, 
  read(FName),nl, 
  string_chars(FName,N1),
  getFirstLetter(N1,L1),
  upcase_atom(L1,Str1),
  
    
  write('Enter Middle name: '),nl, 
  read(MName),nl, 
  string_chars(MName,N2),
  getFirstLetter(N2,L2),
  upcase_atom(L2,Str2),
  
    
  write('Enter Last name: '),nl, 
  read(LName),nl, 
  string_chars(LName,N3),
  getFirstLetter(N3,L3),
  upcase_atom(L3,Str3),
  write(Str1),write(' '),write(Str2),write(' '),write(Str3).  

 getFirstLetter([H|_],H).

示例:

?-k.

Enter First name:
peter

Enter Middle name:
jane

Enter Last name:
mary

P J M

___

更具挑战性的任务:删除名称的第一个字母.

1- 首先,用户输入他/她的名字/中间名/姓氏.

1- First the user enters his/her first/middle/last name.

2- 已读取.

3- string_chars 将字符串分解成字符:peter 将变成 p,e,t,e,r

3- string_chars breaks the string into characters : peter will become p,e,t,e,r

4- removeFirstLetter 谓词删除第一个字母:p,e,t,e,r 将变为 e,t,e,r

4- removeFirstLetter predicate removes the first letter: p,e,t,e,r will become e,t,e,r

5- charstring 谓词将 e,t,e,r 转换为e"、t"、e"、r",我们使用 term_string(这对于下一个步骤)

5- charstring predicate will convert e,t,e,r to "e","t","e","r", we do this using term_string (this is important for the next step)

6- atomic_list_concat 将所有单独的字符连接在一起:e"、t"、e"、r";将要成为永恒

6- atomic_list_concat joins all the separate charaters together: "e","t","e","r" will become eter

 k:- 
      write('Enter first name: '),nl, 
      read(FName),nl, 
      string_chars(FName,N1),
      removeFirstLetter(N1,L1),
      charstring(L1,String1),
      atomic_list_concat( String1 , Cs1),
      
      write('Enter Middle name: '),nl, 
      read(MidName),nl,
      string_chars(MidName,N2),
      removeFirstLetter(N2,L2),
      charstring(L2,String2),
      atomic_list_concat( String2 , Cs2),
      
      write('Enter Last name: '),nl, 
      read(LName),nl,
      string_chars(LName,N3),
      removeFirstLetter(N3,L3),
      charstring(L3,String3),
      atomic_list_concat( String3 , Cs3),
      write(Cs1),write(" "),write(Cs2), write(" "),write(Cs3).
        
charstring([],[]).
    charstring([H|T],[H2|L]):-
    term_string(H,H2),
charstring(T,L).
    
removeFirstLetter([_|T],T).

示例:

?-k.

Enter first name:
peter

Enter Middle name:
jane

Enter Last name:
mary

eter ane ary
1true

这篇关于如何获取用户输入的每个单词的第一个字母的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆