Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
e73t4ph_2
3 / 3 / 1
Регистрация: 05.03.2013
Сообщений: 440
#1

Привести в матрице главную диагональ равную нулям - C (СИ)

14.04.2013, 15:27. Просмотров 474. Ответов 8
Метки нет (Все метки)

написал следующий код:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
main()
{
int i, j, n;
int a[n][n];
srand(time(NULL));
printf("n="); scanf("%d", &n);
for(i=0; i<n; i++)
for(j=0; j<n; j++)
a[i][j] = rand()%3+0;
printf("%d", &a[i][j]);
system("PAUSE");
}
должен строить матрицу изчисел диапозона [0;3] допустим матрицу 9х9

а выдает следующее:

Привести в матрице главную диагональ равную нулям
http://www.cyberforum.ru/c-beginners/thread1606345.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 15:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Привести в матрице главную диагональ равную нулям (C (СИ)):

Заменить суммой первого столбца матрицы главную диагональ
Ввести массив 4 на 4 определить сумму 1 строки и 1 столбца, и заменить суммой 1...

Поменять местами главную и побочную диагональ через указатели
Программа не работает. Почему? #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...

Как привести матрицу к унитреульной матрице или верхней треугольной матрице?
Как привести матрицу к унитреульной матрице или верхней треугольной матрице? ...

С помощью перемещения строки и столбца поставить все минимальные элементы матрицы на главную диагональ
Добрый день уважаемые форумчани. Прошу вас помочь разобраться мне с заданием....

Удалить из квадратной матрицы главную диагональ, при этом элементы верхнего треугольника сместить влево
void removeDiagT (Matrix *a); Удаляет из квадратной матрицы a главную...

8
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
14.04.2013, 15:35 #2
Цитата Сообщение от e73t4ph_2 Посмотреть сообщение
a[i][j] = rand()%3+0
попробуйте
C#
1
a[i][j] = rand()%4
0
Mrs_Kate
7 / 7 / 2
Регистрация: 19.11.2012
Сообщений: 26
14.04.2013, 15:36 #3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <cstdlib>
#include <time.h>
 
main()
{
int i, j, n;
int a[n][n];
srand(time(NULL));
printf("n="); scanf("%d", &n);
for(i=0; i<n; i++)
{for(j=0; j<n; j++)
{a[i][j]=rand()%3+0;
printf("%d", a[i][j]);}
printf("\n");
}
system("PAUSE");
}
вот так работает
в функции printf("%d", a[i][j]) знак адреса не надо ставить (у вас 14 строчка в коде)
1
e73t4ph_2
3 / 3 / 1
Регистрация: 05.03.2013
Сообщений: 440
14.04.2013, 15:39  [ТС] #4
Цитата Сообщение от Ihor3 Посмотреть сообщение
попробуйте
C#
1
a[i][j] = rand()%4
программа после этого ошибку выдает

то есть вылетает

Добавлено через 2 минуты
Цитата Сообщение от Mrs_Kate Посмотреть сообщение
вот так работает
в функции printf("%d", a[i][j]) знак адреса не надо ставить (у вас 14 строчка в коде)
спасибо. вы прям мне глаза открыли
0
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
14.04.2013, 15:40 #5
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
 
clrscr();
int a[n][n];
n=7;
int i,j;
for (i=0;i<n;i++){
 printf("\n");
 for(j=0;j<n;j++){
 do
 {
 a[i][j]=rand()%4;
 }
 while ((a[i][j]<0) &&(a[i][j]>4));
 printf( "| %3d|  ",a[i][j], "," );
 
  }
  }
getch();
return 0;
0
e73t4ph_2
3 / 3 / 1
Регистрация: 05.03.2013
Сообщений: 440
14.04.2013, 16:00  [ТС] #6
еще вопрос. хотел привести в матрице главную диагональ равную нулям написал следующий код:

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
#include <stdio.h>
#include <cstdlib>
#include <time.h>
 
main()
{
      int i, j, n;
      int a[n][n];
      srand(time(NULL));
      printf("n="); scanf("%d", &n);
      for(i=0; i<n; i++)
      {
               for(j=0; j<n; j++)
               {
                        if(i=j)
                        {
                               a[i][j]=0;
                        }     
                        {
                              if(i!=j)
                                a[i][j]=rand()%3;
                               printf("%d", a[i][j]);
                        }
               }
               printf("\n");
      } 
      system("PAUSE");
}
результат снова не тот:

Привести в матрице главную диагональ равную нулям
0
Mrs_Kate
7 / 7 / 2
Регистрация: 19.11.2012
Сообщений: 26
14.04.2013, 17:01 #7
Зачем так код усложнять? Добавьте просто еще одно условие if(i==j) + не забывайте во внешнем цикле прописать дополнительно printf("\n");, иначе все элементы матрицы выведутся в одну строчку
a[i][j]=0;:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <cstdlib>
#include <time.h>
 
main()
{
int i, j, n;
int a[n][n];
srand(time(NULL));
printf("n="); scanf("%d", &n);
for(i=0; i<n; i++)
{for(j=0; j<n; j++)
{a[i][j]=rand()%3+0;
if(i==j)
a[i][j]=0;
printf("%d", a[i][j]);}
printf("\n");
}
system("PAUSE");
}
1
e73t4ph_2
3 / 3 / 1
Регистрация: 05.03.2013
Сообщений: 440
14.04.2013, 17:14  [ТС] #8
Mrs_Kate, а возможно ли посчитать все получившиеся числа(все двойки, единицы и т.д.) и вывести их на экран?
0
Mrs_Kate
7 / 7 / 2
Регистрация: 19.11.2012
Сообщений: 26
14.04.2013, 17:51 #9
Да, возможно, только большое условие будет. Нужно сравнивать каждый элемент матрицы с 2, 1 и тд, ну и счетчик, конечно)
например:
C
1
2
3
4
5
6
7
8
9
10
int k,p;
for(i=0;i<n;i++)
  {for(j=0;j<n;j++)
   { if (a[i][j]==0)
       k++; //счетчик для чисел, равных 0
    else if(a[i][j]==1)
           p++;
      else if ....
    }
 }
ну, и так далее
а потом просто пишешь
C
1
printf("Элементы, равные 1 - %d", k);
1
14.04.2013, 17:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2013, 17:51
Привет! Вот еще темы с решениями:

Умножить одномерный массив (вектор-строка) на главную диагональ (вектор столбец)
Помогите исправить ошибки в коде, пожалуйста. Задание: задать матрицу 3х3 с...

Дан двумерный массив 4х4, определить максимум и минимум, определить разность, заменить главную диагональ на полученную разность
Дан двумерный массив 4х4, определить максимум и минимум, определить разность...

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru