18 / 15 / 0
Регистрация: 25.10.2011
Сообщений: 241
1

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

28.04.2012, 14:30. Показов 1494. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
в паскале все работает, а в с++ нет
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]'
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2012, 14:30
Ответы с готовыми решениями:

обнулить побочную диагональ матрицы
Дан двумерный массив А(4,4) в виде квадратной матрицы. Составьте программу, обнуляющую побочную...

Обнулить побочную диагональ матрицы
Дан двумерный массив А(4,4) в виде квадратной матрицы. Составьте программу, обнуляющую побочную...

Найти сумму максимума и минимума в каждой матрице. В той матрице, где сумма больше, обнулить главную и побочную диагональ
Очень не укладываюсь в срок помогите подготовить программу: Даны две квадратные матрицы A и B....

Считать из файла побочную диагональ
Задание: Нужно записать двухмерный массив Ann в файл. Потом из этого массива считать элементы...

4
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
28.04.2012, 14:32 2
Цитата Сообщение от stupidstudent Посмотреть сообщение
a[i,o-1] = 0;
Вот в этом
1
18 / 15 / 0
Регистрация: 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;   
}
0
95 / 64 / 5
Регистрация: 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;   
}
1
18 / 15 / 0
Регистрация: 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
0
28.04.2012, 15:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2012, 15:21
Помогаю со студенческими работами здесь

Заменить главную диагональ на побочную
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Побочную диагональ упорядочить по убыванию
сформировать произвольного размера квадратную матрицу А .элементы тех столбцов, сумма которых...

Выделить цветом побочную диагональ
здравствуйте! подскажите, пожалуйста, как при выводе матрицы выделить цветом её побочную диагональ?...

Переделать побочную диагональ на главную
В данной программе считываются элементы побочной диагонали. Пожалуйста помогите переделать код,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru