sensato Опубликовано 17 марта, 2007 Жалоба Поделиться Опубликовано 17 марта, 2007 Приветствие! Нужна срочная помощь! Имеется код программы на Паскаль, которая должна делать следующее: Запрос предложения из произвольного количества слов. Вывод информации о номере самого длинного слова в предложении, и количестве символов в нём Однако, результатом выполнения данного кода является вот что: вывод на экран сообщения с номером самого длинного слова (всегда 2) и длина самого длинного слова (подсчитываются буквы только в первом и втором словах, остальные просто не воспринимает). Например Ввод: "Длинное самое слово." Вывод: "Nomer samogo dlinnogo slova 2, ego dlina 7. Нужно заставить программу работать правильно и убрать, по возможности, GOTO. PROGRAM Prim_15b; LABEL 10; VAR t:string; p,n,s,max,k:integer; BEGIN WRITE('Vvedite predlogenie ');READLN(t); s:=0; k:=1; N:=LENGTH(t); p:=POS(' ',t); max:=p-1; 10: DELETE(t,1,p); n:=LENGTH(t); s:=s+p; IF s<n Then BEGIN P:=POS(' ',t); If p-1>max THEN max:=p-1; BEGIN k:=k+1; GOTO 10 END; END ELSE WRITE('Nomer samogo dlinnogo slova ',k,',','ego dlina ',max); readln; END. Ссылка на комментарий Поделиться на другие сайты Поделиться
Maikl Korleone Опубликовано 17 марта, 2007 Жалоба Поделиться Опубликовано 17 марта, 2007 К сожалению нет под рукой компилятора паскаля, но все же вот: PROGRAM Prim_15b;LABEL 10;VARt:string; p,n,s,max,k:integer;BEGINWRITE('Vvedite predlogenie ');READLN(t);k:=0;max:=0;repeat k:=k+1; p:=POS(' ',t); if max<p-1 then max=p-1; DELETE(t,1,p); until p=0;if max!=0 then WRITE('Nomer samogo dlinnogo slova ',k,',','ego dlina ',max)else writeln('В строке нет слов');readln;END. Ссылка на комментарий Поделиться на другие сайты Поделиться
sensato Опубликовано 18 марта, 2007 Автор Жалоба Поделиться Опубликовано 18 марта, 2007 Спасибо, только твой код определят так: если слово только одно, то выводится информация о нём, если их больше одного, то выводится месага "Нет слов" :) Ссылка на комментарий Поделиться на другие сайты Поделиться
MyName Опубликовано 18 марта, 2007 Жалоба Поделиться Опубликовано 18 марта, 2007 попробуй это, массив всех слов можешь не использовать, сделай одну переменную, кот. хранит адрес самого длинного слова: { nsimvola - nomer simvola v neredaktiruemom predlozhenii, } { p - posiciya v redaktiruemom predlozhenii t2 } type TSlov = record Adr: word; Len: word; end; var t, t2: string; Slova: array [1..1024] of TSlov; nslova, nmaxslova: word; maxlen, nsimvola: word; p: word; begin writeln; writeln('Vvedite predlozhenie:'); readln(t); if t='' then begin writeln('Dik vi nih..a ne vveli ;('); exit; end; t2:=t; nslova:=0; nsimvola:=1; maxlen:=0; nmaxslova:=0; repeat p:=pos(' ',t2); if p>0 then if p=1 then begin NSimvola:=NSimvola+1; {nomer sleduuschego simvola v predlozhenii} writeln('Naiden probel v nachale predlozheniya'); delete(t2,1,1); {udalyaem probel v nachale predlozheniya} end else begin { = if p>1 then} inc(nslova); slova[nslova].adr:=nsimvola; slova[nslova].len:=p-1; writeln('Naiden probel posle slova. Nsimvola = ',Nsimvola,' pos = ',p); if maxlen<p-1 then begin maxlen:=p-1; nmaxslova:=nslova; end; nsimvola:=nsimvola+p; {nomer simvola sleduuschego vozmozhnogo slova} delete(t2,1,p); end; until (p=0) and (nsimvola>=length(t)); writeln('Konchilis'' probeli v predlozhenii.'); if (p=0) and (nslova>0) then if (t2<>'') then begin { = if p>1 then} inc(nslova); slova[nslova].adr:=nsimvola; slova[nslova].len:=length(t2); writeln('Poslednee slovo: Nsimvola = ',Nsimvola,' length = ',length(t2)); if maxlen<length(t2) then begin maxlen:=length(t2); nmaxslova:=nslova; end; end else begin writeln('Vsego slov ',nslova); writeln('Nomer samogo dlinnogo slova = ',nmaxslova); writeln('Ego dlina = ',maxlen); writeln('Eto slovo "',copy(t,slova[nmaxslova].adr,maxlen),'".'); writeln; writeln('Press enter.'); readln; end; end. Ссылка на комментарий Поделиться на другие сайты Поделиться
MyName Опубликовано 18 марта, 2007 Жалоба Поделиться Опубликовано 18 марта, 2007 мля а вот с пробелами ) { nsimvola - nomer simvola v neredaktiruemom predlozhenii, }{ p - posiciya v redaktiruemom predlozhenii t2 }type TSlov = recordAdr: word;Len: word; end;var t, t2: string; Slova: array [1..1024] of TSlov; nslova, nmaxslova: word; maxlen, nsimvola: word; p: word;begin writeln; writeln('Vvedite predlozhenie:'); readln(t); if t='' then begin writeln('Dik vi nih..a ne vveli;('); exit; end; t2:=t; nslova:=0; nsimvola:=1; maxlen:=0; nmaxslova:=0; repeatp:=pos(' ',t2);if p>0 then if p=1 then begin NSimvola:=NSimvola+1; {nomer sleduuschego simvola v predlozhenii} writeln('Naiden probel v nachale predlozheniya'); delete(t2,1,1); {udalyaem probel v nachale predlozheniya} end else begin { = if p>1 then} inc(nslova); slova[nslova].adr:=nsimvola; slova[nslova].len:=p-1; writeln('Naiden probel posle slova. Nsimvola = ',Nsimvola,' pos = ',p); if maxlen<p-1 then begin maxlen:=p-1; nmaxslova:=nslova; end; nsimvola:=nsimvola+p; {nomer simvola sleduuschego vozmozhnogo slova} delete(t2,1,p); end; until (p=0) and (nsimvola>=length(t)); writeln('Konchilis'' probeli v predlozhenii.'); if (p=0) and (nslova>0) thenif (t2<>'') then begin { = if p>1 then} inc(nslova); slova[nslova].adr:=nsimvola; slova[nslova].len:=length(t2); writeln('Poslednee slovo: Nsimvola = ',Nsimvola,' length = ',length(t2)); if maxlen<length(t2) then begin maxlen:=length(t2); nmaxslova:=nslova; end; endelse begin writeln('Vsego slov ',nslova); writeln('Nomer samogo dlinnogo slova = ',nmaxslova); writeln('Ego dlina = ',maxlen); writeln('Eto slovo "',copy(t,slova[nmaxslova].adr,maxlen),'".'); writeln; writeln('Press enter.'); readln; end;end. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 18 марта, 2007 Жалоба Поделиться Опубликовано 18 марта, 2007 sensato: program Prim_15b;var t:string; i,k,m,kt,mt:integer;beginWriteLn('Vvedite predlogenie ');ReadLn(t);k:=0; m:=0; kt:=0; mt:=0; t:=t+' ';for i:=1 to Length(t) doif t[i]>='0' then mt:=mt+1 else if mt<>0 then begin kt:=kt+1;if mt>m then begin m:=mt;k:=kt end; mt:=0 end;WriteLn('Nomer samogo dlinnogo slova ',k,',','ego dlina ',m);readln;end. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти