Народ.Помогите прогрмисту 1 курса.Вот проги не получаються а сдать их надо уже через 2 дня.Помогите чем можете и чем скорей тем лучше.Заранее спасибо. А вот и условие прог: :p2: 1)Задана строка символов.Напечать повторяющийся символ.
2)Задан текс.Выполнить Сортировку по алфавиту слов,имеющих четное количесто букв.
3)Задан текст.Удалить одинаковые слова. :p2: В этих прогах нам запрещенно использовать Функции,Процедуры и Фаелы. Я надеюсь вы сможете помочь мне написать хотяб пару прог.
Digitalator
17.12.2004 23:53
Цитата
В этих прогах нам запрещенно использовать Функции,Процедуры и Фаелы.
Эхх, что за програмистов растят в теперяшних вузах.......
А вообще надо бы написать что за текст (№2, №3), что в нем может быть и чего не может быть, из чего могут состоять слова и т.д. и т.п. - условие явно недостаточное
а первое примерно так:
Код
var s:string; i:byte; m:array[byte] of byte; max:integer; c:char; begin readln(s); for i:=1 to length(s) do inc(m[ord(s[i])]); for i:=1 to 255 do if m[i]>max then begin max:=m[i]; c:=chr(i); end; if max>0 then writeln (c,' ',max) else writeln('Empty string'); end.
Не проверял, не компилировал, может содержать ошибки
В этих прогах нельзя:пользоваться фаелами,функциями процедурами.Желательно использовать такие легкие вещи как if then else, for to do, while do, array в виде массива, ord,odd и т.п. Желательно не использовать меток. в обозначениях можно пользовать константами, использовать для обозначения переменных виды : integer,char,real,boolean.
Digitalator
18.12.2004 0:18
А к чему такие жесткие ограничения? Это препод такой или сам придумал? если сам то почему? если препод, то че это за препод?
И уточни условие 2-й и 3-й задачи.
Santrex
18.12.2004 0:31
Такие жоские условия поставил нам препод.Он сказал что высе остольное по паскалю мы будем изучать во 2 семестре.Университет МИИТ институт ИУИТ и кафедра УВМ бывшая ЭВМ.
По 2 заданию:там надо ввести вручную какой нибудь текст, определить слова имеющие четное количество букв и эти слова с четным количеством букв надо выстроить по алфавиту типа от А до Я или от A до Z смотря на каком языке текст. По 3 заданию:там надо ввести вручную какой нибудь текст и удалить одинаковые слова после чего переписать это предложение без удаленных слов.
Altair
18.12.2004 0:34
Цитата
И уточни условие 2-й и 3-й задачи.
текст задан в виде строки Ты это хотел от него услышать?
Цитата
Это препод такой или сам придумал
Странно, если они знают про это, значитпроходили, а раз нельзя использовать .... хм.. видимоон сам придумал что бы потом смогразобратся в программе...
Digitalator
18.12.2004 0:46
Цитата
текст задан в виде строки
Обойдемся без иронии - условие недостаточное. Из каких символов может состоять слово?(латинские? кирилица? заглавные? прописные?) Чем разделены слова? (пробелы? запятые? еще что? или все сразу? всегда один разделяющий символ? или сколько угодно? или более сложное правило?) Что является концом стоки? (в некоторых подобных задачах единозначно указывается концом символ точки).
Santrex
18.12.2004 0:50
Так: Слова могут состоять как из за главных букв так и из маленьких. Между словами пробел.В конце точка.
Altair
18.12.2004 0:52
Digitalator, мне кажется, что из каких символов может состоять слово без разницы, важно лишь символ разделитель, а конец строки - я думаю что я прав - используется просто строка турбо паса- string... сам посуди, если задание такого уровня, врядли что-то тут особенное...
Santrex
18.12.2004 0:55
Все правильно.Ты верно думаешь.
Digitalator
18.12.2004 2:26
Цитата(Oleg_Z @ 18.12.04 4:52)
Digitalator, мне кажется, что из каких символов может состоять слово без разницы, важно лишь символ разделитель, а конец строки - я думаю что я прав - используется просто строка турбо паса- string... сам посуди, если задание такого уровня, врядли что-то тут особенное...
Задачи бывают разые, вот у нас на первом курсе как-то была подобная задача, так там нужно было еще и отслеживать правильность Расстановки заглавных букв в предложениях.... Мало ли чего там в условии написано - я давно заметил, что очень часто, когда пересказывают условие разные "непрограммисты", так сказать, они опускают "ненужные" на их взгляд детали условия, хотя в этих "ненужностях" и заключен смысл задачи. Потому я уже помешался на абсолютной точности условия
Santrex
18.12.2004 3:23
Народ пока мы будем тут спорить проги испоряться.Мне в понедельник здавать а програмный код хоть мало мальский я не вижу.Выж програмисты высшего класса не то что я.Когда ж вы поможете мне с написание этих прог?
Digitalator
18.12.2004 3:29
Мало-мальский код увидишь во втором посту. А вообще-то несколько подобных задач обсуждалось здесь на форуме, поищи хорошенько - Поиск не для красоты сделан
Santrex
18.12.2004 3:36
Тоесть я надеюсь вы сможете написать код в эти выходные или хотяб пару загатовак или вырезак из других прог.Хотя хотелось бы всю прогу.Вы ж можете написать ее за 15 мин.Если захотите. :no:
Digitalator
18.12.2004 3:40
Я могу написать обе проги за 3 мин и отладить еще за 5 (итого 8 мин максимум). Но мне лень......:orangun: я вообще ленивый....
А вообще за выходные ты и сам можешь написать эти проги. Возьми хорошую книжку, да посиди почитай. Да чуть не забыл тебе напомнить - мы ничем тебе не обязаны, и если кто-то все-таки напишет тебе проги, то только по своей доброй воле... не забудь сказать потом спасибо :molitva:
Santrex
18.12.2004 3:49
Спасибо я скажу полюбому.Но ты говоришь возьми хорошую книгу и почитайю.Я читал ее весь семестр.У меня не получаеться сделать только эти проги.Я по мимо это и делаю другие.Ты не думай что я такой ленивый или тупой я просто не могу с ними справиться.Щас конец семестра и куча проблем ты сам знаешь.Ну а ты щас сидишь дома и смотришь какой нибудь интересный фильм (я надеюся).Ты мог бы оторваться на мин 15 и посмотреть мои проги и тогда я скажу тебе спасибо хоть 10 раз.
Digitalator
18.12.2004 3:55
Не, я фильм несмотрю.... всякая лажа по телеку идет.
Хорошо, а что конкретно не получается? Видишь ли еще у меня 20сокурсников (и 2 сокурсницы - им грех не помочь)и ни один тоже ничего сам сделать не может.... приходиться пары прогуливать чтоб от них голова не болела ....
Вообщем если скажешь что конкретно не знаешь как сджелать, то ладно уж помогу, видишь ли, как я уже сказал - я ленивый, и паскаль устанавливать мне не хочется :no:
Santrex
18.12.2004 4:14
Ладно.Тоды : 1)Как выделить повторяющиеся символы из множества других символов и записать их в массив.(причем символы могут быть любые, так например как знак = и простая буква.) 2)В задачи по сортировки массива по алфавиту я написал что там надо выполнить сортировку только слов имеющих четное колличиство букв.Это как сделать поделить типа каждое слово на 2 (if Slovo mod 2 <> 0 then) типо так?И как потом мне все эти слова четные собрать воедино и выстроить по алфавиту? 3)В задачи на удаление надо удалить одинаковые слова.Но как опредлеить какие слова равны друг другу и как произвести их удаление. Вот пажулый пока все :yes: . Токо реализуй это в программном коде, а не просто на словах.
Digitalator
18.12.2004 4:28
1. Я же написал решение сразу же (смотри второе по счету сообщение)..... что-то не работает?
2. Для начала тебе нужно разбить текст на слова - для этого уточни какой между словами может быть разделитель - я предполагаю что только пробел, правильно?
3. Опять же надо разбить на слова, тот же вопрос.
допустим мы разбили на слова текст и у нас есть массив var words:arrra[1..128] of string каждый э-т которого - одно слово из текста и число var count:byte определяющее к-во слов в массиве теперь по задачам: 2. Как я понял, нужен массив отсортированых слов с четным числом букв. Для этого нам нужно из нашего массива words выбрать все слова с четным числом букв. В паскале есть функция length() определяющая число символов в строке потому мы можем делать так:
Код
ch_count:=0; for i:=1 to count do if length(words[i]) mod 2 = 0 then begin ch_count:=bcount+1; ch_words[chcount]:=words[i]; end;
здесь в ch_count будет к-во нужных слов, а в ch_words (тоже массив) будут сами слова. После этого к массиву ch_woords нужно применить любой алгоритм сортировки и показывать преподу.....
Santrex
18.12.2004 4:33
Да между словаи пробел.
Digitalator
18.12.2004 4:38
3. здесь нужно сравнивать каждое слово с каждым и помечать одинаковые... примерно так
Код
for i:=1 to count-1 do for j:=i+1 to count do if words[i] = words[j] then begin equal_words[i]:=1; equal_words[j]:=1; end;
После этого в массиве equal_words будут стоять единички в ячейках соответствующим одинаковым словам в массиве words. Далее надо собрать остальные слова в новый массив
Код
for i:=1 to count do if equal_words[i]<>1 then begin new_count:=new_count+1; new_words[new_count]:=words[i]; end;
вот.... вопросья?
Digitalator
18.12.2004 4:46
Если между словами всегда один пробел, то разбтвать текст надо примерно так:
Код
count:=1; for i:=1 to length(s) do // s - текст if s[i] = ' ' then count:=count+1 else words[count]:=words[count]+s[i];
Santrex
18.12.2004 17:29
Я пробывал делать как ты сказал но у меня не получаеться.Я уже много раз по разному пробывал делать их.И книги листал.Но что то я упускаю или что.Может всетаки ты напишешь эти проги.
volvo
18.12.2004 18:53
Santrex А можно посмотреть, КАК ты их делал? Раз пытался, значит есть исходники... Может, у тебя ошибка в малом, так мы бы исправили... Чего еще раз писать :p2:
Santrex
18.12.2004 19:25
Это я делал раньше прогу на сортировку. Раншь вроде сортировала.Но токо все слова, а не с четным колличесвтом букв. Я потом пробывал переделать и запарол ее.Тперь она вроде не сортирует совсем.Посмотрите что там можно сделать.И можно ли переделать структуру
Program Zadanie2; USES CRT; VAR A : ARRAY [1..10] OF string; B : ARRAY [1..10] OF INTEGER; I,N,k,l : INTEGER; s : string; BEGIN CLRSCR; WRITE ('N='); READLN (N); WRITELN ('Введите список слов после кадого Enter:'); FOR I:=1 TO N DO READLN (A[I]); WRITELN; FOR I:=1 TO N DO B[I]:=LENGTH(A[I]); FOR I:=1 TO N DO WRITELN ('В слове',A[ I ],' -',B[ I ],'количесвто символов'); k:=0; for i:=1 to n do begin k:=k+1; end; writeln; writeln; writeln ('ђҐ§г«мв в:'); writeln ('Слова с четным koli4estvom bykv = ',k);
if k mod 2 <> 0 then while (l<=(n-1)) do begin for n:=1 to (n-1) do begin if (a[n] > a[n+1]) then begin s:=a[n]; a[n]:=a[n+1]; a[n+1]:=s end; end; writeln ('Отсортированный список:');
for l:=1 to n do write (a[l],' '); REPEAT UNTIL KEYPRESSED end; END.
volvo
18.12.2004 19:55
Santrex Теперь она сортирует по возрастанию все слова с четным количеством букв (между словами может быть более одного пробела)...
Код
var s, T: string; words: array[1 .. 50] of string; count, i, j: byte; begin write('s = '); readln(s); count := 0;
for i := 1 to length(s) do if s[i] = ' ' then begin if (length(words[count]) mod 2 = 0) and (length(words[count]) <> 0) then inc(count) else words[count] := '' end else words[count] := words[count] + s[i];
For i := 1 To count Do For j := count DownTo i+1 Do If words[j - 1] > words[j] Then Begin T := words[j - 1]; words[j - 1] := words[j]; words[j] := T End; For i := 1 to count do write(words[i], ' '); writeln end.
Santrex
18.12.2004 20:40
Спасибо.Прога пашет отлично.Но ты можешь обыяснить что такое значение Bute.
volvo
18.12.2004 20:54
Santrex Не Bute, а Byte... Это маленькие числа (0 - 255)... При работе со строками лучше использовать Byte, т.к. длина строки все равно ограничена - 255 символов. Но можно смело заменить Byte на Integer - все по-прежнему будет работать...
Digitalator
18.12.2004 21:20
volvo, как всегда дал челу прогу, но вот как она работает, я думаю, он так и не понял...
Santrex
18.12.2004 22:19
Почему теперь понял.Но еще надо те 2 проги.
Digitalator
18.12.2004 22:26
Если понял, то сам напишешь. Если не напишешь - значит не понял.
Santrex
18.12.2004 22:33
Я сказал что я понял смысл этой проги.И вообще я что тут на допросе поняли или не понял.Я просто просил написать 3 проги на минимально понятном языке.И все!Вы я смотрю пишите проги всем не знадвая вопросы понял кто там чего или нет.Если вы хотите просто поговорить так скажите.
Digitalator
18.12.2004 22:38
"Мы" - это кто? Я никому проги ТУТ не пишу, смею заметить...
А что непонятного то? Все что нужно я тебе написал, есть какие-то вопросы?
Или можешь подождать пока volvo (или еще кто-нибудь) не принесет тебе все на блюдечке с голубой каемочкой.
Santrex
18.12.2004 22:41
Ну тогда подожду.Что ж мне еще делать.
volvo
19.12.2004 16:40
Santrex По образу и подобию моей первой программы написана вторая (для удаления одинаковых слов):
Код
var s, T: string; words: array[1 .. 50] of string; count, i, j: integer; was: boolean; begin write('s = '); readln(s); count := 1;
for i := 1 to length(s) do if (s[i] = ' ') or (s[i] = '.') then begin was := false; if length(words[count]) <> 0 then for j := 1 to count - 1 do was := was or (words[j] = words[count]);
if (not was) and (length(words[count]) <> 0) then inc(count) else words[count] := '' end else words[count] := words[count] + s[i];
For i := 1 to count do write(words[i], ' '); writeln end.
Santrex
20.12.2004 1:16
Большое спасибо тебе Volvo.Очень признателен за содействие.
Сталкер
10.05.2007 1:14
Для чего нужно T: string в последнем коде?
samec
10.05.2007 9:38
Цитата(Сталкер @ 10.05.2007 1:14)
Для чего нужно T: string в последнем коде?
ни для чего. Можешь спокойно убрать эту переменную.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.