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

В чем ошибка? В массиве обнулить побочную диагональ. - C++

Восстановить пароль Регистрация
 
stupidstudent
 Аватар для stupidstudent
17 / 14 / 1
Регистрация: 25.10.2011
Сообщений: 241
28.04.2012, 14:30     В чем ошибка? В массиве обнулить побочную диагональ. #1
в паскале все работает, а в с++ нет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream.h>
 
int main()
{
 system("chcp 1251");
 system("cls");
 int a[50][50];
 int i,j,m,n,o;
 cout << "Введите размер массива: ";
 cin >> n;
 
 cout << "введите массив: \n";
 for(i=1;i<n;i++)
 for(j=1;j<n;i++)
 cin >> a[i][j];
 
 for(i=1;i<n;i++)
 {
  for(j=1;j<n;i++)               
    cout << a[i][j] << " ";            
 }
    o = n + 1;
 for(i=1;i<n;i++)
 {
 for(i=1;i<n;i++)
 a[i,o-1] = 0;               
 }  
 cout << "Ответ: ";
 for(i=1;i<n;i++)
 {
  for(j=1;j<n;j++)               
   cout << a[i][j] << " ";
   
 }
     
 system("PAUSE");    
 return 0;   
}
жалуется на a[i,o-1] = 0;
26 incompatible types in assignment of `int' to `int[50]'
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2012, 14:30     В чем ошибка? В массиве обнулить побочную диагональ.
Посмотрите здесь:

нужно поменять побочную и главную диагональ в матрице C++
C++ В матрице найти произведение над главной диагональю,если произведение делится на 3 заменить побочную диагональ 0.
C++ Дан двумерный массив А(4,4) в виде квадратной матрицы. Составьте программу, обнуляющую побочную диагональ матрицы, если в ней найдется хоть один отриц
Поменять местами побочную диагональ и последнюю строку матрицы C++
Упорядочить побочную диагональ матрицы по уменьшению C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
28.04.2012, 14:32     В чем ошибка? В массиве обнулить побочную диагональ. #2
Цитата Сообщение от stupidstudent Посмотреть сообщение
a[i,o-1] = 0;
Вот в этом
stupidstudent
 Аватар для stupidstudent
17 / 14 / 1
Регистрация: 25.10.2011
Сообщений: 241
28.04.2012, 15:00  [ТС]     В чем ошибка? В массиве обнулить побочную диагональ. #3
Цитата Сообщение от mimicria Посмотреть сообщение
Вот в этом
как правильно?

Добавлено через 23 минуты
подправил остальное, но с диагональю проблема
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream.h>
 
int main()
{
 system("chcp 1251");
 system("cls");
 int a[128][128];
 int i,j,m,n,o;
 cout << "Введите размер массива: ";
 cin >> n;
 
 cout << "введите массив: \n";
 for(i=1;i<n;i++)
 for(j=1;j<n;j++)
 cin >> a[i][j];
 
 for(i=1;i<n;i++)
 {
  for(j=1;j<n;j++)               
    cout << a[i][j] << " ";
    cout << endl;              
 }
    o = n + 1;
 for(i=1;i<n;i++)
 {
 for(i=1;i<n;i++)
 //a[i,o-1] = 0;        как обнулить побочную диагональ в с++ ?      
 }  
 cout << "Ответ: \n";
 for(i=1;i<n;i++)
 {
  for(j=1;j<n;j++)               
   cout << a[i][j] << " ";
   cout << endl;
  
 }
     
 system("PAUSE");    
 return 0;   
}
andy_111
90 / 59 / 1
Регистрация: 03.07.2011
Сообщений: 148
28.04.2012, 15:11     В чем ошибка? В массиве обнулить побочную диагональ. #4
Я посчитал и получилось, что для элементов побочной диагонали квадратной матрицы суммы индексов столбца и строки равны и составляют число строк + 1.
Таким образом, получаем код для обнуления побочной диагонали

C++
1
2
3
for(i=1;i<n;i++)
   for(j=1;j<n;j++)
       if (i+j == n) a[i][j] = 0;
Вообще ну очень неудобно то, что вы считаете массивы с 1 Здесь у меня стоит условием i+j == n, так как массивы считаются с 1.

В общем вот так будет :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream.h>
 
int main()
{
 system("chcp 1251");
 system("cls");
 int a[128][128];
 int i,j,m,n,o;
 cout << "Array size: ";
 cin >> n;
 
 cout << "Array: \n";
 for(i=1;i<n;i++)
 for(j=1;j<n;j++)
 cin >> a[i][j];
 
 for(i=1;i<n;i++)
 {
  for(j=1;j<n;j++)
    cout << a[i][j] << " ";
    cout << endl;              
 }
    o = n + 1;
   for(i=1;i<n;i++)
      for(j=1;j<n;j++)
       if (i+j == n) a[i][j] = 0;
 
 cout << "Answer: \n";
 for(i=1;i<n;i++)
 {
  for(j=1;j<n;j++)               
   cout << a[i][j] << " ";
   cout << endl;
  
 }
     
 system("PAUSE");    
 return 0;   
}
stupidstudent
 Аватар для stupidstudent
17 / 14 / 1
Регистрация: 25.10.2011
Сообщений: 241
28.04.2012, 15:21  [ТС]     В чем ошибка? В массиве обнулить побочную диагональ. #5
andy_111, Спасибо.
можно и вот так:
C++
1
2
3
4
 for(i=0;i<=n;i++)
 {
      a[i][n-i+1]=0;
 }
Кстати, чтобы был русский язык в консоли, пишите
C++
1
system("chcp 1251");
и в свойствах программы(консольки) поставьте шрифт Lucida Console
Yandex
Объявления
28.04.2012, 15:21     В чем ошибка? В массиве обнулить побочную диагональ.
Ответ Создать тему
Опции темы

Текущее время: 00:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru