До экзамена 1 день... Горю. Плиз, хелп!
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
Ребят, кому не сложно, есть 3 задачи, с решением. но решение с ошибками... Не знаю, что делать. Остался день до экзамена. Выручайте. 288-180-481. Постучите плиз!
Это надо прежде всего тебе, поэтому выкладывай условия задач и сам код.
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
задача198. Даны натуральные числа n, b0...,bn. Вычислить f(b0)+f(b1)+...+f(bn), где
f(x)= 1) x в квадрате, если x кратно 3; 2) x, если х при делении на 3 дает остаток 1; 3) x/3 в остальных случаях.
program N198;
const max=100;
type matr=array [1..max] of integer;
var
mas,f:matr;
begin
write('Vvedite n');
readln(b);
end;
s:=0;
for i:=0 to n do begin
if(masmod3)=0 then begin
f:=mas*mas
else
if(masmod3)=1 then f:=mas
else
f:=mas div3;
writeln(f[i]);
for i:=1 to n do
s:=s+f[i];
writeln(s);
end;
end.
f(x)= 1) x в квадрате, если x кратно 3; 2) x, если х при делении на 3 дает остаток 1; 3) x/3 в остальных случаях.
program N198;
const max=100;
type matr=array [1..max] of integer;
var
mas,f:matr;
begin
write('Vvedite n');
readln(b);
end;
s:=0;
for i:=0 to n do begin
if(masmod3)=0 then begin
f:=mas*mas
else
if(masmod3)=1 then f:=mas
else
f:=mas div3;
writeln(f[i]);
for i:=1 to n do
s:=s+f[i];
writeln(s);
end;
end.
Кто вас код так учит писать?
Это если в задачи под x/3 подразумевалось целая часть.
Код: Выделить всё
var a,f : array[0..100] of longint;
i,s,n : longint;
procedure input;
begin
readln(n);
for i := 0 to n do
read(a[i]);
end;
procedure done;
begin
s := 0;
for i:=0 to n do
begin
if a[i] mod 3=0
then f[i] := sqr(a[i])
else
if a[i] mod 3=1
then f[i] := a[i]
else f[i] := a[i] div 3;
inc(s,f[i]);
end;
end;
procedure output;
begin
writeln(s);
end;
begin
input;
done;
output;
end.
Вот вариант с одним массивом:
[syntax='delphi']
program N198;
const max=50;
type matr=array [1..max] of integer;
var
mas:matr;
s:integer;
i:integer;
begin
{----секция заполнения-------}
{ можно заменить на
for i:=1 to max do
readln(mas);
}
randomize;
writeln('SrcData');
for i:=1 to max do
begin
mas:=random(50);
write(mas,' ');
end;
{-------секция заполнения------}
writeln;
writeln('Result'); {можно убрать}
s:=0;
for i:=1 to max do
begin
case (mas mod 3) of
0:mas:=sqr(mas);
1:mas:=mas;
else mas:=mas div 3;
end;{case}
write(mas[i],' '); {можно убрать}
end;
writeln;
for i:=1 to max do
s:=s+mas[i];
writeln('Sum ',s);
readln;
end.
[/syntax]
[syntax='delphi']
program N198;
const max=50;
type matr=array [1..max] of integer;
var
mas:matr;
s:integer;
i:integer;
begin
{----секция заполнения-------}
{ можно заменить на
for i:=1 to max do
readln(mas);
}
randomize;
writeln('SrcData');
for i:=1 to max do
begin
mas:=random(50);
write(mas,' ');
end;
{-------секция заполнения------}
writeln;
writeln('Result'); {можно убрать}
s:=0;
for i:=1 to max do
begin
case (mas mod 3) of
0:mas:=sqr(mas);
1:mas:=mas;
else mas:=mas div 3;
end;{case}
write(mas[i],' '); {можно убрать}
end;
writeln;
for i:=1 to max do
s:=s+mas[i];
writeln('Sum ',s);
readln;
end.
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Вариант без массива :
Код: Выделить всё
var
i,s,n,x : longint;
procedure done;
begin
readln(n);
s := 0;
for i := 0 to n do
begin
read(x);
case x mod 3 of
0: s := s + x*x;
1: s := s + x;
2: s := s + x div 3;
end;
end;
writeln(s);
end;
begin
done;
end.
Большое спасибо! Вот задача 2.
Дана деийствительная матрица размера n*18. найти значение наибольшего по модулю элемента матрицы, а так же индексы какого нибудь элемента с найденным значением модуля. (При решении использовать процедуры)
Помогите пожалуйста.
Дана деийствительная матрица размера n*18. найти значение наибольшего по модулю элемента матрицы, а так же индексы какого нибудь элемента с найденным значением модуля. (При решении использовать процедуры)
Помогите пожалуйста.
Можно примерно так:
[syntax='delphi']
program matr;
const
N=20;
N0=18;
var m:array[1..N]of array[1..N0]of real;
i,j:integer;
max:real;
maxi,maxj:integer;
procedure Init;
begin
randomize;
for i:=1 to N do
for j:=1 to N0 do
m[i,j]:=random(100);
end;
procedure display;
begin
for i:=1 to N do
begin
writeln;
for j:=1 to N0 do
write(m[i,j]:2:0,' ');
end;
writeln;
end;
procedure findmax;
begin
for i:=1 to N do
for j:=1 to N0 do
if abs(m[i,j])>max then max:=abs(m[i,j]);
end;
procedure FindElement;
begin
for i:=1 to N do
for j:=1 to N0 do
begin
if abs(m[i,j])=max then
begin
maxi:=i;
maxj:=j;
end;
end;
end;
begin
init;
display;
findmax;
findelement;
writeln('Max = ',max:0:5);
writeln('Положение элемента ',maxj,'*',maxi);
readln;
end.
[/syntax]
[syntax='delphi']
program matr;
const
N=20;
N0=18;
var m:array[1..N]of array[1..N0]of real;
i,j:integer;
max:real;
maxi,maxj:integer;
procedure Init;
begin
randomize;
for i:=1 to N do
for j:=1 to N0 do
m[i,j]:=random(100);
end;
procedure display;
begin
for i:=1 to N do
begin
writeln;
for j:=1 to N0 do
write(m[i,j]:2:0,' ');
end;
writeln;
end;
procedure findmax;
begin
for i:=1 to N do
for j:=1 to N0 do
if abs(m[i,j])>max then max:=abs(m[i,j]);
end;
procedure FindElement;
begin
for i:=1 to N do
for j:=1 to N0 do
begin
if abs(m[i,j])=max then
begin
maxi:=i;
maxj:=j;
end;
end;
end;
begin
init;
display;
findmax;
findelement;
writeln('Max = ',max:0:5);
writeln('Положение элемента ',maxj,'*',maxi);
readln;
end.
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Большое всем спасибо, выручили! 
