Форум программистов, компьютерный форум CyberForum.ru

Двумерные массивы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Многомерный массив http://www.cyberforum.ru/cpp-beginners/thread450592.html
Имеется вот такое задание: Создать программу, которая реализует журнал с оценками в виде двумерного массива (студенты - строки, оценки за контрольные - столбцы). Предположить, что в группе 9 студентов и 8 контрольных. Заполнить журнал случайными оценками от 4 до 12, показать его на экран. Найти лучшего студента, худшего студента (сумма всех оценок максимальна, минимальна). Средние оценки по...
C++ Уплотнить двумерный массив из целых чисел,удалив из него все нулевые строки и столбцы Уплотнить двумерный массив из целых чисел,удалив из него все нулевые строки и столбцы http://www.cyberforum.ru/cpp-beginners/thread450589.html
В одномерном массиве из целых чисел вставить новый элемент между всеми парами элементов,имеющими разные знаки C++
В одномерном массиве из целых чисел вставить новый элемент между всеми парами элементов,имеющими разные знаки
Для каждого столбца найти произведение элементов с номерами C++
Дан массив n на n из целых чисел. Для каждого столбца найти произведение элементов с номерами от к1 до к2 и записать данные в новый массив.
C++ составить программу,решающую это уравнение http://www.cyberforum.ru/cpp-beginners/thread450581.html
(x+y)/(y+1) - (x*y-12)/(34+x):cry:
C++ Массивы Дан массив n на n из целых чисел. Выяснить является ли матрица симметричной относительно главной диагонали. подробнее

Показать сообщение отдельно
gelfer
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 5
21.02.2012, 22:51     Двумерные массивы
Доброго времени суток, стоит задача:

Дано число n. Создайте массив int A[n][n], и заполните его по следующему правилу:

Числа на диагонали, идущей из правого верхнего в левый нижний угол равны 1.
Числа, стоящие выше этой диагонали, равны 0.
Числа, стоящие ниже этой диагонали, равны 2.

Полученный массив выведите на экран. Числа разделяйте одним пробелом. Пример
Вход Выход
4 0 0 0 1
0 0 1 2
0 1 2 2
1 2 2 2

Решение получилось такое:
Код
#include <iostream>
using namespace std;

int main()
{

	int r,c,i,j;
	cin>>r>>c;
	int **mas = new int *[r];
	for(i=0; i<r; i++)
	{
		mas[i] = new int [c];
	}
	
	for(i=0;i<r;i++)
	{
       for(j=r-1;j>=0;j--)
       {
          if (i<j)
		  {
             mas[i][j]=2;
			 cout<<mas[i][j];
		  }
          else if(i>j)
		  {
             mas[i][j]=0;
			 cout<<mas[i][j];
		 
		  }
          else
		  {
             mas[i][j]=1;
			 cout<<mas[i][j];
			 
		  }
		  
       }
	   cout<<endl;
	}


	for(i=0; i<r;i++)
	{
		delete [] mas[i];
	}
	delete [] mas;
	return 0;
}

Это решение правильно, но! оно работает через оператор if.
Как написать этот же код, но только с операторами цикла for?
Я написал похожее, но где-то есть ошибка...

Код
#include <iostream>
using namespace std;

int main()
{

	int r,c,i,j;
	cin>>r>>c;
	int **mas = new int *[r];
	for(i=0; i<r; i++)
	{
		mas[i] = new int [c];
	}
	
	for(i=0;i<r;i++)
	{
		for(j=r-1;j>i;j--)
		{
			 mas[i][j]=2;
			cout<<mas[i][j];
		}
		for(j=r-1;j>=0;j--)
		{
			mas[i][j]=1;
			cout<<mas[i][j];
		}
		for(j=r-1;j<i;j--)
		{
			 mas[i][j]=0;
			cout<<mas[i][j];
		}
		
		cout<<endl;
	}
	



	for(i=0; i<r;i++)
	{
		delete [] mas[i];
	}
	delete [] mas;
	return 0;
}
Помогите исправить пожалуйста или предложите свои варианты решения. Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru