Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 26.05.2014, 16:56   #1 (permalink)
kris_kaif
Member
 
Регистрация: 26.05.2014
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите, пожалуйста, написать программу с символьными данными

Вводится текст в виде списка слов, разделенных запятыми, и заканчивающийся точкой (в слове не более 10 литер, в тексте не более 20 слов). Напишите про-грамму, выводящую упорядоченный в алфавитном порядке перечень слов (без по-вторений) с указанием, сколько раз такое слово встречалось в тексте.
kris_kaif вне форума   Ответить с цитированием

Старый 26.05.2014, 16:56
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 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)
kris_kaif
Member
 
Регистрация: 26.05.2014
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

да, мне нужно было в Pascal! спасибо за помощь, а не подскажите ещё, что мне нужно ввести после того как внизу экрана у меня появляется поле "ввод данных" ?
kris_kaif вне форума   Ответить с цитированием
Старый 27.05.2014, 13:34   #4 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

Вводите строку из слов через запятую, а в конце ставите точку. В условии про пробелы ничего не сказано и их использовать не стоит.
Евгений вне форума   Ответить с цитированием
Старый 27.05.2014, 15:00   #5 (permalink)
kris_kaif
Member
 
Регистрация: 26.05.2014
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

он мне уже в который раз ошибку выдаёт(
Миниатюры
aacuiyiiuedhdhdhdhdh.jpg  
kris_kaif вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 27.05.2014, 15:06   #6 (permalink)
poiu
Member
 
Регистрация: 05.03.2014
Сообщений: 200
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 834
По умолчанию

а это все глючный ABC. вроде ранее советовали изменить описание массива. на что то вроде type Z= array[1..n] of string[10];
poiu вне форума   Ответить с цитированием
Старый 27.05.2014, 15:40   #7 (permalink)
kris_kaif
Member
 
Регистрация: 26.05.2014
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

всё рввно не получается(
kris_kaif вне форума   Ответить с цитированием
Старый 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:01   #9 (permalink)
kris_kaif
Member
 
Регистрация: 26.05.2014
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

всё равно ошибку выдаёт(
kris_kaif вне форума   Ответить с цитированием
Старый 28.05.2014, 12:19   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Евгений Посмотреть сообщение
У меня Free Pascal и всё работает.
Странно. Не должно работать: ошибка видна сразу.
Вот Вы ставите цикл с постусловием:

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 и верещит. Вероятно, а Вас, Женя, эта проверка (выход индекса массива за пределы диапазона) по умолчанию отключена - вот и создается впечатление, что всё тип-топ. Но ошибку отсутствие проверки не снимает. Поправьте, пожалуйста.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 19:07.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.