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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2014, 21:49   #1
sasha1212
Пользователь
 
Регистрация: 11.03.2014
Сообщений: 13
По умолчанию Найти наибольшее число из четных

Помогите пожалуйста с задачкой.Для каждого элемента А(i,j) найти наиб.значение среди всех четных элементов в выделенной области.Результат представить в виде таблицы.Код написал,но проблема с областью,почему-то не так создается

Код:
#include <stdio.h>
#include <conio.h>

int A[20][20];
int C[100];
int N,M;
int k,s;
int poisk_max(int);


void vvod_massiva()
{int i,j;
 printf("\n Vvedite kol-vo strok i stolbcov \n");
 scanf("%d %d",&N,&M);
 printf("\n Vvedite matricy: \n");
 for(i=1;i<=N;i++)
      {for(j=1;j<=M;j++)
      scanf("%d",&A[i][j]);
      
      }
}

void vivod_massiva()
{
 int i,j;
 printf("\n Vasha matrica \n");
 for(i=1;i<=N;i++)
    {
     for(j=1;j<=M;j++)
	 printf("%d ",A[i][j]);
	 printf("\n");
	 	
    }
}

int postroenieoblasti(int x,int y)
{

 int W;
 int i,j;
 int max;
 

	k=1;
  for(i=x,j=y;j>=1;j--)                 	  {
	  C[k]=A[i][j];

	  k++; }

  for(i=x-1,j=y+1;i>=1,j<=M;i--,j++)    	  {
	  	C[k]=A[i][j];
	  	k++;
	  	
	  		

}
           
					
  for(i=x+1,j=y+1;i<=N,j<=M; i++,j++)    			{
			C[k]=A[i][j];
			 k++;
	         
   }
 s=k-1;
W=poisk_max(s);

return W;

}

int poisk_max(int s)
{
int max;
  
	  
for(k=1;k<=s;k++)
    {
    
	if(C[k]%2==0)
     {
        max=C[k];
        break;
     }
 }
  for(k=1;k<=s;k++)
     {if(C[k]%2==0 && C[k]>max)
		  max=C[k];}
  
   return max;   
}

int  main ()
{
	int i,j,a,x,y;
		  
	vvod_massiva();
	vivod_massiva();

printf("| N | i | j | rezultat |\n");
printf("|   |   |   |          |\n");

	a=1;
	for(x=1;x<=N;x++)
	for(y=1;y<=M;y++)

{

A[x][y]=postroenieoblasti(x,y);

printf("|%3d|%3d|%3d|%10d|\n",a,x,y,A[x][y]);
a++;
}

getch();

}
Изображения
Тип файла: jpg рррр.jpg (85.2 Кб, 118 просмотров)
sasha1212 вне форума Ответить с цитированием
Старый 09.12.2014, 23:14   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

Код:
#include <iostream>
#include <array>
#include <vector>
#include <ctime>
#include <algorithm>

const size_t COL = 6;
const size_t ROW = 7;
using Matrix = std::array<std::array<int, COL>, ROW>;

int main() {
	Matrix mask = {{
		{ { 0, 0, 0, 0, 0, 0 } },
		{ { 0, 0, 0, 0, 0, 1 } },
		{ { 0, 0, 0, 0, 1, 0 } },
		{ { 1, 1, 1, 1, 0, 0 } },
		{ { 0, 0, 0, 0, 1, 0 } },
		{ { 0, 0, 0, 0, 0, 1 } },
		{ { 0, 0, 0, 0, 0, 0 } }
	}};

	Matrix arr;
	std::srand(std::time(0));
	for (auto &i : arr) {
		std::generate(i.begin(), i.end(), []() { return std::rand() % 10; });
	}

	for (auto i : arr) {
		for (auto j : i) {
			std::cout << j << " ";
		}
		std::cout << std::endl;
	}

	std::vector<int> data;
	for (int i = 0; i < ROW; i++) {
		for (int j = 0; j < COL; j++) {
			if (mask[i][j] != 0 && arr[i][j] % 2 == 0) {
				data.push_back(arr[i][j]);
			}
		}
	}

	if (data.empty()) {
		std::cout << "No elements" << std::endl;
	} else {
		std::cout << "Max element = " << *std::max_element(data.begin(), data.end()) << std::endl;
	}
}
http://ideone.com/zCfqHy
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти наибольшее число, длинночисленная арифметика, с++ rUs_LAN Помощь студентам 6 23.06.2012 03:44
Найти наибольшее число. Массив байт. (assembler) Wasisualy Помощь студентам 1 27.12.2011 13:48
В процессоре KP580BM80A найти наибольшее число таня1 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 19.12.2011 21:04
В процессоре KP580BM80A найти наибольшее число таня1 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 27.11.2011 10:32
Программа с использование массива найти 3-е наибольшее число Tатьяна Помощь студентам 7 01.11.2010 09:23