Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Нахождение чётных элементов в столбцах матрицы

Ответить
Настройки темы
C/C++ - Нахождение чётных элементов в столбцах матрицы

Пользователь


Сообщения: 98
Благодарности: 1

Профиль | Отправить PM | Цитировать


Да что то не как не могу додумать завершающий этап програмки

Вобщем,что то голова совсем не думает сегодня

Дана такая задачка:

Дана матрица 10:10. Элементы чётных столбцов разделить на максимальный элемент матрици,а не чётных умножить на минимальный.

Код: Выделить весь код
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>

int main()
{
  int arr[10][10];
  int i,j;
  randomize;
  for(i = 0; i < 10; i++)
  for(j = 0; j < 10; j++)
  {

  arr[i][j]=random(10);

  }

   printf("Massiv: n \n\n");
  for(i = 0; i < 10; i++)
  {
    for(j = 0; j < 10; j++)
      printf("%3i ",arr[i][j]);

    if(j % 10 == 0)
   cout<<endl;
   printf("\n");
  }


//максимальный элемент

int ZnachenieElementaMAX = arr[0][0];
for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
if(ZnachenieElementaMAX <= arr[i][j])
{
ZnachenieElementaMAX = arr[i][j];
}
}
//Проверка
cout<<"ZnachenieElementaMAX = "<<ZnachenieElementaMAX<<endl;

//минимальный элемент

int ZnachenieElementaMIN = arr[0][0];
for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
if(ZnachenieElementaMIN >= arr[i][j])
{
ZnachenieElementaMIN = arr[i][j];
}
}
//Проверка
cout<<"ZnachenieElementaMIN = "<<ZnachenieElementaMIN<<endl;
for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
//операция с четными столбцами
if(j%2 == 0)
А вот тут заминка вышла  :)
}
ПОдскажите плиз условие нахождения чётных не чётных элементов матрици

Отправлено: 21:31, 03-04-2009

 

Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


в матрице счёт столбцов/строк начинается с единицы, а у вас массив заполняется с нулевых индексов. Т.е. всё наоборот: если остаток нулевой - столбец нечётный, иначе - чётный:
Код: Выделить весь код
if (j%2==0)
  arr[i][j]=arr[i][j]*ZnachenieElementaMIN;
else
  arr[i][j]=arr[i][j]/ZnachenieElementaMAX;
я бы if вынес за второй цикл:
Код: Выделить весь код
for(i = 0; i < 10; i++)
  if (j%2==0)
    for(j = 0; j < 10; j++) arr[i][j]=arr[i][j]*ZnachenieElementaMIN;
  else
    for(j = 0; j < 10; j++) arr[i][j]=arr[i][j]/ZnachenieElementaMAX;
только массив у вас объявлен целочисленный - после деления получится сплошная абстракция ;-)
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:17, 03-04-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Только для нахождения минимального значения присвой не первый элемент массива, а обычное число, скажем 10, ведь генерируется случайное число не больше 9. И для расширяемости и удобства, рекомендовется, вместо
Код: Выделить весь код
int arr[10][10];
использовать такую конструкцию, тогда не нужно будет везде писать в размере массива число 10, а просто
Код: Выделить весь код
const int column = 10;
const int row = 10;

int array[column][row] = {0};
По теме, попробовал бы так, проверь, возможно ошибся, но не должен. Учти советы в начале коммента
Код: Выделить весь код
for(j = 0; j < 10; j++)
{
//операция с четными столбцами
if(j%2 == 0){
   for(i = 0; i < 10; i++)
      arr[i][j] /= ZnachenieElementaMAX;
   }

}

for(j = 0; j < 10; j++){
if(j % 2 != 0){
    for(i = 0; i < 10; i++)
      arr[i][j] *= ZnachenieElementaMIN;
      //ZnachenieElementaMIN;
  }
}

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:18, 03-04-2009 | #3


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


и чисто гипотетически не исключена ситуация, что произойдёт деление на нуль

Отправлено: 22:19, 03-04-2009 | #4


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Busla,
Цитата Busla:
Код: Выделить весь код
for(i = 0; i < 10; i++)
 if (j%2==0)
 for(j = 0; j < 10; j++) arr[i][j]=arr[i][j]*ZnachenieElementaMIN;
 else
 for(j = 0; j < 10; j++) arr[i][j]=arr[i][j]/ZnachenieElementaMAX;
»
Не получится, так как, одно условие за один раз, а у тебя if\else или\или, тогда что-то или какой-то столбец чётный или нечётный, скорее нечётный не будет выполняться, поскольку выполнено первое условие.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 22:21, 03-04-2009 | #5


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Цитата Drongo:
Только для нахождения минимального значения присвой не первый элемент массива, а обычное число, скажем 10 »
всё там было хорошо - с левым числом гораздо проще ошибиться: сейчас массив случайно заполняется, потом кто-то руками попробует и т.п. Да и зачем эта лишняя сущность?

Отправлено: 22:22, 03-04-2009 | #6


Пользователь


Сообщения: 98
Благодарности: 1

Профиль | Отправить PM | Цитировать


Спасибо огромное за советы сейчас буду пробывать !!!

Отправлено: 22:26, 03-04-2009 | #7


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


точно - индексы перепутал - вот к чему приводит копипаст! :-)
должно быть:
Код: Выделить весь код
for(j = 0; j < 10; j++)
 if (j%2==0)
   for(i = 0; i < 10; i++) arr[i][j]=arr[i][j]*ZnachenieElementaMIN;
 else
   for(i = 0; i < 10; i++) arr[i][j]=arr[i][j]/ZnachenieElementaMAX;

Отправлено: 22:26, 03-04-2009 | #8


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата Busla:
всё там было хорошо - с левым числом гораздо проще ошибиться: сейчас массив случайно заполняется »
Согласен, но при его варианте, первым присваивается ноль, поэтому я опробовал, и ошибка деления на ноль. Вот и посоветовал. Хотя чую, перемудрил.
Цитата Busla:
не исключена ситуация, что произойдёт деление на нуль »
Она и не исключена, минимальный элемент в его массиве всегда будет нулём... если не задать масшаб случайных чисел.

Код: Выделить весь код
1 + random(10);

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 22:27, 03-04-2009 | #9


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


но делить-то надо на максимальный, чтобы и он был нулём - вся матрица должна быть заполнена нулями

Отправлено: 10:21, 04-04-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Нахождение чётных элементов в столбцах матрицы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - [решено] Нахождение обратной матрицы методом Гаусса и рассширенной матрицы D.Y. Программирование и базы данных 64 06-05-2011 22:59
Разное - [решено] Как отобразить данные в столбцах таблицы? САЕ Microsoft Windows 2000/XP 4 18-05-2009 23:34
Теория - Нахождение внутренних углов в многоугольнике mrcnn Программирование и базы данных 8 01-06-2008 14:51
Нахождение сервера лицензий w2k3 SergOst Microsoft Windows NT/2000/2003 3 09-11-2006 14:59
Excel-97 и Canon LBP-1120 печать чётных и нечётных страниц Vas73 Хочу все знать 1 29-09-2003 06:58




 
Переход