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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2009, 17:13   #1
barbossa
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 12
Восклицание Помогите пожалуйста найти ошибку в проге

Создать квадратную матрицу целых чисел размером 9х9.Заполнить матрицу случайными числами. Отобразить главную и побочную диагонали симметрично относительно горизонтальной оси.Помогите найти ошибку, а то вроде вводил все правильно, а прога как надо не запускается. Заранее спасибо

Вот текст проги:
Код:
#include "stdafx.h"
#include "iostream"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
    srand ( time(NULL) );
	const int n=9;
	int mas[n][n];
	int i,j;
	for(i=1;i<=n;i++)
	for(j=1;j<=n;j++)
			mas[i][j]=rand()%100-50;
		
	for(i=1; i<=n;i++)
	{   printf("\n");
		for(j=1;j<=n;j++)
		printf("%3d",mas[i][j]);
	}
	int n2=n/2-1;
	for(i=1;i<=n;i++);
	for(j=n2;j<=n;j++);
	{
      mas[i][j]=mas[i][j-(n/2)];
	}
	cout<<"next"<<endl;
	for(i=1; i<=n;i++)
	{   printf("\n");
		for(j=1;j<=n;j++)
		printf("%3d",mas[i][j]);
	}	
    cin.get();
	return 0;
}
Модератор: тег CODE
barbossa вне форума Ответить с цитированием
Старый 30.05.2009, 17:20   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Нумерация в Си идет от нуля. Соответственно, измените все циклы вида
Код:
for(i=1; i<=n; i++)
на
Код:
for(i=0; i<n; i++)
-------------
Цитата:
Отобразить главную и побочную диагонали симметрично относительно горизонтальной оси
Вот есть матрица:
Код:
1 2 3
4 5 6
7 8 9
Как она должна выглядеть после отражения? Вот так?
Код:
1 2 3
4 5 6
1 7 3
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 31.05.2009, 23:10   #3
barbossa
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 12
По умолчанию

типа такого должно быть?

Код:
 #include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand ( time(NULL) );
const int n=9;
int mas[n][n];
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
mas[i][j]=rand()%100-50;
for(i=0; i<n;i++)
{   
printf("\n");
for(j=0;j<n;j++)
printf("%3d",mas[i][j]);
}
for(i=0;i<n;i++)
for(j=n/2;j<n;j++)
{
 mas[i][j]=mas[i][j-(n/2)];
}
cout<<"next"<<endl;
for(i=0; i<n;i++)
{printf("\n");
for(j=0;j<n;j++)
printf("%3d",mas[i][j]);
}	
cin.get();
return 0;
}
barbossa вне форума Ответить с цитированием
Старый 31.05.2009, 23:19   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Да. Только у вас все равно не так считает. Замените главный цикл на вот такие:
Код:
for(i=0; i<n/2; i++)
 mas[n-i-1][i] = mas[i][i];
for(i=n-1; i>n/2; i--)
 mas[i][i] = mas[n-i-1][i];
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 01.06.2009, 20:41   #5
barbossa
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 12
По умолчанию

я все так и сделал как Вы мне посоветовали, но как оказалось у меня совершенно задание отличается от того что я думал, там надо поменять в этой матрице числа 1х 4х строк с последними 4мя местами, так чтоб 6-9 оказался на месте 1-4 и наоборот, а нас этому реально не учили и даже не знаю что делать и как, если знаете как напишите пожалуйста, заранее благодарен....вот последний код проги:

Код:
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand ( time(NULL) );
const int n=9;
int mas[n][n];
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
mas[i][j]=rand()%100-50;
for(i=0; i<n;i++)
{   
printf("\n");
for(j=0;j<n;j++)
printf("%3d",mas[i][j]);
}
for(i=0; i<n/2; i++)
{
 mas[n-i-1][i] = mas[i][i];
{
for(i=n-1; i>n/2; i--)
 mas[i][i] = mas[n-i-1][i];
}
}
cout<<"next"<<endl;
for(i=0; i<n;i++)
{printf("\n");
for(j=0;j<n;j++)
printf("%3d",mas[i][j]);
}	
cin.get();
return 0;
}
barbossa вне форума Ответить с цитированием
Старый 01.06.2009, 21:02   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Добавьте целочисленную переменную tmp и измените основной цикл вот так:
Код:
for(i=0; i<n/2; i++)
 for(j=0; j<n; j++)
  {
   tmp = mas[i][j];
   mas[i][j] = mas[n-i-1][j];
   mas[n-i-1][j] = tmp;
  }
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 01.06.2009, 21:33   #7
barbossa
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 12
По умолчанию

спасибо большое вроде как надо))но просто нашего преподавателя фиг разберешь....то он хочет так, то по другому...все равно спасибо
barbossa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу найти ошибку в проге!!!!! beeline Помощь студентам 4 18.05.2009 20:49
Не могу найти ошибку. Помогите, пожалуйста! Evgesha Помощь студентам 3 15.03.2009 14:04
Помогите пожалуйста найти ошибку (С\С++) Nina+ Помощь студентам 6 19.02.2009 22:30