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

Диагональные элементы матрицы заменить на 1 - C++

Восстановить пароль Регистрация
 
aliseoncka
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 7
24.11.2012, 17:31     Диагональные элементы матрицы заменить на 1 #1
дан двумерный массив. диагональные элементы массива заменить на 1.
проблема с заменой. в полученном массиве все элементы совпадают только ч последней строкой исходного массива. в чем проблема? не могу найти(
Программа на Dev c++

Код
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int i, j, k, n, m, x[20];
printf("\n vvedite m ");
scanf("%d",&m);
printf("\n vvedite n ");
scanf("%d",&n);
srand(time(0));
printf("ishodn mass\n");

for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{x[i,j]=rand()%41-20;
printf("%4d",x[i,j]);}
}


printf("poluchili  mass\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if (i=j) {x[i,j]=1};
printf("%4d",x[i,j]);
}}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++) 
cout<<x[i,j]<<" "; 
cout<<endl;} 
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2012, 17:31     Диагональные элементы матрицы заменить на 1
Посмотрите здесь:

C++ Элементы матрицы умножить на скаляр C=5,2. Элементы третьего столбца заменить единицами
C++ Заменить диагональные элементы матрицы
C++ Заменить элементы матрицы по правилу
Определить минимальный элемент квадратной матрицы, расположенный в левой части, ограничен диагоналями, включая диагональные элементы C++
Матрицы. Отрицательные элементы матрицы, расположенные выше главной диагонали, заменить на квадраты их значений C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
24.11.2012, 18:35     Диагональные элементы матрицы заменить на 1 #2
Цитата Сообщение от aliseoncka Посмотреть сообщение
(i=j)
if (i==j)

Добавлено через 1 минуту
Цитата Сообщение от aliseoncka Посмотреть сообщение
x[i,j]=1
вернее
C++
1
x[i][i]=1;
Добавлено через 6 минут
А ещё вернее не создавать двойной цикл, а писать
C++
1
for(i=0;i<min(n, m);i++) x[i][i]=1;
aliseoncka
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 7
24.11.2012, 22:11  [ТС]     Диагональные элементы матрицы заменить на 1 #3
Ввела if (i==j) чуть помогло. теперь он выводит так:
исходный массив
2 -5 7 8
3 5 -4 4
2 3 5 6

полученный массив
1 2 5 6
1 1 5 6
1 1 1 6
1 1 1 1

может у меня в программе скобки {} не там стоят или что еще? не могу никак понять((
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
24.11.2012, 23:56     Диагональные элементы матрицы заменить на 1 #4
к элементам массива обращаются x[i][j] , а не x[i, j]
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
41
42
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;//а где ты std используешь?...А вижу,но зачем смешивать printf и cout?
int main()
{
  int i, j, k, n, m, x[20];
  srand(time(0));
 
  printf("\n vvedite m ");
  scanf("%d",&m);
  printf("\n vvedite n ");
  scanf("%d",&n);
 
  printf("ishodn mass\n");
  for(i=0;i<m;i++)
  {
    for(j=0;j<n;j++)
    {
       x[i][j]=rand()%41-20;
       printf("%d ",x[i][j]);
    }
  }
  printf("poluchili  mass\n");
  for(i=0;i<m;i++)
  {
    for(j=0;j<n;j++)
    {
      if (i==j) x[i,j]=1;
      printf("%4d",x[i][j]);
     }
  }
  for(i=0;i<m;i++)
  {
    for(j=0;j<n;j++) 
      cout<<x[i][j]<<" "; 
    cout<<endl;
  } 
  getch();
  return 0;
}
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
25.11.2012, 00:05     Диагональные элементы матрицы заменить на 1 #5
Цитата Сообщение от aliseoncka Посмотреть сообщение
дан двумерный массив
извините, но в программе нет двумерного массива, а только одномерный
Цитата Сообщение от aliseoncka Посмотреть сообщение
int i, j, k, n, m, x[20];
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
25.11.2012, 00:10     Диагональные элементы матрицы заменить на 1 #6
Цитата Сообщение от V.A.L.I.D Посмотреть сообщение
извините, но в программе нет двумерного массива, а только одномерный
Ох, а этого я вообще не ожидал. хотел исправить программу, а самую главную ошибку прошляпил!
C++
1
int i, j, k, n, m, x[20][20];
конечно же!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2012, 14:59     Диагональные элементы матрицы заменить на 1
Еще ссылки по теме:

Матрица и диагональные элементы C++
C++ Заменить все положительные элементы матрицы единицами
Заменить уникальные элементы матрицы нулями C++

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

Или воспользуйтесь поиском по форуму:
aliseoncka
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 7
25.11.2012, 14:59  [ТС]     Диагональные элементы матрицы заменить на 1 #7
Ууух))как я рада))) спасибо))) ввела двумерный массив,исправила кое-что и работает)))) Спасибо вам))
Yandex
Объявления
25.11.2012, 14:59     Диагональные элементы матрицы заменить на 1
Ответ Создать тему
Опции темы

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