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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2009, 15:47   #1
Sanek87
Новичок
Джуниор
 
Регистрация: 01.03.2009
Сообщений: 2
По умолчанию Задача на двумерные массивы 2

Привет всем! Я недавно начал учить С++, и только начал учить Двумерные массивы такчто сильно не грузите. Задача такова: В двумерном масиве случайных чисел посчитать произведение четных чисел . Сижу весь день, никак не могу сделать.
Код:
#include <iostream>
	#include<ctime>
	using namespace std;
	int main()
{
	srand(time(0));
	const int m=3, n=3;
	int a[m][n], proizv=1, last1=2, last2=2;
	for(int i=0; i<m; i++)
	{
		for(int j=0; j<n; j++)
		{
			a[i][j]=rand()%10;//забиваем маccив случайными числами
			/*cout<<a[i][j]<<' ';*/
		}
	}
	for(int i = 0; i < last1; i++)
	{
			for(int j = 0; j < last2; j++)
			{
				cout<<a[i][j]<<' ';
			}
				cout<<"\n";
	}
		for(int i=0;i<last1;i++)
		for(int j = 0; j<last2; j++)
			if	(a[i][j]%2!=0 && a[i][j]=0)
			{
				a[i][j]=a[last1][last2];
				a[last1][last2]=0;
				last1--;
				last2--;
			}
			for(int i = 0; i <3; i++)
			{
				for(int j = 0; j <3; j++)
			if	(a[last1][last2]%2==0&&a[last1][last2]!=0)
			{
				cout<<a[last1][last2]<<'\t';
				proizv*=a[last1][last2];
				cout<<"proizv="<<proizv<<endl;
			}
			else
		{
			break;
		}
			}	
	cout<<"proizvedenie = "<<proizv<<endl;
			system("pause");
}
Вот сообразил код, идея такая чтобы все нули переставить на последнее место, если этого не сделать то четные числа пропускаться будут. Помогите пожалуйста решить!!!
Sanek87 вне форума Ответить с цитированием
Старый 01.03.2009, 15:53   #2
Goblin
Форумчанин
 
Регистрация: 24.11.2007
Сообщений: 196
По умолчанию

Если я правильно понял вопрос, то вот:
Код:
#include <iostream>
	#include<ctime>
	using namespace std;
	int main()
{
	srand(time(0));
	const int m=3, n=3;
	int a[m][n], proizv=1, last1=2, last2=2;
	for(int i=0; i<m; i++)
	{
		for(int j=0; j<n; j++)
		{
			a[i][j]=rand()%10;//забиваем маccив случайными числами
			if(a[i][j]%2==0)
                             proizv *= a[i][j];
/*cout<<a[i][j]<<' ';*/
		}
	}
 cout << proizv << endl;
return 0;
}
Goblin вне форума Ответить с цитированием
Старый 01.03.2009, 15:56   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Что-то вы намудрили..
Все проще.
Код:
#include <iostream>
#include <conio.h>
#include <ctime>
using namespace std;

int main(){
const int m=3, n=3;
int a[m][n], proizv=1,i,j;
srand(time(NULL));

for(i=0;i<m;i++)
 {
  for(j=0;j<n;j++)
   {
    a[i][j] = rand()%10;
    cout.width(4); //ширина поля вывода (чтобы ровно выводилось)
    cout<<a[i][j];
   }
  cout<<endl;
 }
cout<<endl;

for(i=0;i<m;i++)
 for(j=0;j<n;j++)
  if(a[i][j]%2==0 && a[i][j]!=0) proizv *= a[i][j];

cout<<"proizvedenie = "<<proizv<<endl;

getch();
return 0;
}
to Goblin
Только у вас еще нужно добавить проверку на ноль:
Код:
if(a[i][j]%2==0 && a[i][j]!=0)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 01.03.2009 в 17:06. Причина: добавил
Sazary вне форума Ответить с цитированием
Старый 01.03.2009, 16:54   #4
Sanek87
Новичок
Джуниор
 
Регистрация: 01.03.2009
Сообщений: 2
По умолчанию

Sazary, спасибо это то что нужно!!!
Sanek87 вне форума Ответить с цитированием
Старый 17.05.2009, 19:29   #5
depo111
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 10
По умолчанию

Помите доделать програмку дана матрица размера А(5*5) нужно заменить в строке элементы нулями которые лежат левее наибольшего(максимального) в строке к примеру вводим первую строку(на примере первой строки) 1 3 7 2 7
а результат должен быть такой 0 0 7 2 7 я так думаю тут нужно найти минимальный индекс j - столбца и присвоить ему max но почемуто не получается
#include <stdio.h>
#include <conio.h>
#define N 5
void main()
{clrscr();
int A[N][N],i,j,max,m,h,l=0;
FILE *fp;
fp=fopen("lab3.txt", "w");
for (i=0;i<N;i++)
for (j=0;j<N;j++)
{
printf ("Vvedite A[%d][%d]",i+1,j+1);
scanf ("%d", &A[i][j]);
}
clrscr();
printf ("icxodnaya matrica\n");
fprintf (fp,"icxodnaya matrica\n");
for (i=0;i<N;i++)
{
for (j=0;j<N;j++)
{
printf ("%d ",A[i][j]);
fprintf(fp,"%5d", A[i][j]);
}

printf("\n");
fprintf(fp,"\n");
}
printf("\n");
for (i=0;i<N;i++)
{ max=A[i][0];
for (j=0;j<N;j++)
if (A[i][j]>=max) max=A[i][j];
printf("Max %d ctroki %d\n",i+1,max);
fprintf(fp,"Max %d ctroki %d\n",i+1,max);
for (h=0;h<N;h++)
if (A[i][h]==max) l=h;
for (m=0;m<l;m++)
if (A[i][m]!=max) A[i][m]=0;
}
printf("\n");
printf ("Rezultat raboti programmi\n");
fprintf (fp,"Rezultat raboti programmi\n");
for (i=0;i<N;i++)
{
for (j=0;j<N;j++)
{ printf ("%d ",A[i][j]);
fprintf (fp,"%5d ",A[i][j]);
}
printf("\n");
fprintf(fp,"\n");
}
fclose(fp);
getch();
}
depo111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на двумерные массивы! Помогите решить! dimmkka Помощь студентам 2 18.02.2009 21:19
Задача на двумерные массивы N1R0 Общие вопросы C/C++ 12 21.12.2008 20:41
Задача на двумерные массивы xxxPascalxxx Помощь студентам 1 27.12.2007 19:39