Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2011, 11:00   #1
VKorablev
Форумчанин
 
Аватар для VKorablev
 
Регистрация: 14.04.2011
Сообщений: 126
По умолчанию Обработать список (составить логины по фамилии) (Нужно чужое решение)

сколько существует программистов, столько и мнений, столкнулся с задачей (сначала на ввод подается число N (кол-во учеников) потом список учеников, в формате(<фамилия> <имя>), необходима програма, которая составляет логины для учеников (логином является фамилия ученика, если фамилии повторяются, то программа должна выводить логины (в формате <фамилия>+число(характерезующее какая по счету эта фамилия в списке))), написал программу (см архив), прога работает, но перед первым логином ставит пробел (по причине того что переменная ch по дефолту равна ' '), тупо ради интереса, попробуйте решить задачу без этого бага)))
Вложения
Тип файла: rar C4_2_4.rar (297 байт, 13 просмотров)
Нам больше не нужно смотреть на мир сквозь замочную скважину 64Кб сегмента (с) ВалИк
VKorablev вне форума Ответить с цитированием
Старый 15.04.2011, 11:35   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

формально ответ на Ваш вопрос такой:
Код:
  for i := 1 to n do
  begin
    read(ch);
    while (ch<>' ') and
       (ch<>#10) and (ch<>#13) do begin
      a[i] := a[i] + ch;
      read(ch);
    end;
  end;
Но, АБСОЛЮТНО непонятно -
1) почему вводится до первого пробела?
2) для чего read(s) ?
3) Вы в курсе, что в фамилии попадают символы #10#13 - это нажатия Enter ?
4) почему банально не читать строки через Readln(s) ?!
5) вывод дублирует одни и те же фамилии...
6) кто Вас учил так жутко форматировать код?!

ДОБАВЛЕНО
сколько людей, столько и вариантов решения, говорите?...

Ладно. вот как я вижу решение данной задачи:

Код:
uses crt;

var
  a: array[1..100] of string;
  i, k, c, n: integer;
  s: string;

begin
  clrscr;
  readln(n);
  for i := 1 to n do
    a[i] := '';
  WriteLn;
  for i := 1 to n do
  begin
    Write('Введите ',i,'-ю фамилию: ');
    ReadLn(s);
    if Pos(' ',s)>1
       then a[i] := Copy(s,1,Pos(' ',s)-1)
       else a[i] := s;
  end;
  WriteLn('results:');
  for i := 1 to n do
  begin
    Write(a[i]);
    c := 0;
    for k := 1 to i do begin
      if a[i] = a[k] then
           inc(c);
    end;
    if c > 1 then write(c);
    writeln;
  end;
  readkey;
end.

Последний раз редактировалось Serge_Bliznykov; 15.04.2011 в 11:44.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.04.2011, 12:31   #3
VKorablev
Форумчанин
 
Аватар для VKorablev
 
Регистрация: 14.04.2011
Сообщений: 126
По умолчанию

балгодарствую, просто замкнуло меня на этой задаче ^_^ пардон за тупость местами))
отвечу на ваши вопросы :
1)так как по условию фамилия и имя разделены пробелом
2)s считвается (это имя) фамилия считана, а имя нам не нужно, но я уже понял тут касяк свой
3)не попадают, у меня идет считование переменно типа чар и она присоеденяется к строке до пробела, пробел не присоеденен, далбше считывается имя
4)можно и считать тупо через чтение S, но нам нужна тока фамилия, потом бы серовно пришлось отсеивать имя
5)хм...у меня выводилось все как надо
6)нискажу ;P
Нам больше не нужно смотреть на мир сквозь замочную скважину 64Кб сегмента (с) ВалИк
VKorablev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распечатать фамилии учеников,фамилии которых начинаются на букву В с указанием даты рождения. greenO_o Помощь студентам 0 26.05.2010 22:49
Составить список дисциплин Sabber Microsoft Office Excel 1 19.05.2010 12:41
как составить sql запрос для выборки по имени,фамилии и отчеству betirsolt БД в Delphi 8 12.05.2010 22:44
Помогите с решением, нужно обработать массив stare1983 Microsoft Office Excel 2 25.02.2009 21:06
Составить линейный список, Среда Delphi Kreaman Помощь студентам 1 11.06.2008 19:54