Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
3 / 3 / 0
Регистрация: 27.06.2012
Сообщений: 165
Записей в блоге: 1
1

В списке, содержащем фамилии, имена и отчества студентов группы, заменить имена и отчества на инициалы

15.07.2012, 08:57. Просмотров 3593. Ответов 10
Метки нет (Все метки)

В списке, содержащем фамилии, имена и отчества студентов группы, заменить имена и отчества на инициалы. Напечатать полученный список. (В исходном списке после фамилии и имени стоит пробел, после отчества - запятая, в конце списка - точка.)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2012, 08:57
Ответы с готовыми решениями:

Вывести фамилии, имена и отчества всех студентов мужского пола, не сдавших более двух экзаменов
вывести фамилии, имена и отчества всех студентов мужского пола , не сдавших более двх экзаменов

Вывести фамилии, имена и отчества мастеров с высшим образованием и вычислить их средний стаж.
В анкетах сотрудников некоторого учреждения имеются следующие сведения: фамилия, имя, отчество, год...

Организовать три очереди с одинаковым количеством элементов, содержащие соответствено имена, отчества и фамилии людей
Организовать три очереди с одинаковым количеством элементов, содержащие соответствено имена,...

Описать процедуру, которая печатает фамилию и инициалы вместо имя и отчества
Заданы фамилия, имя, отчество учащегося, разделенного пробелами. Описать процедуру, которая...

10
Модератор
61613 / 46126 / 31838
Регистрация: 18.05.2008
Сообщений: 111,219
15.07.2012, 09:33 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
uses crt;
var s:string;
    c:char;
    i,j,k:byte;
begin
clrscr;
writeln('Введите список вида Фамилия имя Отчество, в конце списка точка');
s:='';
repeat {вводим список в строку до точки}
c:=readkey;
write(c);
s:=s+c;
if c='.' then writeln;
until c='.';
i:=1; {идем с начала строки}
k:=0;
while i<=length(s) do
if s[i]=' ' then
 begin
  k:=k+1;{считаем пробелы}
  s[i+2]:='.';{после ьуквы за пробелом ставим точку}
  j:=i+3;{встаем за ней и пока не разделитель, удаляем буквы}
  while(j<=length(s))and not(s[j] in [' ',',','.']) do
  delete(s,j,1);
  if odd(k) then i:=i+3{если пробел перед именем, перешагиваем через инициал}
  else{если перед отчеством}
   begin
    delete(s,i,1);{удаляем пробел}
    i:=i+2;{перешагиваем}
   end;
 end
else i:=i+1;{остальное пропускаем}
write(s);
readln
end.
0
Фрилансер
3405 / 2802 / 3000
Регистрация: 08.02.2012
Сообщений: 7,825
Записей в блоге: 1
15.07.2012, 09:34 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Var s,s1,s2:string;
Begin
    write('Введите список студентов (Фамилия Имя Отчество,): ');readln(s);
    While Pos(',',s)<>0 do
     Begin
      s1:=Copy(s,1,Pos(',',s)-1);
      s2:=s2+Copy(s1,1,Pos(' ',s1)-1)+' '+s1[Pos(' ',s1)+1]+'.';
      Delete(s1,1,Pos(' ',s1));Delete(s1,1,Pos(' ',s1));
      s2:=s2+s1[1]+',';
      Delete(s,1,Pos(',',s));
     End;
    s2:=s2+Copy(s,1,Pos(' ',s)-1)+' '+s[Pos(' ',s)+1]+'.';
    Delete(s,1,Pos(' ',s));Delete(s,1,Pos(' ',s));
    s2:=s2+s[1]+'.';
    writeln('Полученный список: ',s2);
    readln;
End.
При условии что всё будет введено как в условие т.е между фамилией именем пробел после отчества запятая
0
Миниатюры
В списке, содержащем фамилии, имена и отчества студентов группы, заменить имена и отчества на инициалы  
Фрилансер
3405 / 2802 / 3000
Регистрация: 08.02.2012
Сообщений: 7,825
Записей в блоге: 1
15.07.2012, 09:40 4
На Free проверил работает
0
0 / 0 / 0
Регистрация: 11.08.2012
Сообщений: 3
27.08.2012, 10:45 5
Puporev, ну дак что у меня может быть с readkey?
0
Фрилансер
3405 / 2802 / 3000
Регистрация: 08.02.2012
Сообщений: 7,825
Записей в блоге: 1
27.08.2012, 10:52 6
Цитата Сообщение от jenya2012 Посмотреть сообщение
Puporev, ну дак что у меня может быть с readkey?
может быть не прописано
Pascal
1
uses crt;
0
Модератор
61613 / 46126 / 31838
Регистрация: 18.05.2008
Сообщений: 111,219
27.08.2012, 11:02 7
Цитата Сообщение от Artem7 Посмотреть сообщение
может быть не прописано
В принципе только это.
0
0 / 0 / 0
Регистрация: 11.08.2012
Сообщений: 3
27.08.2012, 14:11 8
Спасибо
0
Модератор
61613 / 46126 / 31838
Регистрация: 18.05.2008
Сообщений: 111,219
27.08.2012, 14:15 9
И как Вы смотрите код, он же и начинается с
Pascal
1
usrs crt;
0
0 / 0 / 0
Регистрация: 11.08.2012
Сообщений: 3
27.08.2012, 16:29 10
Я просто всегда удаляю uses crt, и удивляюсь, почему не работает.
0
Модератор
61613 / 46126 / 31838
Регистрация: 18.05.2008
Сообщений: 111,219
27.08.2012, 16:33 11
Если в программе будут процедуры для работы с экраном или с клавиатурой, он нужен.
http://www.5byte.ru/tp7pub/0176.php

Добавлено через 1 минуту
При работе в графическом режиме, если нужно отловить события нажатия клавиш вместо него нужно модуль
Pascal
1
uses WinCrt;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2012, 16:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вывести на экран данные фамилии и имена всех людей, у которых фамилии начинаются с 2 буквы, как и ваша фамилия
Необходимо ввести в файл фамилии, имени 6 человек. Вывести на экран данные фамилии и имена всех...

По списку студентов вывести фамилии, имена и отчества юношей
С клавиатуры вводится текст, который представляет собой список студентов группы с указанием...

Вывести фамилии, имена и отчества и средние баллы студентов, не получающих стипендии
1) Вывести фамилии,имена и отчества и средние баллы студентов, не получающих степендию

Вывести фамилии, имена и отчества всех студентов мужского пола, старших 18 лет
вывести фамилии, имена и отчества всех студентов мужского пола, старших 18 лет. Должна...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.