|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
26.05.2014, 16:56 | #1 (permalink) |
Member
Регистрация: 26.05.2014
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите, пожалуйста, написать программу с символьными данными
|
26.05.2014, 16:56 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Предлагаю вам почитать темы, которые по содержанию очень схожи с вашей Помогите, пожалуйста, написать программу Программа с символьными данными |
26.05.2014, 21:28 | #2 (permalink) |
Member
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
|
Так как не написали на чём писать, сделал в Pascal.
const n=20; type Z= array[1..n] of string; var f,f1: Text; s,s1: string; c: char; j,i,t: byte; A: Z; begin Readln(s); Assign(f,'Text_in.txt'); Rewrite(f); Writeln(f,s); Reset(f); s1:=''; t:=1; While not Eof(f) do Readln(f,s); for i:=1 to Length(s) do begin c:= s[i]; if (c<>',') and (c<>'.') then s1:= s1+c else begin A[t]:= s1; Inc(t); s1:=''; if (t>n) then Break; end; end; for i:=1 to n-1 do for j:=1 to n-i do if A[j]>A[j+1] then begin s:= A[j]; A[j]:= A[j+1]; A[j+1]:= s end; Assign(f1,'Text_out.txt'); Rewrite(f1); i:=1;t:=1; repeat if A[i]=A[i+1] then begin Inc(t); Inc(i) end else begin Writeln(f1,A[i],'-',t); t:=1; Inc(i) end; until i>n; Close(f); Close(f1); end. Последний раз редактировалось Евгений; 26.05.2014 в 21:37 |
27.05.2014, 12:32 | #3 (permalink) |
Member
Регистрация: 26.05.2014
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
да, мне нужно было в Pascal! спасибо за помощь, а не подскажите ещё, что мне нужно ввести после того как внизу экрана у меня появляется поле "ввод данных" ?
|
27.05.2014, 13:34 | #4 (permalink) |
Member
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
|
Вводите строку из слов через запятую, а в конце ставите точку. В условии про пробелы ничего не сказано и их использовать не стоит.
|
27.05.2014, 15:00 | #5 (permalink) |
Member
Регистрация: 26.05.2014
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
он мне уже в который раз ошибку выдаёт(
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
27.05.2014, 19:44 | #8 (permalink) |
Member
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
|
У меня Free Pascal и всё работает.
Немрого подправил( на случай если слов меньше 20): const n=20; type Z= array[1..n] of string; var f,f1: Text; s,s1: string; c: char; j,i,t: byte; A: Z; begin Readln(s); Assign(f,'Text_in.txt'); Rewrite(f); Writeln(f,s); Reset(f); s1:=''; t:=1; While not Eof(f) do Readln(f,s); for i:=1 to Length(s) do begin c:= s[i]; if (c<>',') and (c<>'.') then s1:= s1+c else begin A[t]:= s1; Inc(t); s1:=''; if (t>n) then Break; end; end; for i:=1 to n-1 do for j:=1 to n-i do if A[j]>A[j+1] then begin s:= A[j]; A[j]:= A[j+1]; A[j+1]:= s end; Assign(f1,'Text_out.txt'); Rewrite(f1); i:=1;t:=1; s1:=''; repeat if A[i]=s1 then Inc(i) else if A[i]=A[i+1] then begin Inc(t); Inc(i) end else begin Writeln(f1,A[i],'-',t); t:=1; Inc(i) end; until i>n; Close(f); Close(f1); end. |
28.05.2014, 12:19 | #10 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Странно. Не должно работать: ошибка видна сразу.
Вот Вы ставите цикл с постусловием: repeat if A[i]=s1 then Inc(i) else if A[i]=A[i+1] then begin Inc(t); Inc(i) end else begin Writeln(f1,A[i],'-',t); t:=1; Inc(i) end; until i>n; причем в теле цикла мало того, что допускается это самое i>n, так еще и делается обращение к элементу массива A[i+1]! Тут явный выход за границу массива, о чем транслятор у kris_kaif и верещит. Вероятно, а Вас, Женя, эта проверка (выход индекса массива за пределы диапазона) по умолчанию отключена - вот и создается впечатление, что всё тип-топ. Но ошибку отсутствие проверки не снимает. Поправьте, пожалуйста. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|