View Full Version : Програмиране 9ти клас :)
Gabichkaaa
02-07-2011, 11:42
Работим по програмиране на Pascal, но г-жата ни даде задачи, които спадат повече към C++... Идея си нямам как да ги направя...
Например: 1. Дадено е естествено число N (n>=1). Да се напише програма, която намира сумата на тези елементи от серията числа i^3(chisloto 'i' na treta stepen demek) .. серията е i^3 - 3*i*n + n, i=12, ....n, които за кратни на 7...
2. Дадени са ест. числа m и n. Да се напише програма, която намира произведението n(n+m)(n+2m)(n+3m)......(n+m^2).
3. Да се напише програма, която извежда в обратен ред четните ест. числа, по-малки или равни на n. (помощ: с оператора 'down to').
Моля, моля, моля, моля! Имам нужда от помощта ви! :)
Foreverbg
02-07-2011, 13:58
За паскал не мога да ти помогна, мога само да ти обясня алгоритъма.
Работим по програмиране на Pascal, но г-жата ни даде задачи, които спадат повече към C++... Идея си нямам как да ги направя...
Например: 1. Дадено е естествено число N (n>=1). Да се напише програма, която намира сумата на тези елементи от серията числа i^3(chisloto 'i' na treta stepen demek) .. серията е i^3 - 3*i*n + n, i=12, ....n, които за кратни на 7...
2. Дадени са ест. числа m и n. Да се напише програма, която намира произведението n(n+m)(n+2m)(n+3m)......(n+m^2).
3. Да се напише програма, която извежда в обратен ред четните ест. числа, по-малки или равни на n. (помощ: с оператора 'down to').
Моля, моля, моля, моля! Имам нужда от помощта ви! :)
1 задача
program asdf;
var
i,n,sum:=integer;
function SetMemb(a,b: integer): integer;
var
CheckMemb: integer;
begin
SetMemb:=0
CheckMemb:=a*a*a-3*a*b+b;
if (CheckMemb mod 7 = 0) then
SetMemb:=CheckMemb
end;
begin
writeln('Vuvedete chislo n>=1');
write('n=');
readln(n);
while (n<1) do
begin
writeln('Chisloto n trqbva da e po-golqmo ili ravno na 1');
write('n=');
readln(n);
end;
Sum:=0
for i := 1 to n do
begin
Sum:=SetMemb(i,n);
end;
writeln;
write('Sumata=',Sum);
end;
2зад.
program sdfa;
var
P,m,n,i,memb: integer;
begin
writeln('Vuvedete cqlo polojitelno n');
write('n=');
readln(n);
while (n<=0) do
begin
writeln('Chisloto n trqbva da e po-golqmo ot 0');
write('n=');
readln(n);
end;
writeln('Vuvedete cqlo polojitelno m');
write('m=');
readln(m);
while (m<=0) do
begin
writeln('Chisloto m trqbva da e po-golqmo ot 0');
write('m=');
readln(m);
end;
memb:=n;
P:=memb;
for i:=1 to m do
begin
memb:=memb+m;
P:=P*memb;
end;
writeln;
write('Proizvedenieto=',P);
end;
3 задача
program reversing;
var
i,n: integer
begin
writeln('Vuvedete cqlo polojitelno n');
write('n=');
readln(n);
while (n<=0) do
begin
writeln('Chisloto n trqbva da e po-golqmo ot 0');
write('n=');
readln(n);
end;
for i:=n downto 2 do
begin
if (i mod 2 = 0) then
write('i, ');
end;
end;
Не съм ги компилирал, така че сигурно имат синтактични грешки. Ако нещо не тръгват, пиши да ги погледна пак. Ако нещо не разбираш, питай!
Foreverbg
02-07-2011, 17:38
Защо навсякъде въвеждаш числата докато не се въведе отрицателно?
Естествените числа са целите числа, по-големи от 0. А не се сещам как мога да го направя като unsigned int.
Foreverbg
02-07-2011, 18:27
Друго те питах. Исках да кажа, че няма смисъл от тези while, защото се въвежда 1 число, не докато се въведе отрицателно число. И щом в условието е дадено, че се въвеждам естествени числа, значи няма нужда да се прави проверка дали числото е естествено :)
Gabichkaaa
02-07-2011, 18:29
Май им схванах като цяло цаката ама има и по-лесни варианти.. Например на първата не е нужно SetMemb ами направо:
Var n,i,br,lmnt: Integer;
Begin
write('Въведи n: '); read(n);
for i:=1 to n do
begin
lmnt:=i*i*i-3*sqr(i)+n;
if lmnt mod 7 = 0 then br:=br+1;
end;
writeln('Броят е: ',br);
End.
Foreverbg
02-07-2011, 18:33
Не трябва ли да им намериш сумата не броя? Поне горе в условието така пише...
Точно това си ме питал и е дадено в условието, че имаме естествено число, аз просто си осигурявам потребителят наистина да въведе такова. Не е хубаво да се разчита на този зад клавиатурата, защото винаги ще направи някаква каша. Разбира се че става и просто с един указателен текст и едно въвеждане, написал съм го по-сложно за да си налагам дисциплина.
Габичка, ти хубаво ги бройш, ама то се иска от теб да сметнеш сумата на елементите, а не да видиш колко са. Може да я махнеш функцията и да я направиш на променлива във програмата, както при задача 2, аз съм дал 2 варианта. Далеч не мисля, че изчерпвам всички варианти за решаване и ако се сетиш твой собствен -> чудесно за теб, разбрала си задачата и можеш сама да се справиш с нея.
Gabichkaaa
02-07-2011, 18:37
Мдааа... имаш право.. сега ще погледна пак! :) МНОГО БЛАГОДАРЯ И НА ДВАМА ВИ ЗА ПОМОЩТА! Задължена съм ви :-P
Gabichkaaa
02-07-2011, 18:48
Оу Оу.. аз съм ви дава друга задача.... Малко обърках номерацията... Извинявайте.. та за 1вата
Var n,i,br,lmnt,sum: Integer;
Begin
write('Въеди n: '); read(n);
sum:=0;
for i:=1 to n do
begin
lmnt:=i*i*i-3*i*n+n;
if (lmnt mod 2 = 0) and (not lmnt div 2 mod 2 = 0) then sum:=sum+lmnt;
end;
writeln('Сумата е: ',sum);
End.
Да, окай.. всичко е тип-топ.. сега ще погледна всички варианти на задачките... мерси много отново.. Имам още 3 задачки да погледна .. ще ви пиша при затруднение ако ви се занимава :)
Това условие (not lmnt div 2 mod 2 = 0) сигурно ще ти генерира грешка. След not трябва да имаш булева променлива. Какво искаш да провериш, като разделиш на 2 члена на редицата, дали той е четен?
Gabichkaaa
02-07-2011, 18:55
Да... нали това ми е по условие...
Е ти така и не публикува вярното условие, аз останах с впечатлението, че е кратно на 7. Ами махни това not, защо ти е?
Gabichkaaa
02-07-2011, 19:07
Нещо се оплетох .. с mod 2 търсим четно, но нали трябва да е кратно на 7.. демек затова има NOt
a mod b = ostatyka ot delenieto a/b
10 mod 7 = 3
7 mod 7 = 0
a mod 7 = 0 Означава, че числото се дели на 7
a mod 2 = 0 Означава, че числото се дели на 2 или иначе казано - числото е четно
а mod 2 = 1 Означава, че числото не се дели на 2 или иначе казано - числото е нечетно.
Използвай a mod 7 = 0, за да проверяваш кратни ли са на 7
Gabichkaaa
02-07-2011, 19:15
Гррррррр..... сега ще пиша на г-жата... нещо се съмнявам в тая задача....
Gabichkaaa
02-07-2011, 19:28
задачата е сбъркала... тъпа работа..... дала от 2 задачи, една обща.... иначе другите си ги направих с ваша помощ.. много благодаряяяяяяяяяяяяяяяяя яяяяяяяяя :oops: