nashi_lydi Опубликовано 5 апреля, 2010 Жалоба Поделиться Опубликовано 5 апреля, 2010 Здравствуйте! Помогите пожалуйста завершить программу: "Дана строка символов. Подсчитать сколько среди символов данной строки встречается буква x".Вот программа:program lab;uses crt;var s1:string [10]; i,j:integer;begin writeln ('vvedite stroku'); readln (s1); i:=length (s1); for j:=1 to i do If s1[j]='x' then writeln (s1[j]); end.. Заранее благодарен!!! Ссылка на комментарий
Lakers Опубликовано 5 апреля, 2010 Жалоба Поделиться Опубликовано 5 апреля, 2010 program lab;uses crt;var s1:string [10]; i,j,c:integer;begin writeln ('vvedite stroku'); readln (s1); i:=length (s1); c:=0; for j:=1 to i do If s1[j]='x' then inc(c); writeln (c); end. Ссылка на комментарий
TolkienDRR Опубликовано 5 апреля, 2010 Жалоба Поделиться Опубликовано 5 апреля, 2010 ну и сразу для развития:uses crt;var s1 : string; {означает, что длина максимальная длина строки будет 255, а не как ранее было 10} j, c : integer;begin writeln ('vvedite stroku'); readln (s1); {уберем вот это i:=length (s1); потому что можно сразу написать так} for j:=1 to length(s1) do If s1[j]='x' then inc(c); writeln (c);end. в коде убрал еще c:=0; - при инициализации глобальных переменных (т.е. в var основной программы) переменные принимают значения 0. поэтому можно не писать это дважды.а в целом код очень даже нормальный, даже кажется, что человек действительно хочет сделать сам.ЗЫ inc© равнозначно c:=c+1. Ссылка на комментарий
L0K1 Опубликовано 5 апреля, 2010 Жалоба Поделиться Опубликовано 5 апреля, 2010 а в целом код очень даже нормальный, даже кажется, что человек действительно хочет сделать сам.Согласен, удивляют и отступы. Даже поверил в светлое будущее.Мне кажеться, что практичнее было бы:len := length(s1);for j:=1 to len do if s1[j]='x' then inc(c);Так длина s1 будет вычисляться только один раз, или это чисто сишный прикол? Паскаль откровенно говоря подзабыл. Ссылка на комментарий
Lakers Опубликовано 5 апреля, 2010 Жалоба Поделиться Опубликовано 5 апреля, 2010 в паскале также будет вычислять несколько раз Ссылка на комментарий
TolkienDRR Опубликовано 5 апреля, 2010 Жалоба Поделиться Опубликовано 5 апреля, 2010 Ничего подобного, в паскале вычислится 1 раз. В паскале запрещено менять границы цикла for. Так что высчитываться будет 1 раз =) Ссылка на комментарий
L0K1 Опубликовано 5 апреля, 2010 Жалоба Поделиться Опубликовано 5 апреля, 2010 Ничего подобного, в паскале вычислится 1 раз. В паскале запрещено менять границы цикла for. Так что высчитываться будет 1 раз =)Спасибо, запомним. А то сишная параноя на оптимизацию дает знать о себе. Ссылка на комментарий
xucc Опубликовано 6 апреля, 2010 Жалоба Поделиться Опубликовано 6 апреля, 2010 ну и сразу для развития:в коде убрал еще c:=0; - при инициализации глобальных переменных (т.е. в var основной программы) переменные принимают значения 0. поэтому можно не писать это дважды.Не на всех версиях Pascal'я происходнит "обнуление" переменных. Тем более что в процедурах и функциях, такого не происходит вообще, на сколько я знаю Интересно, каково потребление ресурсов при двойной инициализации перменных? Так ли ощутимо? Ссылка на комментарий
TolkienDRR Опубликовано 7 апреля, 2010 Жалоба Поделиться Опубликовано 7 апреля, 2010 Тем более что в процедурах и функциях, такого не происходит вообщепри инициализации глобальных переменныхна каком это паскале не происходит обнуление глобальных переменных? можно сцыль? Ссылка на комментарий
xucc Опубликовано 7 апреля, 2010 Жалоба Поделиться Опубликовано 7 апреля, 2010 Вот же ж блин! Про глобальные - пардон, а ведь действительно даже в TurboPascal 1.0 глобальные перменные обнуляются. Во всяком случае, переменные типа integer. Хм... но я же стопудово помню, как наши любимые преподаватели (один, не все) предупреждали, что такое происходит только с шестой версии турбопаскаля.Виноват. Ссылка на комментарий
TolkienDRR Опубликовано 7 апреля, 2010 Жалоба Поделиться Опубликовано 7 апреля, 2010 xucc=) вот и я кажись помнил, что всегда обнулялись при выделении памяти =)а так, ничего страшного, со всеми бывает =) Ссылка на комментарий
Polkan Опубликовано 7 апреля, 2010 Жалоба Поделиться Опубликовано 7 апреля, 2010 nashi_lydiв ЦИТЕ учишься? <_< Ссылка на комментарий
nashi_lydi Опубликовано 7 апреля, 2010 Автор Жалоба Поделиться Опубликовано 7 апреля, 2010 Polkan в ВСГТУ Ссылка на комментарий
TolkienDRR Опубликовано 7 апреля, 2010 Жалоба Поделиться Опубликовано 7 апреля, 2010 nashi_lydi, статист чтоль? о_О только сча понял, нет же паскаля уже у спец-тей ЭВС, МОАИС и ПОВТАС =) Ссылка на комментарий
Go-ger Опубликовано 13 апреля, 2010 Жалоба Поделиться Опубликовано 13 апреля, 2010 Помогите кто-нибудь составить программу, на тему: Обработка строк.Вот текст задачи: Дан текст длиной 10 символов. Слова текста разделены пробелом. Сформировать новый текст, включив в него слова заданного и разделив их двумя пробелами.Зарание спасибо. Ссылка на комментарий
Sheleh Опубликовано 13 апреля, 2010 Жалоба Поделиться Опубликовано 13 апреля, 2010 program lab;uses crt;var s1,s2:string; i:integer;begin clrscr; writeln('vvedite stroku'); readln(s1); for i:=1 to length(s1) do //начинаем цикл от первого символа до конца строки begin s2:=s2+s1[i]; //добавляем текущий символ в новую строку If s1[i]=' ' then s2:=s2+' '; //Если текущий смвол равен пробелу, добавляем сверху ышо один end; writeln(s2);end. Ссылка на комментарий
Go-ger Опубликовано 13 апреля, 2010 Жалоба Поделиться Опубликовано 13 апреля, 2010 Спасибо, всё ясно и понятно Ссылка на комментарий
shaman4eg Опубликовано 17 апреля, 2010 Жалоба Поделиться Опубликовано 17 апреля, 2010 Помогите пожалйста! Нужно найти одинаковый элемент в двух разных массивах и индексы должны быть одинаковы. Плиизfor i:=1 to n dofor j:=1 to n doif a[i]=b[j] to then do begin g:=g+1; h:=h-1;end;for i:=1 to n dofor j:=1 to n dowriteln('вывод',a[i],b[j], g, h );end.Добавлено спустя 1 минуту 15 секунд:А что в паскале a=b[j] не проканает? а как записать? Ссылка на комментарий
JSTQ Опубликовано 17 апреля, 2010 Жалоба Поделиться Опубликовано 17 апреля, 2010 for i:=1 to n doif (a[i]=b[i]) thenbegin inc(g); dec(h);end;? Ссылка на комментарий
shaman4eg Опубликовано 17 апреля, 2010 Жалоба Поделиться Опубликовано 17 апреля, 2010 Кароче вот условие: "Коровы и быки". Программа выбирает с помощью датчика случайных чисел четырехзначное число с разными цифрами. Угадать это число. На каждом шаге играющий называет четырехзначное число, а программа сообщает, сколько цифр числа угадано ("быки") и сколько цифр угадано и стоит на нужном месте ("коровы"). Например, если программой задано число 1294, а играющий назвал 1423, он получит ответ: "1 корова, 3 быка".Думаю надо использовать такой метод)program igor;uses crt;const n=3;var a:array[1..n] of integer;b:array[1..n] of integer; i,g,z,h,j:integer;beginclrscr;randomize;for i:=1 to n doa[i]:=random(100);writeln('Введите 4 число');for j:=1 to n doread(b[j]);beginh:=4;g:=0;for i:=1 to n dofor j:=1 to n doif a[i]=b[j] to then do begin g:=g+1; h:=h-1;end;for i:=1 to n dofor j:=1 to n dowriteln('вывод',a[i],b[j], g, h );end. Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти