Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите пожалуйста написать прогу

Автор: Juhn 22.12.2007 17:52

Доброго времени суток !
Условие: дано 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

Ну и програмка blink.gif
Проверил, компьютер запрашиывает у меня числа а и б, но после того как я их вввёл, программа закрывается. Как я вижу здесь много раз begin и end, значит несколько циклов, но выполняется только 1, запрос а и б, тоесть вот эта часть:
write('a-->');
write('b-->');
Может добавить чего - то нужно ? smile.gif

Автор: compiler 23.12.2007 18:33

добавь, если тебе надо, в конце(перед end.) readln; read; и будет тебе счастье smile.gif

>>Ну и програмка
комментарии нужны?

Автор: 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

С этими командами я не знаком, а нужно описать каждую строчку. Не подскажите что вот эти строки означают ? smile.gif


Автор: Ozzя 24.12.2007 19:09

function sar(const a, b:integer):real;    // описание функции
function num(var i1, i2:integer):integer;// описание функции
inc(i); // увеличение i на единницу
div // целочисленное деление

Автор: Juhn 24.12.2007 19:52

Спасиб ;]

Автор: Juhn 25.12.2007 0:27

[img]http://816.sytes.net/bitbucket/_jg_gj_g_1198517129.jpg[/img]

Проверте пожалуйста, правильно ли я сделал блок схему для этой программы ? Если что поправте smile.gif