KMA
Долгожитель
|
В последний раз даю полный код человеку, который даже не пожелал разобраться в задаче, дак вот учти Guest что эту задачу написал даже девятиклассник, угу, даже он... А ты не смог, вот теперь и суди о возрасти и всем остальном... Вот прога: program help; Var s, sWord: string; i, k, o: byte; BEGIN write ('Enter your string->'); readLn (s); s:=s+' ';{советую сюда еще вставить удаление лишних пробелов} i:=0; while i<=length (s) do begin k:=0; while s{i}<>' ' do begin inc (i); k:=k+1; end; {находим позицию слова} sWord:=copy (s, i-k, k)+' '; {записываем его в память} o:=0;{удаляем из всей строки} while pos (sWord, s)<>0 do begin delete (s, pos (sWord, s), length (sWord)); inc (o) end; if o<=1 then begin insert (sWord, s, i-length (sWord)+1); i:=i+1{если было одно то вставляем на прежнее место} end else i:=i-length(sWord)+1; if (s{i}=' ') or (i=0) then inc (i); end; writeLn (s); readLn END. ____ Простите за офф уважаемые, просто не сдержался... Прочитают, потом удалю... From VF: не надо удалять. Вдруг у кого-нибудь возникнет подобный вопрос. (Сообщение отредактировал KMA 18 апр. 2006 23:15) (Сообщение отредактировал KMA 18 апр. 2006 23:16)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 18 апр. 2006 3:20 | IP
|
|
Guest
Новичок
|
KMA Спасибо тебе, по поводу 9класника. Я то понимаю, у тебя мозги лучше моих, а моим в этой задаче ничего не понять. Так уж сделал создатель. Еще раз тебе спасибо.
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 18 апр. 2006 15:27 | IP
|
|
Guest
Новичок
|
"insert (sWord, s, i-length (sWord));" КМА, по моему у тебя сдесь ошибка, он из пес дом делает песдом. Что то неправильно.
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 18 апр. 2006 22:40 | IP
|
|
KMA
Долгожитель
|
Guest, ты бы зарегистрировался, а то может еще пару вопросов возникнет по этому поводу... Честно говоря, когда видишь зарегистрированного человека намного приятнее ему помогать, нежели просто прохожему... По повододу этого песдома, да здесь ошибка, проверял сегодня, просто вчера поздно писал, спать хотел... Хотя это и не оправдание... Однако чего сразу бочку катить??? Писал ведь не в компиляторе, а в этом маленьком миленьком сереньком окошке... Здесь положено очень сильно рассердиться, обидеться, и сказать что делайте сами свои задачи, однако я все же доведу дело до конца, что б не у кого ни сложилось впечатление, что я ни умею их решать, смотри предыдущую задачу, там что исправлено, выделено черным толстым шрифтом (красным не знаю как, можте VF подскажет)... (Сообщение отредактировал KMA 18 апр. 2006 23:19) (Сообщение отредактировал KMA 18 апр. 2006 23:21)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 18 апр. 2006 22:51 | IP
|
|
Guest
Новичок
|
KMA Хорошо, я скоро зарегестрируюсь. Но у меня есть к тебе пара вопросов: 1. Ты правда учишсься в 9 классе? 2. Откуда ты все это знаешь в 9 классе?(Я только с бейсиком тогда работал) 3. И если ты будешь поступать в институт, то на какую специальность. Все.
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 19 апр. 2006 17:21 | IP
|
|
Abror
Удален
|
Здрасте это сново я со свей задачей никак не могу дорешить.Не поможете добить?? program Kursovaya; type group=record mass = array [1..100] of group; surname:string[10]; name:string[10]; year:integer; money:integer; number:string[7]; end; var F:file of group; G:group; i,n:integer; s:string; myMass:mass; begin Assign(F,'C:\TP7\kursovaya.pas'); write('Vvedite chislo sotrudnikov'); readln(n); rewrite(F); For i:=1 to n do begin with G do begin readln(surname); readln(name); readln(year); readln(money); readln(number); end; write(F,G); end; reset(F); i:=1; While not eof (F) do begin read(F,myMass{{i]); i:=i+1; end; reset(F); WHILE NOT EOF (F) do begin read (F,G); IF(G.year>=20) then begin writeln('Staj raboti ne menee 20 let'); writeln(G.surname); writeln(G.name); end. Если что я добавил правильно то как мне вытащить 2 числа из строки и сравнить их?? Со сравнением у меня большие проблемы! И массивы я понимаю с трудом! Я знаю что надо задать 2 цикла правильно??Спасибо
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 19 апр. 2006 17:57 | IP
|
|
KMA
Долгожитель
|
Guest, не потеме ты говоришь, это или в личку, или Свободное общение, здесь задачи решают... Но уж начал отвечать, дак допешу... 1. Да, я учусь в девятом классе; 2. Читаю много, хожу на факультативы, но практически не сплю... 3. Собираюсь поступать на информационные системы и технологии... Так что это моя специальность... Arbor, ты конечно дико крут, я даже никогда бы и не додумался взять так спокойно и назначить файл типа pas... Но ладно, это пол беды... Ну ладно, если начать анализировать с самого начала, то ты получается такой бред несешь, часика через три, когда все поуляжется напишу решения, сейчас времени нет... Но чушь полная...
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 19 апр. 2006 21:01 | IP
|
|
Guest
Новичок
|
var s:string; i,j,m:integer; begin clrscr; write('Stoka->'); read(s); for i:=1 to length(s) do begin m:=0; for j:=i+1 to length(s) do if s{i}=s{j} then inc(m); if m=0 then write(s{{i]); end. КМА, помоги найти ошибку, прога должна выводить 1 раз встречающиеся символы
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 19 апр. 2006 21:03 | IP
|
|
KMA
Долгожитель
|
program Kursovaya; TYPE y=1..100; group=record surname: string[10]; name: string[10]; year: y; money: word; number: string[7]; end; mass = array [1..100] of group; VAR f: file of group; buf: group;{переменная обменник} i, n: integer; s: string; mas: mass; BEGIN Assign(f,'C:\..\kursovaya.kma'); write('Vvedite chislo sotrudnikov'); readln(n); {создаем сотрудников, я так понял} rewrite(F); for i:=1 to n do begin with G do begin readln(surname); readln(name); readln(year); readln(money); readln(number); end; write(F,G); end; {заносим сотрудников в массив} seek (f, 0); While not eof (F) do begin read(F, Mas{i}); inc (i) end; {выводим сотрудников у которых больше стаж работы чем 20 лет} seek (f, 0); while not EoF (f) do begin read (F,G); if (G.year>=20) then writeLn ('Стаж работы более 20 лет:', g.sirname, ' ', g.name) end; END. Только вот мне не понятно ты для чего массив создавал, и для чего в него копировал всех сотрудников, а если их окажется более 100??? Лучше использовать динамический... Вывод чего тебе не понятен, тебе надо по номерам сравнить, скоро напишу... (Сообщение отредактировал KMA 19 апр. 2006 21:21)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 19 апр. 2006 21:19 | IP
|
|
KMA
Долгожитель
|
Guest, регистрируйся наконец... var s:string; st: string [1] i,j:integer; flag: boolean BEGIN clrscr; write('Stoka->'); read(s); for i:=1 to length(s) do begin flag:=false; for j:=i+1 to length(s) do if s{i}=s{j} then begin flag:=true; st:=s{{i]; while pos (st, s) <> 0 do delete (s, pos (st, s), 1) end; if flag then write(st); end; END. Ты просто не удалял все остальные символы, например в строке aaa, тебе бы прога вывела aа. Да и вообще она б ничего не вывела, ты end с begin не забывай ставить сразу пиши, а только потом туда текст... Плюс в конечном выражении, тебе надо было проверять не на равенство m=0, а как раз наоборот, m<>0. Но так как integer тип более большой, то лучше здесь использовать скромный булевый, т. е. это flag.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 19 апр. 2006 21:54 | IP
|
|
|