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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2009, 20:37   #1
>>arty<<
Пользователь
 
Регистрация: 26.06.2009
Сообщений: 78
Восклицание Дана матрица 6х4, найти и выдать на экран строки содержащие нулевые элементы

Пожалуйста помогите, задача вроде лёгкая, а вот я ваще не врубаюсь как это реализовать, ну не пашет у меня прога и всё, облазил весь форум не смог найти похожей даже.....
>>arty<< вне форума Ответить с цитированием
Старый 02.07.2009, 21:29   #2
sheka
Босс
Форумчанин
 
Аватар для sheka
 
Регистрация: 03.06.2009
Сообщений: 125
По умолчанию

есть дофига похожих.
а ваши наработки где?!
исправлять ведь быстрее, чем писать заново. и так больше кто откликнется

Две одинаковые вложенные ошибки называются четной ошибкой и ошибкой не являются.
Ася 255507394. Отзывы здесь.
sheka вне форума Ответить с цитированием
Старый 02.07.2009, 21:58   #3
sheka
Босс
Форумчанин
 
Аватар для sheka
 
Регистрация: 03.06.2009
Сообщений: 125
По умолчанию

Код:
uses crt;

const
     xmax=5;
     ymax=3;

var
   a:array[1..ymax,1..xmax]of integer;
   x,y:integer;
   b:boolean;

begin
     randomize;
     clrscr;
     for y:=1 to ymax do
         for x:=1 to xmax do
             a[y,x]:=random(10);

     for y:=1 to ymax do
     begin
          for x:=1 to xmax do
              write(a[y,x]:3);
          writeln;
     end;

     readln;
     writeln;

     for y:=1 to ymax do
     begin
          b:=false;
          for x:=1 to xmax do
              if a[y,x]=0 then b:=true;
          if b=true then
          begin
               for x:=1 to xmax do
                   write(a[y,x]:3);
               writeln;
          end;
     end;
     readln;
end.

Две одинаковые вложенные ошибки называются четной ошибкой и ошибкой не являются.
Ася 255507394. Отзывы здесь.
sheka вне форума Ответить с цитированием
Старый 02.07.2009, 23:23   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

sheka, в целом зачёт.
но парочка замечаний.
1) "Дана матрица 6х4 ... ",
а у Вас: xmax=5; ymax=3;
2) не понравилось использование имён переменных X и Y в качестве индексов для массивов. ещё с древного Фортрана исторически сложилось использовать для индексов переменные I, J, K... а X и Y как-то больше принято использовать в качестве переменных вещественных типов. Хотя, безусловно, это право программиста — выбирать имена переменных... Просто мне, например, глаз режет..
3) т.к. ищем хотя бы один нулевой элемент в строке, то не обязательно крутить цикл по строке, если уже нашли нулевой. Для этого можно или прерывать цикл for, либо, более красиво, воспользоваться циклом с условием. А ещё можно как только нашли нулевой элемент, сразу печатать строку (тогда и в переменной и необходимость отпадёт.) вот так, например:
Код:
     for y:=1 to ymax do
     begin
          x:=1;
          while (x<=xmax) and (a[y,x]<>0) do inc(x);
          if (x<=xmax) then
          begin
            for x:=1 to xmax do
              write(a[y,x]:3);
            writeln;
          end;
     end;
p.s. прошу не расценивать мои слова как наезд...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.07.2009, 23:40   #5
sheka
Босс
Форумчанин
 
Аватар для sheka
 
Регистрация: 03.06.2009
Сообщений: 125
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s. прошу не расценивать мои слова как наезд...
можна и так
3. так как массив маленький - много выиграша во времени это не даст, хотя согласен - не прав(так просто было быстрее писать).
2. в задачах, в которых x,y явно не асоциируются с не цикловыми переменными, напремер, график функции, я предпочитаю использовать х,у. (хотя тоже это не правильно, но при достаточно громоздких прогах - мне, лично, помогает. иногда для циклов вообще называю именем, но очень-очень редко).
1. сколько учусь никак не могу понять что означает 6х4 : [1..4,1..6] или [1..6,1..4], поэтому подумал, если человеку надо, пусть хоть 2 числа поменяет,лень даже свои, хоть какие, наработки выложить.

Две одинаковые вложенные ошибки называются четной ошибкой и ошибкой не являются.
Ася 255507394. Отзывы здесь.
sheka вне форума Ответить с цитированием
Старый 03.07.2009, 00:16   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

sheka. угу. принято. со всем согласен.

Цитата:
много выиграша во времени это не даст
БЕССПОРНО!
Цитата:
сколько учусь никак не могу понять что означает 6х4 : [1..4,1..6] или [1..6,1..4]
принято так 6x4 = array[1..6,1..4] (и, если его вывести получится 6 столбцов * 4 строки)... просто принято, сначала координата по горизонтали (X или номер столбца), потом по вертикали (Y или номер строки).
Но это всё достаточно условно...

Цитата:
лень даже свои, хоть какие, наработки выложить.
шутить изволите?... да я на 100% уверен, что нет у него никаких своих наработок.
Дай ещё Бог, чтобы он смог выложенное решение "переварить"... а то выдаст за своё и глазом не моргнёт...

p.s. ой.. простите, я похоже скатился в оффтоп... ;(
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.07.2009, 09:34   #7
sheka
Босс
Форумчанин
 
Аватар для sheka
 
Регистрация: 03.06.2009
Сообщений: 125
Радость

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
принято так 6x4 = array[1..6,1..4] (и, если его вывести получится 6 столбцов * 4 строки)... просто принято, сначала координата по горизонтали (X или номер столбца), потом по вертикали (Y или номер строки).
ничего не перепутал?

Две одинаковые вложенные ошибки называются четной ошибкой и ошибкой не являются.
Ася 255507394. Отзывы здесь.
sheka вне форума Ответить с цитированием
Старый 03.07.2009, 09:46   #8
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

6*4 - 6 строк, 4 столбца.. сначала номер строки... вот в стринг гриде в делфи, там вроде наоборот

***
еще два первых цикла (с заполнением и выводом) объединить можно в один...
Uguu~

Последний раз редактировалось __STDC__; 03.07.2009 в 10:02.
__STDC__ вне форума Ответить с цитированием
Старый 03.07.2009, 11:41   #9
>>arty<<
Пользователь
 
Регистрация: 26.06.2009
Сообщений: 78
Смущение Огромное спасибо всем кто откликнулся)))

я вроде и сложнее составлял проги а тут так тупанул, что аж самому стыдно Спасибо всем за помощь наработки были но как я понял я запутался в единственном куске, там ещё у меня была некая переменная считающая количество строк в которых нули, хотя она там совсем не нужна была и вовсе как я уже понял...
for i:=1 to n do
begin
x:=false;
for j:=1 to k do
if a[i,j]=0 then x:=true;
if b=true then y:=i;
begin
for j:=1 to k do
write(a[i,j]:2);
writeln;
end;
end;
readln;
end.

Последний раз редактировалось >>arty<<; 03.07.2009 в 12:08.
>>arty<< вне форума Ответить с цитированием
Старый 03.07.2009, 18:14   #10
sheka
Босс
Форумчанин
 
Аватар для sheka
 
Регистрация: 03.06.2009
Сообщений: 125
Смех

Цитата:
Сообщение от __STDC__ Посмотреть сообщение
еще два первых цикла (с заполнением и выводом) объединить можно в один...
а зачем тогда вообще двухмерный массив? можна использовать множество, одномерный массив, файл или вообще строку!
этим меня бесят простые задачи . придумывали б уже зоть какие-то действия над массивом, а то просто ввести и вывести

Две одинаковые вложенные ошибки называются четной ошибкой и ошибкой не являются.
Ася 255507394. Отзывы здесь.
sheka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана матрица А(6,5). Составить массив, содержащий максимальные элементы каждого столбца. caen21rus Общие вопросы C/C++ 6 27.05.2009 17:06
Дана матрица размера M*N.Зеркально отразить ее элементы Ильдар ХАЛИКОВ Паскаль, Turbo Pascal, PascalABC.NET 6 09.04.2008 22:22
Нулевые элементы в матрицах ufoman Помощь студентам 5 26.04.2007 20:08