singlepost

Pascal-решение задач << На главную или назад  

сорь если такая тема уже есть,предлагаю суда выкладывать РАБОТАЮЩИЕ задачи по паскалю чтоб было с чего брать пример
,и не правильные для их решения)

у меня есть вопрос в чем я тут ошибся?

задача- без помощи процедур функций и массивов надо посчитать среднее арифметическое чисел больше 5 и количество чисел меньше 5 введенный с клавы
условие конца цикла это введенное число 0

теость ввожу 2 3 4 60 20 0 – 3 числа меньше 5 ,а арифм больше 5 – 40

выдает ошибку 207
_____________________________

если убрать эти 2 строки
else
if x<5 then f:=f+(x/x);

то среднее арифм считает
______________________________
program tt;
var
x, d, y, f, t:real;
begin
d:=0;
f:=0;
t:=0;
repeat
writeln('введите число');
readln(x);
if x>5 then y:=d+x
else
if x<5 then f:=f+(x/x);
until x=0;
y:=y/2;
writeln('среднее арифметическое чисел >5 =',y:7:2);
writeln('количество чисел меньше 5 – ',f:7:2);
readln;
end.

22 ответов в теме “Pascal-решение задач”

  1. 22
    Александр Сидорович ответил:

    типа каждое слово- строка? а если слов больше 10? да и под термином "слово" понимается всё что не пробел,а каждая строка из массива строк вводиться , через Enter, хотя можно указать и другой Eof. Но всё-таки я думаю, что в задачи имелось ввиду посчитать слова из строки.

  2. 21
    Денис Оболенский ответил:

    а нельзя ли так s[1..10] of string??все нормально работает

  3. 20
    Александр Сидорович ответил:

    #20 скорей всего в задаче имеется ввиду строка

  4. 19
    Денис Оболенский ответил:

    поверю, но у тебя не обьявлен s как массив,

  5. 18
    Александр Сидорович ответил:

    #11 работает, но не рациональное решение

    Program mmm;
    Var
    s,word,f:string;
    x,i,n:Integer;
    Begin
    Writeln('vvedite stroky');
    Readln(s);
    Writeln('vvedite');
    Readln(f);
    x:=0;
    word:='';
    For i:=1 to length(s) do
    Begin
    If s[i]<>' ' then word:=word+s[i];
    If (s[i]=' ') or (i=length(s)) then
    Begin
    For n:=1 to length(word) do
    If word[n]=f then
    Begin
    word:='';
    x:=x+1;
    Break;
    End
    else word:=''
    End;
    End;
    Writeln('kolichestvo ',x);
    End.

    Так лучше)))
    Да, и если кто пробовал сочинять музыку на Pascal или есть примеры музыки, дайте ссылочку плиз

  6. 17
    Дмитрий Моисеев ответил:

    проверю, Игорь

    огромный спасибец! надеюсь, заработает. если чё, подкорректирую

  7. 16
    Павел Воевода ответил:

    Спасибо вам, ребята, теперь все работает. там действительно, основная ошибка была, что стояло Writeln(a[i]) а не writeln(b[i]).
    uses crt;
    var i,i1,k:integer;
    a:string;
    b:array[1..10] of string;
    begin
    clrscr;
    writeln('Введите текст ');
    read(a);
    a:=a+' ';
    i1:=1;
    k:=0;
    repeat
    i:=i+1;
    if copy(a,i,1)=' ' then
    begin
    k:=k+1;
    b[k]:=copy(a,i1,i-i1);
    i1:=i+1;
    end;
    until i>length(a);
    for i:=1 to k do
    writeln(b[i]);
    readkey;
    end.

  8. 15
    Денис Оболенский ответил:

    єтот цикл не зациклится.проверь его у себя.Это касается ввода данных в массив.Там в конце, в цикле от 1 до K есть одна неприятная строчка—
    Writeln(a[i]);
    по сути такое возможно, если бы а была массивом.А это строка.

  9. 14
    Igor Padirin ответил:

    №14 читай внимательней, а, это строка.

    ТС у тебя по идеи идёт зацикливанние,

    "until i1>length(a);" это условие верно почти всегда
    и добавь значение i,k,i1; т.е. обнули их

  10. 13
    Денис Оболенский ответил:

    надо знать принцип занесения в массив переменных
    For i:=1 to 10 do
    begin
    Writeln('ВВедите текст');
    Readln(b[i]);
    end.

  11. 12
    Павел Воевода ответил:

    Писал программу для занесения слов текста в массив. Подскажите, что не так

    uses crt;
    var i,i1,k:integer;
    a:string;
    b:array[1..10] of string;
    begin
    clrscr;
    writeln('Введите текст ');
    read(a);
    a:=a+' ';
    k:=0;
    repeat
    i:=i+1;
    if copy(a,i,1)=' ' then
    begin
    k:=k+1;
    b[k]:=copy(a,i,i-1);
    end;
    i1:=i1+1;
    until i1>length(a);
    for i:=1 to k do
    writeln(a[i]);
    readln;
    end.

  12. 11
    Igor Padirin ответил:

    №11 сделаю наброски

    var i:byte;
    st:string[100];
    ch:char;
    ….
    i:=0;
    k:=-1;
    for j:=1 to n do
    if st[j]=ch then
    begin
    i:=i+1;
    inc(k);
    if st[j+1]=27 then
    sum:=sum+i-k
    end;

    возможно не верный вариант, просто щас не трезв, напиши в ЛС мб помогу.

  13. 10
    Васёк Аристов ответил:

    Найти количество слов содержащих определенный символ.
    Вообще это всё в функции и там есть ещё пара условий, но у меня тупо слова не считает.

  14. 9
    Igor Padirin ответил:

    program tabl;
    uses crt;
    var j:real;
    ch:char;
    begin
    repiat clrscr;
    write('Цена одного билета');
    readln(j);
    writeln('15 | ', j*15:10:3);
    writeln('20 | ', j*20:10:3);
    writeln('25 | ', j*25:10:3);
    writeln('30 | ', j*30:10:3);
    writeln('35 | ', j*35:10:3);

    write ('Закончить программу? y/n')
    read(ch)
    until ch='y';
    end;

    набросал не проверяя, должна работать.

  15. 8
    Дмитрий Моисеев ответил:

    напечатать таблицу стоимостей билетов для классов, состоящих из 10, 15, 20, 25, 30, 35 учеников (стоимость одного билета вводится с клавы)

    кто поможет, тому спасибец !

  16. 7
    Июнь Дынин ответил:

    спасибо большое;)

  17. 6
    Александр Сидорович ответил:

    #6 2ая
    Program xxx;
    Var
    x,y:Real;
    i,b:Integer;
    Begin
    Writeln('Vvedite na4alnoe zna4enie');
    Readln(x);
    Writeln('Vvedite y km');
    Readln(y);
    Writeln('Vvedite b-i den');
    Readln(b);
    i:=1;
    Repeat
    x:=x+y;
    i:=i+1;
    Until x>b;
    Writeln('Kol-vo dnei ',i);
    End.

    PS: Не рациональное решение

  18. 5
    Александр Сидорович ответил:

    #6 1ая

    Program xxx;
    Var
    x,y:Real;
    i,n:Integer;
    Begin
    Writeln('Vvedite na4alnoe zna4enie');
    Readln(x);
    Writeln('Vvedite y km');
    Readln(y);
    Writeln('Vvedite n-i den');
    Readln(n);
    i:=1;
    While i<>n do
    Begin
    x:=x+y;
    i:=i+1;
    End;
    Writeln('Za ',n,' dnei on probeshal ',x:6:1);
    End.

    PS: Не рациональное решение

  19. 4
    Июнь Дынин ответил:

    помогите пожалуйста с двумя задачами
    1ая:
    Каков будет дневной пробег спортсмена на N-ый день, если в 1ый день он пробежал X км, а каждый последующий день увеличивал свой предыдущий рез-т на Y км?
    2ая:
    На какой день дневной пробег спортсмена превысит B км, если в 1ый день он пробежал X км, а каждый последующий день увеличивал свой предыдущий рез-т на Y км?

    с помощью цикла с предусловием(While) формула высчитывающая каждый последующий день ( X:=X+X*Y/100 )

  20. 3
    Aleksss Aleksss ответил:

    В какой области экрана должен рисоваться круг? И, возможно излишний вопрос, но все же – решение задачи необходимо именно на Pascal?

  21. 2
    Алексей Виноградов ответил:

    Помогите написать задачи к экзамену!
    1. Нарисовать круг и чтобы он передвигался влево вниз по диагонали.
    2.С клавы вводятся катеты 2ух прямоуг треугольников, вычислить их площадь (формула S=(a+b)/2) и вывести на экран, площадь какого треугольника больше. (Использовать процедуру для вычисления площади одного треугольника)

  22. 1
    Макс Shatalov ответил:

    все решил.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.