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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2010, 21:53   #1
Smile :)
Новичок
Джуниор
 
Регистрация: 15.06.2010
Сообщений: 1
Вопрос Масивы. Файловые типы.

1.Пронормировать матрицу (10,12), то есть разделить каждый элемент на максимальный в своей строке
У меня получилось как-то так :
PROGRAM TEST;
VAR MAS:ARRAY[1..10,1..12] OF REAL;
I,J:INTEGER;
MA:REAL;
BEGIN
FOR J:=1 TO 12 DO
BEGIN
WRITELN ('VVESTU MAS');
FOR I:=1 TO 10 DO
FOR j:=1 TO 12 DO
READ (MAS[I,J]);
END;
FOR J:=1 TO 12 DO
BEGIN
MA:=MAS[I,J];
FOR I:=1 TO 10 DO
IF MAS[I,J]>MA THEN
MA:=MAS[I,J];
FOR I:=1 TO 10 DO
MAS[I,J]:=MAS[I,J]/MA;
END;
WRITELN('REZULTS');
FOR I:=1 TO 10 DO
BEGIN
FOR J:=1 TO 12 DO
WRITE (MAS[I,J]:5:2);
END;
END.

оно делит, но почему-то не правильно.

2.В текстовом файле F1 записано 5 строк текста; определить строки, у которых есть слова IN и ON.

Мои програмки:

program lab7zax1 (input,output);
var f1:file of integer;
i,j : integer;
a : array[1..10,1..10] of integer;
begin
assign (f1,'D:\F1.dat');
rewrite(f1);
for i:=1 to 10 do
for j:=1 to 10 do
begin
read(a[i,j]);
write(f1,a[i,j]);
end;
writeln ('all elements is enterd. OK');
close(f1);
end.

program test2 (input,output);
var F1:file of integer;
i,j,p,max : integer;
a:array[1..10,1..10] of integer;
begin
assign(F1,'D:\F1.dat');
reset(F1);
for i:=1 to 10 do
begin
for j:=1 to 10 do
begin
read(F1,a[i,j]);
write(a[i,j],' ');
end;
writeln
end;
for j:=1 to 10 do
begin
max:=a[i,1];
p:=1;
for j:=2 to 10 do
if max<a[i,j] then
begin
p:=j;
max:=a[i,j];
end;
a[i,p]:=a[i,i];
a[i,i]:=max;
writeln('results');
end;
for i:=1 to 10 do
begin
for j:=1 to 10 do
write (a[i,j]:3);
writeln;
readln;
writeln(' ');
close(F1);
end;
end.

Первая программа, создает файл, а вторая имеет его считать и сделать операцию по перестановке, но у меня почему-то не получается она.

Подскажите пожалуйста где я сделал ошибку в этих программах?

мне кажется проблема где-то в циклах обеих программ, но я не могу понять, где именно...помогите мне пожалуйста.
Smile :) вне форума Ответить с цитированием
Старый 15.06.2010, 23:06   #2
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

-I-
Код:
PROGRAM TEST;
Uses
  CRT;
VAR
  MAS:ARRAY [1..100,1..100] OF REAL;
  I,J,n,m,s:INTEGER;
  MA:REAL;
BEGIN
Clrscr;
randomize;
write('Введите количество строк: ');
readln(n);
write('Введите количество столбцов: ');
readln(m);
WRITELN ('Исходная матрица: ');
   FOR I:=1 TO n DO
       begin
          FOR j:=1 TO m DO
              begin
                 MAS[I,J]:=random(10)-3;
                 write('  ',mas[i,j]:1:2,' ');
              END;
              writeln;
       end;
writeln;
   FOR i:=1 TO n DO
       BEGIN
          MA:=MAS[I,1];
              FOR j:=1 TO m DO
                   IF MAS[I,j]>MA THEN
                        MA:=MAS[I,J];
                        writeln('MAX элемент ',i,'-й строки:=',ma);
                   if ma<>0 then
                       begin
                          FOR s:=1 TO m DO
                               mas[i,s]:=mas[i,s]/ma;
                       end;
end;
writeln;
WRITELN ('Результирующая матрица: ');
    FOR I:=1 TO n DO
        BEGIN
           FOR J:=1 TO m DO
              begin
                 WRITE ('  ',MAS[I,J]:1:3,' ');
              END;
           writeln;
        end;
END.
Во второй ты ставишь max элеенты на главную диагональ я так понял.
Код:
PROGRAM TEST;
Uses
  CRT;
VAR
  MAS:ARRAY [1..100,1..100] OF REAL;
  I,J,n,s,jmax:INTEGER;
  MA,temp:REAL;
BEGIN
Clrscr;
randomize;
write('Введите количество строк и столбцов: ');
readln(n);
WRITELN ('Исходная матрица: ');
   FOR I:=1 TO n DO
       begin
          FOR j:=1 TO n DO
              begin
                 MAS[I,J]:=random(10)-3;
                 write('  ',mas[i,j]:1:2,' ');
              END;
              writeln;
       end;
writeln;
   FOR i:=1 TO n DO
       BEGIN
          MA:=MAS[I,1];
          jmax:=1;
              FOR j:=1 TO n DO
                   IF MAS[I,j]>MA THEN
                   begin
                        MA:=MAS[I,J];
                        jmax:=j;
                        end;
                        writeln('MAX элемент ',i,'-й строки:=',ma);
begin
temp:=mas[i,i];
 mas[i,i]:=mas[i,jmax];
 mas[i,jmax]:=temp;
end;
end;


writeln;
WRITELN ('Результирующая матрица: ');
    FOR I:=1 TO n DO
        BEGIN
           FOR J:=1 TO n DO
              begin
                 WRITE ('  ',MAS[I,J]:1:3,' ');
              END;
           writeln;
        end;
END.
にんじゃ

Последний раз редактировалось ROMA2PVT; 16.06.2010 в 08:49.
ROMA2PVT вне форума Ответить с цитированием
Старый 16.06.2010, 10:55   #3
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Код:
MAS:ARRAY [1..100,1..100] OF REAL;
Простая арихметика
100*100*6/1024=58,6 килобайта только под массив...
остается от сегмента 64-58,6=5,4 килобайта на все прочие удовольствия...
Профессиональное решение...
Это называется русский экстрим!!!
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 16.06.2010 в 10:59.
Grag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файловые структуры данных. Pascal rishikesh Помощь студентам 8 29.05.2010 12:34
Файловые операции _GT_ Общие вопросы C/C++ 1 08.05.2010 20:48
файловые переменные sestrenka141989 Паскаль, Turbo Pascal, PascalABC.NET 1 06.05.2010 12:41
задача на файловые потоки в C++ Klyan Помощь студентам 1 06.01.2008 01:49