Убедительная просьба ко всем, кто выкладывает исходники: 1. Обязательно пользуйтесь тэгом code (иначе очень трудно читать)
2. Старайтесь делать отступы
Если вы хотите чтобы вам помогли в написании программы, внятно излагайте задание!
Прежде чем задать вопрос, воспользуйтесь учебником
Возможно, что нужная вам программа уже написана, поэтому советую просмотреть список здесь и здесь Отредактировано куратором: Lord_of_Darkness. Дата: 07.07.2006 19:36
у меня вопрос - почему в turbo delphi (Borland® Delphi® for Microsoft® Windows)
при использовании "randomize", счетный цикл "for .. to .. do" считает в обратном порядке?
Есть задачка: Найти сумму всех цифр, входящих в заданную строку.
написал код:
Код:
Program probel123; uses crt; Var s,c,pus: string; k,n,x,b,sum:integer; begin clrscr; sum:=0; pus:='';
read (s);
for n:=1 to length(s) do begin if (ord(s[n])>=48) and (ord(s[n])<=58) then begin pus:=pus+s[n]; end;
for k:=1 to 3 do begin c:=copy(pus,k,1); val(c,x,b); sum:=sum+x; end write(sum); readkey end.
вообщем проблема в выполнении оператора val - в цикле, так как именно в цикле он выводит непонятные значения и причем их больше чем проходов по циклу так вот
уже весь день убил на решение проблемы думал сам справлюсь но не получилось помогите в заранее очень благодарен!!!
Выброс цифр в отдельную строку и второй цикл вообще-то излишни. Можно сразу суммировать, не забывая отнять 48 от кода цифры.
P.S. Никто не мешает пройти программу в пошаговом режиме.
да мне как-бы по задания надо именно через процедуру val сделать, НО большое спасибо за подсказку альтернативного способа, теперь буду стараться мыслить более творчески! Попробую сдать отчет таким способом посмотрим что скажет преподователь.
SKY-LOST Ну и попутно по поводу кода несколько комментариев:
1. Внимательно относитесь к операторным скобкам begin end и синтаксису.
2. Во втором цикле странно видеть константу в качестве граничного значения (3).
SKY-LOST Ну и попутно по поводу кода несколько комментариев: 1. Внимательно относитесь к операторным скобкам begin end и синтаксису. 2. Во втором цикле странно видеть константу в качестве граничного значения (3).
да это я пытался выявить что же всетаки происходит поэтому поставил там 3 и решил вводить три значения) ну вот такими вот "махинациями" и выводом разных переменных я пришел к тому что оператор val выводит непонятно что
я пришел к тому что оператор val выводит непонятно что
Вообще-то при нормальной расстановке операторных скобок begin end и установке в качестве конечного значения второго цикла длины строки pus никаких проблем с процедурой val нет, результат получается правильным .
я пришел к тому что оператор val выводит непонятно что
Вообще-то при нормальной расстановке операторных скобок begin end и установке в качестве конечного значения второго цикла длины строки pus никаких проблем с процедурой val нет, результат получается правильным .
огромное спасибо вам за помощь!!!
Я так и не понял как быть с операторными скобками
Не закрыта операторная скобка в первом цикле - пустая строка в вашем примере .
А во втором цикле после end точку с запятой желательно поставить бы .
Хотя возможно это ошибки копирования при написании поста, при таких ошибках програма не будет компилироваться .
Не закрыта операторная скобка в первом цикле - пустая строка в вашем примере . А во втором цикле после end точку с запятой желательно поставить бы . Хотя возможно это ошибки копирования при написании поста, при таких ошибках програма не будет компилироваться .
maco спасибо вам огромное!!!
вся проблема в случае с процедурой val была вызвана какраз незакрытой операторной скобкой в первом цикле.
Member
Статус: Не в сети Регистрация: 13.06.2007 Откуда: UK/Glasgow Фото: 0
Привет всем!
Нам задали на дом сделать рисунок в Паскале.
Хотел спросить, можно ли делать градиентные заливки в Паскале? Добавлено спустя 3 часа, 55 минут, 7 секунд И можно ли сделать прямоугльник с закруглёнными углами?
Здравствуйте! Нужно помощь. В заранее очень благодарен!
задача такая:
Цитата:
2. Сформировать массив А из 12 целых чисел с клавиатуры, вывести его на экран по 3 элемента в строке. Получить массив В, в котором будут расположены сначала четные числа из массива А, а затем – нечетные.
написал код:
Код:
program LABA_10; uses crt; const n=12; var mas,masB,masP:array [1..n] of integer; i,j:integer; e:boolean; begin clrscr; writeln ('vvod massiva: '); for i:=1 to n do begin read (mas[i]); end; writeln; for i:=1 to n do begin if (i=3) or (i=6) or (i=9) then writeln (mas[i]:3) else write (mas[i]:3); end; writeln; readkey end.
формирует массив и выводит его по три элемента в строке... а вот как получить массив В, в котором будут расположены сначала четные числа из массива А, а затем – нечетные, я не как не могу додуматься!
вот одна из попыток:
Код:
program LABA_10; uses crt; const n=12; var mas,masB,masP:array [1..n] of integer; i,j:integer; e:boolean; begin clrscr; writeln ('vvod massiva: '); for i:=1 to n do begin read (mas[i]); end; writeln; for i:=1 to n do begin if (i=3) or (i=6) or (i=9) then writeln (mas[i]:3) else write (mas[i]:3); end; writeln;
for i:=1 to n do masP[i]:=mas[i];
for i:=1 to n do begin e:=odd(masp[i]); if e=false then begin for j:=1 to n do masB[j]:=masP[i]; end; end; for i:=1 to n do begin if (i=3) or (i=6) or (i=9) then writeln (masB[i]:3) else write (masB[i]:3); end;
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
SKY-LOST все намного проще. Приведу только ключевые куски кода
Код:
// вывод по 3 элемента for i:=1 to n do begin write(A[i],' '); if (i mod 3) = 0 then writeln; end;
// формирование массива B k := 1; for i:= 1 to n do if (A[i] mod 2) = 0 then // копируем четные элементы в начало массива begin B[k] := A[i]; inc(k); end;
for i:= 1 to n do if (A[i] mod 2) <> 0 then // остальную часть заполняем нечетными begin B[k] := A[i]; inc(k); end;
ну или, поскольку условия копирования не уточняются, можно ввести второй счетчик m и за один проход цикла разобрать весь массив, перенося четный элемент массива A в k-ю ячейку массива B, а нечетный - в m-ю. Тогда, изначально k := 1, а m := n и после каждого срабатывания воответствующего условия k увеличивать на 1, а m уменьшать.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Lord_of_Darkness как ты и сказал действительно просто...
дело в том что я не знал такой оператор inc и все маялся как же сделать так чтобы вторая переменная в цикле не изменялась на еденицу когда условие не выполняется
спасибо огромное Lord_of_Darkness сейчас соберу полностью программу...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения