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

Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали - C++

Восстановить пароль Регистрация
 
Verinom
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 4
20.06.2011, 11:23     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #1
Доброго времени суток.
Имеется задача:

Дан вещественный массив А[N][N]. Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали. Подсчитать количество нулевых элементов главной диагонали.

Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2011, 11:23     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали
Посмотрите здесь:

C++ Заменить каждый нулевой элемент главной диагонали матрицы максимальным элементом побочной диагонали
C++ В квадратной матрице заменить элементы главной и побочной диагонали на минимальный элемент
Заменить элементы главной и побочной диагоналей матрицы на минимальный элемент ниже главной диагонали C++
C++ Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером t.
C++ Поменять местами строку матрицы с максимальным элементом на главной диагонали со строкой m
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
20.06.2011, 11:45     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    
    int N; 
    cout << "Введите N: " ;
    cin >> N;
    
    float max = 0;
    float mas [N][N];
    cout << "Заполнение массива" << endl;
    for (int i = 0; i < N; i ++ ) 
    {
        for (int j = 0; j < N; j ++ )
        cin >> mas [i][j];
 
        if (max < mas [N-i-1][i]) max = mas [ N-i-1 ] [i]; // нахождение максимума
    }
 
    
    for ( int i = 0; i < N; i ++ )
        if (mas[i][i] == 0 ) mas [i][i] = max; // замена нулей
 
    cout << "Вывод массива:" << endl;
    for (int i = 0; i < N; i++){
        for (int j = 0; j < N; j++)
            cout << mas [i][j] << " " ;
        cout << endl;
    }
 
    getch();
    return 0;
}
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
20.06.2011, 12:11     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #3
Вариант с printf-ом:
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<stdio.h>
#include<stdlib.h>
main()
{
      int a[6][6]={{0,1,1,1,1,6},
                   {1,1,1,1,1,1},
                   {1,1,0,1,1,1},
                   {1,1,1,1,1,1},
                   {1,1,1,1,0,1},
                   {1,1,1,1,1,1}};
      int i,j,max=0,s=0,n=6;
      printf("Random matrix:\n\n");
      for(i=0;i<6;i++)
       { for(j=0;j<6;j++)
         {
           printf(" %3i",a[i][j]);
         }
       printf("\n\n");
       }
      printf("\n\nChanged matrix:\n\n");
        for(i=0;i<6;i++)
       { for(j=0;j<6;j++)
         { if (max<a[n-i-1][i]) max=a[n-i-1][i];                 
         }
       }
        for(int i=0;i<6;i++)
                if(a[i][i]==0)
                { a[i][i]=max;
                  s++;
                }
       for(i=0;i<6;i++)
       { for(j=0;j<6;j++)
         { 
           printf(" %3i",a[i][j]);
         }
       printf("\n\n");
       }
printf("\n\nKolichestvo nulevih elementov na glavnoi diagonali kotorie bili zameneni=%i",s);
system("pause");
}
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
20.06.2011, 12:14     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #4
опять не по условию делаешь ))
написано же - вещественный массив )

забыл счетчик.
C++
1
2
3
      int count=0;
  for ( int i = 0; i < N; i ++ )
                if (mas[i][i] == 0 ){count++; mas [i][i] = max;} // замена нулей
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
20.06.2011, 12:17     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #5
Цитата Сообщение от co6ak Посмотреть сообщение
опять не по условию делаешь ))
написано же - вещественный массив )
Если надо, переделает
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
20.06.2011, 12:19     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #6
по такой логике
"если надо - сам напишет" ))
snoop9x
0 / 0 / 0
Регистрация: 03.12.2010
Сообщений: 14
20.06.2011, 12:22     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #7
co6ak, здравствуйте, не могли бы мне помочь.... Как можно добавить элементы в конец одномерного массива... Размерность массива задается с клавиатуры
Verinom
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 4
20.06.2011, 12:24  [ТС]     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #8
Цитата Сообщение от co6ak Посмотреть сообщение
опять не по условию делаешь ))
написано же - вещественный массив )

забыл счетчик.
C++
1
2
3
      int count=0;
  for ( int i = 0; i < N; i ++ )
                if (mas[i][i] == 0 ){count++; mas [i][i] = max;} // замена нулей
Извиняюсь за глупый вопрос но в какую часть программы его вставлять, куда не поставлю продолжает писать про 6 ошибок? Благодарю за помощь.
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
20.06.2011, 12:25     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #9
C++
1
2
        for ( int i = 0; i < N; i ++ )
                if (mas[i][i] == 0 ) mas [i][i] = max;
вот это заменить на
C++
1
2
3
4
      int count=0;
  for ( int i = 0; i < N; i ++ )
                if (mas[i][i] == 0 ){count++; mas [i][i] = max;}
cout << "Количество нулей - " << count << endl;
Verinom
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 4
20.06.2011, 12:44  [ТС]     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #10
1>------ Build started: Project: lfbar 7, Configuration: Debug Win32 ------
1>Compiling...
1>ura.cpp
1>c:\users\пк\documents\visual studio 2008\projects\lfbar 7\lfbar 7\ura.cpp(14) : error C2057: expected constant expression
1>c:\users\пк\documents\visual studio 2008\projects\lfbar 7\lfbar 7\ura.cpp(14) : error C2466: cannot allocate an array of constant size 0
1>c:\users\пк\documents\visual studio 2008\projects\lfbar 7\lfbar 7\ura.cpp(14) : error C2057: expected constant expression
1>c:\users\пк\documents\visual studio 2008\projects\lfbar 7\lfbar 7\ura.cpp(14) : error C2466: cannot allocate an array of constant size 0
1>c:\users\пк\documents\visual studio 2008\projects\lfbar 7\lfbar 7\ura.cpp(14) : error C2087: 'mas' : missing subscript
1>c:\users\пк\documents\visual studio 2008\projects\lfbar 7\lfbar 7\ura.cpp(14) : error C2133: 'mas' : unknown size
1>Build log was saved at "file://c:\Users\ПК\Documents\Visual Studio 2008\Projects\lfbar 7\lfbar 7\Debug\BuildLog.htm"
1>lfbar 7 - 6 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Пишет и до замены и после нее.
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
20.06.2011, 12:50     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #11
экспресс студия...

замени все N на 4 чтоли... или на 6
Verinom
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 4
20.06.2011, 13:40  [ТС]     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #12
Заменил все N на 6 кроме
int constant ; если заместо constant стоит 6 то сообщает про ошибку
cout << "Введите N: " ;
cin >> 6;
Осталось тока одна ошибка
1>c:\users\пк\documents\visual studio 2008\projects\lfbar 7\lfbar 7\ura.cpp(11) : error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2011, 14:40     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали
Еще ссылки по теме:

C++ Переставить строку матрицы с максимальным элементом на главной диагонали, со строкой с заданным номером m
Матрицы: элементы главной диагонали поменять местами с максимальным элементом в каждой строке C++
C++ Заменить элементы главной диагонали матрицы нулями и найти максимальный элемент ниже побочной диагонали

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

Или воспользуйтесь поиском по форуму:
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
20.06.2011, 14:40     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали #13
Сообщение было отмечено автором темы, экспертом или модератором как ответ
тыркни
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
#include <iostream>
#include <conio.h>
#define N 6
using namespace std;
 
int main()
{
        setlocale(LC_ALL, "Russian");
                
        float max = 0;
        float mas [N][N];
        cout << "Заполнение массива" << endl;
        for (int i = 0; i < N; i ++ ) 
        {
                for (int j = 0; j < N; j ++ )
                cin >> mas [i][j];
 
                if (max < mas [N-i-1][i]) max = mas [ N-i-1 ][i]; // нахождение максимума
        }
 
        int counter = 0;
        for ( int i = 0; i < N; i ++ )
                if (mas[i][i] == 0 ) {counter ++; mas [i][i] = max;} // замена нулей
        cout << "Количество нулей = " << counter << endl;
 
        cout << "Вывод массива:" << endl;
        for (int i = 0; i < N; i++){
                for (int j = 0; j < N; j++)
                        cout << mas [i][j] << " " ;
                cout << endl;
        }
 
        getch();
        return 0;
}
Yandex
Объявления
20.06.2011, 14:40     Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали
Ответ Создать тему
Опции темы

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