Змінюй хід війни! Допомагай ЗСУ!

Pascal , покажите где ошибка ?

  • Автор теми Автор теми Honorocker
  • Дата створення Дата створення
Я просто сказал это с точки зрения оптимизации. например, если диапазон от -50 до 150, можно сразу начинать считать от 51 до 150

И так считать просто..
Но логика простая сумма арифметической прогрессии. Ясный хер в симметричном диапазоне равна 0..
Количество тоже просто считается..

Ребята.. Я шизею.. Сумма арифметической прогрессии Сумма первого и последнего деленная на два и умножить на их количество .. Че вы циклы тулите?
 
Останнє редагування:
*Выебнусь*

Когда на первом курсе учился, у нас по плюсам было что-то вроде курсовой. У меня задача была - вычислить матрицу методом крамера (вроде). Я в плюсы повставлял ассемблерные вставки (например, инвертирование бита и небольшие вспомогательные процедуры), после чего препод долго не мог въехать в код, и поставил 4 (потому как, якобы, я всё это у кого-то списал, несмотря на мои внятные объяснения).

Поэтому, если ТС не очень шарит, пускай делает циклами (именно циклы, как я понимаю, ТС проходит по программе (не считая общий синтаксис паскаля)).

p.s. в конце 2 закр. скобки, а не блонд. смайлик
 
Нда. Инвертировать биты можно и без ассемблерных вставок :D
 
Та ладно. Один оператор.

Тулить ассемблерный код, даже в хитрозакрученный c++ код, считаю извратом.
 
читал-читал ветку, пока не дошло до этого
Код:
    ...
    MinD := (MinD div Del3) * Del3;
Мега-код, однако, получился. A=(A/B)*B :D
Можно усложнить же: MinD := (MinD div Del3) * Del3+Del3-Del3 ... ;
Еще можно повставлять рандомные задержки и индикатор прогресса, чтоб окончательно убедить пользователя, что программа совершает немыслимые вычисления. Эту забытую со студенческих времен идею вчера выудил с поверхности башорга :клас:
 
Код:
Del3 := 5;
MinD := 17;
MinD := (MinD div Del3) * Del3;

solor2001, чему будет равно MinD?
 
Этот умник прав только в том случае, когда A кратно B
 
Та тот умник по ходу ****быдлокодер недоделаный.
 
Ладно парни не ссортесь , помогите есчо немножко пожалуйста ,
задали задание перемножить два двумерных массива .
Напрвте на пусть истинный ...

program first;
uses crt;
const
n=5;
x=10;
type
matrix=array[1..n,1..x] of integer;
var
a:matrix;
j,i:byte;
w:integer;
begin
clrscr;
randomize;
for i:= 1 to n do;
for j:= 1 to x do;
begin
w:=sqr(a);
write (w[i,j]:4);
writeln;
readkey;
end.






Вот собственно все до чего догадался мой мозг , возможно я упустил макс мин но думаю они тут не нужны , в общем хелп !!!
 
w:=sqr(a); во вложенных циклах это *****.
дальше не смотрел, сорри. даже не нашел два двумерных массива :D
 
а зачем два ,один и тот же умножить друг на друга ну или квадрат ...
я ж в танке ))

В общем я написал немного другой алгоритм ,ща снапищу и скажу где уже другая ошибко ((
program first;
uses crt;
const
n=5;
x=10;
type
matrix=array[1..n,1..x] of integer;
matrix2=array[1..n,1..x] of integer;
a=matrix;
b=matrix2
var
j,i.j2,i2:byte;
w:integer;
begin
clrscr;
randomize;
for i:= 1 to n do;
for j:= 1 to x do;
begin
for i2:=1 to n do
for j2:=1 to x do
begin
w:= a * b;
write (w[i,j]:4);
writeln;
readkey;
end.


ругаеться 88 ")' expected возле умножения ...
 
В общем я написал немного другой алгоритм
Напишите к каждой строчке комментарий. Не совсем понятно, какие мысли Вас посещали при написании данного кода.

Например, какое, по Вашему мнению, предназначение этого участка:
for i:= 1 to n do;
for j:= 1 to x do;
 
w не может быть integer
вынесите w:= a * b; из цикла.
И вы не определили * для матриц. Либо определяете, либо не выносите из цикла и тогда совсем брутальненько w[i,j] := a[i,j]*b[i,j];

пропустили end
for i2:=1 to n do >>
for j2:=1 to x do >> не нужно вообще
begin >>

совсем навскидку
и что делает randomize?
 
:)))))

легче заново написать с нуля, и показать ТСу, чем в коде ошибки ему показывать
 
Не вижу смысла. Кто предложит самый эффективный код?
 
Любой код приведет к перемножению ячеек в итоге... Вопрос в эффектвности и скорости этих перемножений.
 
Назад
Зверху Знизу