Доброго времени суток ! Условие: дано 2 натуральных числа a и b, притом a<b. Найти их сумму, среднее арифметическое, количество чисел. Использовать нужно цикл Repeat - Until, While - Do. Может кто - то помочь с написанием этой программы в паскале ? Очень нужно. Спасибо заранее.
Айра
22.12.2007 19:16
Цитата
количество чисел
может количество цифр?
Что-нибудь пытался делать? Какие мысли есть? Делись))
Juhn
22.12.2007 22:13
Да да, количество цифр, например если а = 4, б=6, кол-во цифр будет 2, будет считаться при а =4 и при а=5. Так же будет считаться общая сумма и среднее арифметическое этих чисел, тоесть а+б/2. А вот как этот код записать используя данные циклы я не знаю, repeat(далее должны быть все варианты когда а<б)......until(до того пока а не будет =б), я так понимаю, а вот while , do ваше не знаю как испольвзовать, помогите..
compiler
22.12.2007 22:28
Цитата(Juhn @ 22.12.2007 17:13)
а вот while , do ваше не знаю как испольвзовать, помогите..
например для поиска количества цифр...
var i, a:integer; begin readln(a); i:=0; while a<>0 do begin inc(i); a:=a div 10; end; writeln(i); end.
Juhn
23.12.2007 15:36
Для суммы наверное надо считать не в цикле, а отдельно, так же как и ср. арифметическое (а+б/2), в цикле же нужно что бы он посчитать результат, при а и б. Только вначале он должен запросить введите а и б, и затем в зависимости от этих чисел в цикле должен посчитать ответ подставляя каждый раз вместо а на 1 больше, начиная с того числа которые ввели изначально, и до тех пор пока а будет < чем б. А вот после этого цика уже нужно использовать какой - то другой код, для сложения всех етих полученных результатов, тоесть нахождение суммы. Ну и нужен код для вычисления арифметического чисел а и б, как я понимаю тех, которые мы вводили изначально. И потом уже другим наверное кодом, он должен посчитать кол-во цифр, в зависимости какие были а и б, например если а=4, б=6, то кол-во цифр 2, так как он подставлял а=4 и а=5, а=6 это уже а неменьше чем б получается, значит не нужно. Вот что нужно, помогите подалуйста, не знаю как это написать, как я вижу программа не маленького размера должна получиться, так как много чего нужно находить. Но может кому - то не трудно это сделать, а то я не имею представления как её написать :/ Пожалуйста помогите.
compiler
23.12.2007 17:58
честно говоря, первую часть твоего поста я непонял:)
написать то ее не трудно
function sar(const a, b:integer):real; begin sar:=(a + b)/2; end;
function num(var i1, i2:integer):integer; var i:integer; begin i:=0; while i1<>0 do begin inc(i); i1:=i1 div 10; end;
while i2<>0 do begin inc(i); i2:=i2 div 10; end;
num:=i; end;
var a, b:integer; begin repeat write('a-->'); readln(a); write('b-->'); readln(b); until(a<b); writeln('Сумма:', (a+b)); writeln('Среднее арифметическое:', sar(a,b):4); writeln('Количество цифр:', num(a,b)); end.
хорошо разбирись в ней! будут вопросы -- задавай..
Juhn
23.12.2007 18:26
Ну и програмка Проверил, компьютер запрашиывает у меня числа а и б, но после того как я их вввёл, программа закрывается. Как я вижу здесь много раз begin и end, значит несколько циклов, но выполняется только 1, запрос а и б, тоесть вот эта часть: write('a-->'); write('b-->'); Может добавить чего - то нужно ?
compiler
23.12.2007 18:33
добавь, если тебе надо, в конце(перед end.) readln; read; и будет тебе счастье
>>Ну и програмка комментарии нужны?
Juhn
23.12.2007 18:57
Спасибо, теперь всё работает. Ввёл а =2, б=4, посчитал что сумма =6, ср. арифметическое 3, кол-во цифр =2. Но при таких а и б, сумма должна была быть 13 (здесь и работает цикл repeat, until или while, do, так как должны подставлятся все натуральные числа А, которые меньше чем Б, тоесть сначала а =2 - это будет 2+4 =6, а затем а=3, оно ведь тоже меньше чем Б - 3+4 =7, и затем посчитать уже их сумму, тоесть 7+6 =13.) Со средним арифметическим всё правильно, а вот кол-во цифр, это наверное должны быть все цифры которые использовались при сложении, тоесть 2,3,4, значит кол-во цифр =3. Я так думаю, учитель сам толком не знал, когда я ему задал этот вопрос, но если кол-во цифр только изначальное, то в условии уже сказано что их 2, тогда и считать не надо, поэтому думаю надо что бы считались все используемые цифры.
Попробую поправить формулы, если смогу... с такимим кодами я ещё не знаком, а ещё надо описать все эти строки и написать блок схему, но если не найду в интернете описания этих команд, обращусь )) А насчёт блок схем, нет ли какой нибудь программы, что бы она сама блок схему делала ? А то программа большая, сам не знаю как её составить ))
Juhn
23.12.2007 19:37
Где здесь находится формула рассчёта суммы ? Нужно как - то её поправить, что бы складывались все суммы вместе, не знаю как это сделать
Айра
23.12.2007 22:06
Цитата
Но при таких а и б, сумма должна была быть 13 (здесь и работает цикл repeat, until или while, do, так как должны подставлятся все натуральные числа А, которые меньше чем Б, тоесть сначала а =2 - это будет 2+4 =6, а затем а=3, оно ведь тоже меньше чем Б - 3+4 =7, и затем посчитать уже их сумму, тоесть 7+6 =13.)
Хм.. по-моему это отличается от задания, которое ты привел изначально.. Это твоя додумка или задание звучит как-то по-другому?
Juhn
23.12.2007 23:30
Ну это я так сам думаю, так как с таким циклом я не знаком, но если просто сумму чисел а и б, то зачем вообще этот цикл, сумму двух чисел ведь можно посчитать и без циклов, так же как арифметическое и количество цифр. Просто я подумал для чего тогда в условии дано что а меньше чем б, значит цикл должен подставлять все возможные а и считать их, я так думаю... Правда я переводил условие задачи с другого языка, у учителя спрашивал, но он сам толком не знает, вот такие вот задания.. Но если подумать зачем дано что а меньше чем б, и сказано что надо использовать цикл ОТ и ДО... ?
Айра
24.12.2007 3:42
Цитата
Но если подумать зачем дано что а меньше чем б, и сказано что надо использовать цикл ОТ и ДО... ?
наверно вот для этого:
repeat writeln('введите a: '); readln(a); until a>0; repeat writeln('введите b: '); readln(b); until (b>0) and (b>a);
чтобы контролировать правильность ввода a и b..
Juhn
24.12.2007 17:30
Спасибо, понял ;] А как описать строки: function sar(const a, b:integer):real; function num(var i1, i2:integer):integer; inc(i); div
С этими командами я не знаком, а нужно описать каждую строчку. Не подскажите что вот эти строки означают ?
Ozzя
24.12.2007 19:09
function sar(const a, b:integer):real; // описание функции function num(var i1, i2:integer):integer;// описание функции inc(i); // увеличение i на единницу div // целочисленное деление