Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> найти первый четный элемент двумерного массива, нужно сформировать одномерный массив 
:(
    Опции темы
23borisova
Дата 3.5.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 29.4.2009

Репутация: нет
Всего: нет



Дан двумерный массив размерностью 4x6, заполненный целыми числами с клавиатуры. Сформировать одномерный массив, каждый элемент которого равен пер¬вому четному элементу соответствующей строки, если такого нет, то равен нулю.
PM MAIL   Вверх
mes
Дата 3.5.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



ну и в чем проблема ? где вопрос то ?
 smile может проблема  с определением четное число или нет ?
решается путем проверки на ноль после деления исходного числа на два.
Код

IF (Val MOD 2) THEN "нечетное"

smile

Это сообщение отредактировал(а) mes - 3.5.2009, 15:24


--------------------
PM MAIL WWW   Вверх
23borisova
Дата 3.5.2009, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 29.4.2009

Репутация: нет
Всего: нет



вот код. но берутся последние четные элементы в каждой строке. а нужно первый. как остановить счетчик?

Код


program name;
uses crt;
label 1;
var a:array [1..4,1..6] of integer; c:array [1..6] of integer; i,j,k,x:integer;
begin
clrscr;
for i:=1 to 4 do begin
for j:=1 to 6 do begin
readln(a[i,j]);
end;
end;
for i:=1 to 4 do begin
for j:=1 to 6 do begin
write (a[i,j], ' ');
end;
writeln;
end;
x:=1;
for i:=1 to 4 do begin
for j:=1 to 6 do begin
end;
if a[i,j] mod 2=0 then begin  c[x]:=a[i,j];inc(x); end;
end;
writeln;
for j:=1 to 4 do
write(c[j],' ');
end.

Добавлено @ 15:37
нужно чтобы брался самый первый четный элемент

Это сообщение отредактировал(а) volvo877 - 4.5.2009, 01:07
PM MAIL   Вверх
23borisova
Дата 3.5.2009, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 29.4.2009

Репутация: нет
Всего: нет



правда очень срочно нужно, помогите пожалуйста! 
PM MAIL   Вверх
mes
Дата 3.5.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



Цитата(23borisova @  3.5.2009,  14:36 Найти цитируемый пост)
вот код. но берутся последние четные элементы в каждой строке. а нужно первый. как остановить счетчик?

достаточно добавить выход из цикла, после того как найден первый подходящий.

ну и цикл подправить
Код


for j:=1 to 6 do
for i:=1 to 4 do 
   if a[i,j] mod 2=0 then
   begin  
       c[j]:=a[i,j]; 
       break; 
   end;




П.С. и для оформления кода используйте пожалуйста тег "Код" (кнопка вверху справа над полем ввода ответа ).

Это сообщение отредактировал(а) mes - 3.5.2009, 16:00


--------------------
PM MAIL WWW   Вверх
23borisova
  Дата 3.5.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 29.4.2009

Репутация: нет
Всего: нет



спасибо огромное, очень помог!
PM MAIL   Вверх
mes
Дата 3.5.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



Цитата(23borisova @  3.5.2009,  14:36 Найти цитируемый пост)
for j:=1 to 4 do
write(c[j],' ');

строк то 6 у Вас, а не 4  smile 


--------------------
PM MAIL WWW   Вверх
volvo877
Дата 4.5.2009, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(mes @  3.5.2009,  16:02 Найти цитируемый пост)
строк то 6 у Вас, а не 4
Ну, тут уже сложно разобраться чего 6, а чего 4. Судя по приведенном коду, массив C описан некорректно (с избытком): для матрицы из 4-х строк выделено 6 элементов массива. Отсюда и вся дальнейшая путаница... Автору: исправляй определение массива С.

Цитата(mes @  3.5.2009,  15:58 Найти цитируемый пост)
ну и цикл подправить
Только не так подправить... В цикле I - номер строки, а J - номер столбца:
Код
{
  Я не знаю, может в Сях и принято переворачивать все с ног на голову,
  но здесь - раздел Паскаль, внешний цикл - по строкам, внутренний - по столбцам !!!
}
for i:=1 to 4 do 
  for j:=1 to 6 do
   if not odd(a[i, j]) then
   begin  
       c[i]:=a[i,j]; { <--- Не C[j], а C[i]... Иначе возможны накладки }
       break; 
   end;


Как вариант БЕЗ break-а (мне все равно, но многие преподаватели запрещают его использование, холиваров здесь разводить не надо):

Код
for i:=1 to 4 do 
  for j:=6 downto 1 do
   if not odd(a[i, j]) then c[i]:=a[i, j];


Это сообщение отредактировал(а) volvo877 - 4.5.2009, 01:11
PM MAIL   Вверх
mes
Дата 4.5.2009, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



Цитата(volvo877 @  4.5.2009,  00:05 Найти цитируемый пост)
 Я не знаю, может в Сях и принято переворачивать все с ног на голову,

 smile Там тоже не принято. Я ошибочно взял ориентир на 
Цитата(23borisova @  3.5.2009,  14:36 Найти цитируемый пост)
c:array [1..6]

предполагая, что автору именно 6 элементов и нужно заполнить smile
 smile 





--------------------
PM MAIL WWW   Вверх
Еранак
Дата 17.4.2010, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.4.2010
Где: г.Армавир

Репутация: нет
Всего: нет



Ребят похоже вы и мне реально помогли smile  smile  smile , Спасибо  smile 
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0511 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.