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

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

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

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

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

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

1.Дан двухмерный массив целых чисел. Во втором столбце имеются элементы, равные 10. Определить номер строки, в которой расположен самый нижний из таких элементов.

2.Дан двухмерный массив. Определить, есть ли в нем хотя бы две строки с одинаковой суммой элементов.
vaako вне форума Ответить с цитированием
Старый 03.04.2012, 13:44   #2
user125
 
Регистрация: 07.03.2012
Сообщений: 4
По умолчанию

Вроде так.
1.
Код:
var
   a:array[1..10, 1..10] of integer;
   i,j,z,str,stl:integer;
begin
   randomize;
   write('Введите кол-во строк в массиве. '); readln(str);
   write('Введите кол-во столбцов в массиве. '); readln(stl);
   for i:=1 to str do
      for j:=1 to stl do a[i,j]:=random(100);
   for i:=1 to str do begin
      a[i,2]:=random(20);
      if a[i,2]>9 then a[i,2]:=10;
   end;
   for i:=1 to str do begin
      for j:=1 to stl do write(a[i,j]:3);
      writeln;
   end;
   for i:=1 to str do
      if a[i,2]=10 then z:=i;
   writeln('Самая нижняя 10 второго столбца расположена в ',z,' строке.');
   readln;
end.
2.
Код:
var
   a:array[1..10, 1..10] of integer;
   i,j,z,sum1,sum2,str,stl:integer;
   f:boolean;
begin
   randomize;
   write('Введите кол-во строк в массиве.'); readln(str);
   write('Введите кол-во столбцов в массиве.'); readln(stl);
   for i:=1 to str do begin
      for j:=1 to stl do begin
         a[i,j]:=random(10);
         write(a[i,j]:2);
      end;
      writeln;
   end;
   for z:=1 to str do begin
      for i:=1 to str do begin
         for j:=1 to stl do begin
            if i=z then begin sum1:=1; break; end;
            sum1:=sum1+a[z,j];
            sum2:=sum2+a[i,j]
         end;
         if sum1=sum2 then f:=true;
         sum1:=0;
         sum2:=0;
         end;
   end;
   if f=true then write('Да.')
   else write('Нет.');
   readln;
end.
user125 вне форума Ответить с цитированием
Старый 04.04.2012, 02:50   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

user125, если ты не против, пара замечаний..
По первой задаче:
основной рабочий цикл лучше организовать снизу вверх и сделать выход из него (break). Но еще лучше использовать простой while, вот так:
Код:
z:= 10;
while a[z,2]<>10 do dec(i);
- тогда не нужна лишняя переменная i.
Да, и строки со столбцами у тя попутаны..

По второй задаче..
Не проще ли вместо этого:
Код:
            if i=z then begin sum1:=1; break; end;
просто пропустить значение i=z? Вот так:
Код:
   for z:=1 to str do begin
      for i:=1 to str do if i<>z then begin
Но на самом деле есть еще лучший способ - просто начинай второй цикл с z+1
Код:
   for z:=1 to str do begin
      for i:=z+1 to str do begin
Дальше, если у тебя УЖЕ БУЛЕВА переменная (то есть, имеющая значения false & true) - зачем проверять ее на равенство true? Ты же в результате сравнения все равно получаешь false/true! Этак можно и еще дальше пойти:
Код:
if (((f=true)=true)=true)=true then ...
А надо просто вот так
Код:
   if f then write('Да.') else write('Нет.');
На то они сделаны, булевы переменные!
А вообще, советую писать еще проще.. Без всяких там проверок писать просто вот так:
Код:
writeln(f);
Кому надо, тот поймет )).
Успехов тебе.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 04.04.2012, 13:51   #4
user125
 
Регистрация: 07.03.2012
Сообщений: 4
По умолчанию

TinMan, спасибо за оценку программ, буду стараться.
Цитата:
Сообщение от TinMan Посмотреть сообщение
Да, и строки со столбцами у тя попутаны..
Здесь не понял, вроде строки и столбцы верны.

Последний раз редактировалось user125; 04.04.2012 в 14:36.
user125 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
Двумерные массивы NezLee Паскаль, Turbo Pascal, PascalABC.NET 3 17.04.2011 22:33
Двумерные массивы MrMorozko Помощь студентам 1 13.12.2010 04:39
Двумерные массивы Boevik Помощь студентам 7 17.05.2009 19:03