Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2008, 10:53   #1
neomaximus
Пользователь
 
Регистрация: 11.06.2008
Сообщений: 47
По умолчанию Помогите с массивами пожалуйста

Она немного не правильная
Как сделать: выбираю строку, потом число,это число умножаю например на 2 или3,и выводится другая матрица, но уже с замененным числом(котое умножали)
Вот пример
378
547
1216
opr=
Viberite stroku=2
Vibrerite chislo=4
Umnogit' na= 2
378
587
1216
opr1=
Код:
program opred;
uses crt;
type
   Tmatr=array [1..20,1..20] of real;
var n:integer;
    a:Tmatr;
    det,ch,det1:real;
    i,j,ns:integer;
procedure Per(k,n:integer;var a:Tmatr; var p:integer);
//процедура перестановки строк, если главный элемент равен 0
var i,j:integer;z:real;
begin


   z:=a[k,k];i:=k;p:=0;
   for j:=k+1 to n do
     begin
       if abs(a[j,k])>z then
          begin
            z:=abs(a[j,k]);i:=j;
            p:=p+1;
          end;
     end;
   if i>k then
   for j:=k to n do
     begin
       z:=a[i,j];a[i,j]:=a[k,j];a[k,j]:=z;
     end;
end;
function znak(p:integer):integer;

begin
if p mod 2=0 then
znak:=1 else znak:=-1;
end;
procedure opr(n:integer;var a:Tmatr;var det:real);
//собственно процедура нахождения определителя
var k,i,j,p:integer;
    r:real;
begin
det:=1;
for k:=1 to n do
   begin
     if a[k,k]=0 then per(k,n,a,p);
     det:=znak(p)*det*a[k,k];
     for j:=k+1 to n do
       begin
         r:=a[j,k]/a[k,k];
         for i:=k to n do
           begin
             a[j,i]:=a[j,i]-r*a[k,i];
           end;
       end;
   end;
end;
prodcedure vvod (var t: word;a,b:word);
var
x,y,code:integer;
l:sttring;
flag:boolean;
begin
x:=wherex;
y:=wherey;
repeat
flag:=true;
readln(l);
val(l,t,code);
if(code<>0) or (not(t>a)) or (not(t<b)) then
begin
gotoxy(x,y);
clreol;
write('oshibka');
delay(1000);
gotoxy(x,y);
clreol;
flag:=false;
end;
begin
clrscr;
writeln('**********************zadanie3.1************************');
Writeln('**********************uslovie***************************');
writeln('Pokazat, cho, esli elementi kakogo-libo ryada opredelitelya umnojit na chislo,');  
writeln('to opredelitel takje umnojaetsya na eto je chislo');
Writeln('Vipolnil student gruppi EVMK-06-1 Melihov Maxim');
Writeln('Najmite enter');
readln;
write('n='); 
vvod(n,0,1000);
readln(n);
writeln('Ischodnaia matritsha');
randomize;
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        a[i,j]:=random(10)+random;
        write(a[i,j]:6:2);
      end;
  writeln;
  end;
writeln;
opr(n,a,det);//считаем определитель исходной матрицы
writeln('opr=',det:4:1);
writeln;
write('Stroka=');
 vvod(ns,0,1000);
readln(ns);
write('Chislo=');
 vvod(ch,0,1000);
readln(ch);
for j:=1 to n do
a[ns,j]:=a[ns,j]*ch;
opr(n,a,det1);
writeln;
write('opr1=',det1:4:1);//считаем определитель после умножения строки на число
readln
end.
neomaximus вне форума Ответить с цитированием
Старый 08.07.2008, 11:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ух. Много шуму из ничего.
Код:
for j:=1 to n do 
 if a[ns,j]=ch then a[ns,j]:=a[ns,j]*ch;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.07.2008, 11:22   #3
neomaximus
Пользователь
 
Регистрация: 11.06.2008
Сообщений: 47
По умолчанию

А куда это вставить??
neomaximus вне форума Ответить с цитированием
Старый 08.07.2008, 11:38   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну как куда? Посмотри в конце проги у тебя цикл, вот его и меняй.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.07.2008, 11:40   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Узнаю код моей абсолютно рабочей программы, которую недавно выкладывал для кого-то, но зачем ты туда засунул процедуру Vvod, написанную абсолютно безграмотно и с ошибками. Для чего она? Из-за нее не работает программа, которую ты похоже вообще не понял, потому что пишешь
Цитата:
выбираю строку, потом число,это число умножаю например на 2 или3
Не число умножают на 2 или 3, а все элементы выбранной строки на выбранное число.

Вот код той рабочей программы.
http://programmersforum.ru/showpost....71&postcount=2

Последний раз редактировалось puporev; 08.07.2008 в 11:48.
puporev вне форума Ответить с цитированием
Старый 08.07.2008, 17:48   #6
neomaximus
Пользователь
 
Регистрация: 11.06.2008
Сообщений: 47
По умолчанию

Спасибо!!!
neomaximus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с массивами в Делфи _Alise_ Помощь студентам 11 21.06.2008 22:17
помогите с массивами Ibmsystem Помощь студентам 1 21.04.2008 08:10
Помогите с массивами Юль_кА Паскаль, Turbo Pascal, PascalABC.NET 2 10.04.2008 08:39
Помогите новичку с массивами alexei Общие вопросы Delphi 9 11.09.2007 22:19