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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2010, 13:01   #1
mila111189
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 23
По умолчанию Двумерные массивы в pascal

1. Дан двумерный массив размером n*m, заполненный случайными числами. Найти строку с минимальной суммой и в ней максимальный элемент.

2. Заполнить массив n*n по правилу:
1 2 3...n-1 n
0 1 2...n-2 n-1
0 0 1...n-3 n-2
. . . ... . .
0 0 0 ... 0 1
mila111189 вне форума Ответить с цитированием
Старый 27.10.2010, 13:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

примерно так:
Код:
const int n=5;
int a[n][n],i,j,sum,smax,smaxi=0,max;
for(i:=0;i<n;i++) {sum=0;max=0;
 for(j:=0;j<n;j++){
  a[i][j]=rand();
  sum+=a[i][j];
  if(a[i][j]>max){max:=a[i][j];}
 }
 if(sum<smax){smax=sum;smaxi=i;} 
}
Писал с потолка...
smax - Максимальная сумма
smaxi - максимальная строка
max - максимум в максстроке
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2010, 21:06   #3
mila111189
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 23
По умолчанию

это какой язык? мне паскаль нужен. в этом никак не разберусь
mila111189 вне форума Ответить с цитированием
Старый 28.10.2010, 21:48   #4
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

C

Код:
const int n=5;
int a[n][n],i,j,sum,smax,smaxi=0,max;
for(i:=0;i<n;i++) {sum=0;max=0;
 for(j:=0;j<n;j++){
  a[i][j]=rand();
  sum+=a[i][j];
  if(a[i][j]>max){max:=a[i][j];}
 }
 if(sum<smax){smax=sum;smaxi=i;} 
}
Pascal .... Нету где перевести набрал на глаз =) ошибки не проверял =)

Код:
const n=5;
var 
a:array[1..n][1..n] of integer;
i,j,sum,smax,smaxi,max:integer;
begin
randomize;
for i:=0 to n do 
 begin
  sum:=0;max:=0;
    for j:=0 to n do  
     begin
       a[i][j]:=random(100); 
        sum:=sum+a[i][j];
        if (a[i][j]>max)then 
begin max:=a[i][j];end;
 begin
 if(sum<smax) then begin smax:=sum;smaxi:=i;end;end;
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 01.11.2010, 21:35   #5
mila111189
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 23
По умолчанию

Не получается((((
mila111189 вне форума Ответить с цитированием
Старый 02.11.2010, 08:45   #6
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Код конечно длиноватый получился, но вроде работает
Код:
uses crt;
   var mass: array [1..4,1..4] of integer;
       mass2: array [1..4] of integer;
       s,strmin,min,min2:integer;
       i,j:byte;
begin
   clrscr;
   randomize;
   for i:=1 to 4 do
     for j:=1 to 4 do
       mass[i,j]:=random(15);

   for i:=1 to 4 do
     begin
        for j:=1 to 4 do
          s:=s+mass[i,j];
          mass2[i]:=s;
          s:=0;
     end;
   strmin:=mass2[1];   min:=1;
   for i:=2 to 4 do
     if mass2[i]<strmin then begin
                               strmin:=mass2[i];
                               min:=i;
                             end;
   min2:=mass[min,1];
   for i:=1 to 4 do
     if mass[min,i]<min2 then min2:=mass[min,i];

   writeln('Stroka s min symmou - ',min);
   writeln('Max element v stroke - ',min2);
   readln;
end.
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 03.11.2010, 22:49   #7
mila111189
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 23
По умолчанию

помоему, когда в стоке ищет максимальный элемент, если есть в строке ноль, он пишет что максимальный элемент 0... или я недопоняла задачу? Оно ищет правильно когда в стороке нет нуля..

Последний раз редактировалось mila111189; 03.11.2010 в 22:53.
mila111189 вне форума Ответить с цитированием
Старый 04.11.2010, 06:38   #8
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Кажись я там напутал и искал не максимальный элемент, а минимальный. Исправьте
Код:
min2:=mass[min,1];
   for i:=1 to 4 do
     if mass[min,i]<min2 then min2:=mass[min,i];

   writeln('Stroka s min symmou - ',min);
   writeln('Max element v stroke - ',min2);
на
Код:
max:=mass[min,1];
   for i:=1 to 4 do
     if mass[min,i]>max then max:=mass[min,i];

   writeln('Stroka s min symmou - ',min);
   writeln('Max element v stroke - ',max);
не забыв объявить переменную max вместо min2 в разделе var
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.

Последний раз редактировалось Niro; 04.11.2010 в 06:44.
Niro вне форума Ответить с цитированием
Старый 04.11.2010, 10:57   #9
mila111189
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 23
По умолчанию

Спасибо большое
mila111189 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PASCAL Двумерные массивы Kyz92009 Помощь студентам 1 25.12.2009 15:48
Двумерные массивы в Pascal AnL Помощь студентам 6 14.12.2009 17:45
Двумерные массивы в PASCAL hohol90 Помощь студентам 2 01.12.2009 15:55
Двумерные массивы 3 (Pascal) Дима82 Помощь студентам 6 08.06.2008 14:38
Двумерные массивы 2 (Pascal) Дима82 Помощь студентам 3 08.06.2008 09:41