сорь если такая тема уже есть,предлагаю суда выкладывать РАБОТАЮЩИЕ задачи по паскалю чтоб было с чего брать пример
,и не правильные для их решения)
у меня есть вопрос в чем я тут ошибся?
задача- без помощи процедур функций и массивов надо посчитать среднее арифметическое чисел больше 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.
27 марта 2010 в 18:03
типа каждое слово- строка? а если слов больше 10? да и под термином "слово" понимается всё что не пробел,а каждая строка из массива строк вводиться , через Enter, хотя можно указать и другой Eof. Но всё-таки я думаю, что в задачи имелось ввиду посчитать слова из строки.
27 марта 2010 в 17:03
а нельзя ли так s[1..10] of string??все нормально работает
27 марта 2010 в 16:03
#20 скорей всего в задаче имеется ввиду строка
27 марта 2010 в 16:01
поверю, но у тебя не обьявлен s как массив,
27 марта 2010 в 15:03
#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 или есть примеры музыки, дайте ссылочку плиз
24 марта 2010 в 20:03
проверю, Игорь
огромный спасибец! надеюсь, заработает. если чё, подкорректирую
23 марта 2010 в 21:00
Спасибо вам, ребята, теперь все работает. там действительно, основная ошибка была, что стояло 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.
23 марта 2010 в 16:04
єтот цикл не зациклится.проверь его у себя.Это касается ввода данных в массив.Там в конце, в цикле от 1 до K есть одна неприятная строчка—
Writeln(a[i]);
по сути такое возможно, если бы а была массивом.А это строка.
23 марта 2010 в 16:03
№14 читай внимательней, а, это строка.
ТС у тебя по идеи идёт зацикливанние,
"until i1>length(a);" это условие верно почти всегда
и добавь значение i,k,i1; т.е. обнули их
23 марта 2010 в 13:05
надо знать принцип занесения в массив переменных
For i:=1 to 10 do
begin
Writeln('ВВедите текст');
Readln(b[i]);
end.
23 марта 2010 в 13:01
Писал программу для занесения слов текста в массив. Подскажите, что не так
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.
22 марта 2010 в 22:05
№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;
возможно не верный вариант, просто щас не трезв, напиши в ЛС мб помогу.
22 марта 2010 в 22:02
Найти количество слов содержащих определенный символ.
Вообще это всё в функции и там есть ещё пара условий, но у меня тупо слова не считает.
22 марта 2010 в 21:05
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;
набросал не проверяя, должна работать.
22 марта 2010 в 17:00
напечатать таблицу стоимостей билетов для классов, состоящих из 10, 15, 20, 25, 30, 35 учеников (стоимость одного билета вводится с клавы)
кто поможет, тому спасибец !
15 марта 2010 в 20:01
спасибо большое;)
15 марта 2010 в 19:03
#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: Не рациональное решение
15 марта 2010 в 19:01
#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: Не рациональное решение
15 марта 2010 в 18:03
помогите пожалуйста с двумя задачами
1ая:
Каков будет дневной пробег спортсмена на N-ый день, если в 1ый день он пробежал X км, а каждый последующий день увеличивал свой предыдущий рез-т на Y км?
2ая:
На какой день дневной пробег спортсмена превысит B км, если в 1ый день он пробежал X км, а каждый последующий день увеличивал свой предыдущий рез-т на Y км?
с помощью цикла с предусловием(While) формула высчитывающая каждый последующий день ( X:=X+X*Y/100 )
7 февраля 2010 в 14:01
В какой области экрана должен рисоваться круг? И, возможно излишний вопрос, но все же – решение задачи необходимо именно на Pascal?
6 февраля 2010 в 18:04
Помогите написать задачи к экзамену!
1. Нарисовать круг и чтобы он передвигался влево вниз по диагонали.
2.С клавы вводятся катеты 2ух прямоуг треугольников, вычислить их площадь (формула S=(a+b)/2) и вывести на экран, площадь какого треугольника больше. (Использовать процедуру для вычисления площади одного треугольника)
29 января 2010 в 23:05
все решил.