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

матрица и массив - C++

Восстановить пароль Регистрация
 
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
06.12.2010, 19:50     матрица и массив #1
дана квадратная матрица с размером n и массив с тем же размером.
Найти в каждой строке матрицы максимальный элемент,и поместить его в массив.
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <time.h>
#include <windows.h>
#include <math.h>
#include <D:\\alex\\head-files\\mathem.h>
#include <D:\\alex\\head-files\\kurs.h>
#include <D:\\alex\\head-files\\factorial.h>
using namespace std;
const int n=5;
 
void inp(int x[][n]);
void calc(int x[][n],int y[]);
void out(int x[][n],int y[]);
 
void main()
{   srand(time(0));
    int x[n][n];
    int y[n];
    inp(x);
    calc(x,y);
    out(x,y);
 
}
 
void inp(int x[][n])
{
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            x[i][j]=rand()%10+1;
}
 
void calc(int x[][n],int y[])
{
        int max=x[0][0];
        for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(max<x[i][j])
            {
            max=x[i][j];
            y[i]=max;
            }
                
}
 
void out(int x[][n],int y[])
{
        for(int i=0;i<n;i++)
        {
        for(int j=0;j<n;j++)
            cout<<x[i][j]<<" ";
        cout<<endl;
        }
        
 
        cout<<endl;
        for(int i=0;i<n;i++)
            cout<<y[i]<<" ";
        cout<<endl;
}

Первые две максимальные элементы выводит нормально...а дальше следуют уму не уместные числа.

Добавлено через 1 минуту
Хотя нет...Теперь и первые два числа тоже не понятные.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2010, 19:50     матрица и массив
Посмотрите здесь:

C++ Массив и матрица
Массив(Матрица). C++
массив и матрица C++
C++ Массив и матрица
Двумерный массив (матрица) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
06.12.2010, 20:13     матрица и массив #2
Подправил.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
void calc(int x[][n],int y[])
{
    int max;
    for(int i=0;i<n;i++)
    {
        max=x[i][0];
        // Цикл находит максимальное значение
        for(int j=1;j<n;j++)
        {
            if(max<x[i][j])
                max=x[i][j];
        }
        y[i]=max;
    }
}
При исполнении Вашего кода были такие моменты.
Цикл по i. y[i] пока имеет фиг знает какое значение. В цикле по j получилось так, то самое условие не выполнилось (это когда первый элемент строки/столбца был максимальным). y[i] - так и остался непредсказуемым.
К тому-же в предыдущем коде значение max у Вас переносился на следующий цикл по i.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
06.12.2010, 20:13     матрица и массив #3
Дело в этой функции.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void calc(int x[][n],int y[])
{
                int max=x[0][0];
                for(int i=0;i<n;i++)
                {
                for(int j=0;j<n;j++)
                        if(max<x[i][j])
                        {
                        max=x[i][j];
                        y[i]=max;
                        }
                }               
}
У тебя max не изменяется при переходе между строками, да и присвоение y[i]=max происходит не всегда. Пройдись дебагом, сразу увидишь.

Бессмысленная переменная max.
C++
1
2
3
4
5
6
7
8
9
10
void calc(int x[][n],int y[])
{
    for(int i=0;i<n;i++)
    {
        y[i] = x[i][0];
        for(int j=1;j<n;j++)
            if(y[i]<x[i][j])
                y[i]=x[i][j];
    }               
}
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
06.12.2010, 20:14  [ТС]     матрица и массив #4
Цитата Сообщение от Евгений М. Посмотреть сообщение
int j=1
Почему здесь 1?
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
06.12.2010, 20:16     матрица и массив #5
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
Почему здесь 1?
Нет смысла сравнивать x[i][0] с x[i][0]. Поэтому пусть начнет со элемента с вторым индексом равным 1, а не 0.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
06.12.2010, 20:17     матрица и массив #6
Потому что бессмысленно проверять нулевой элемент. Он предполагается за максимальный до начала проверки остальных элементов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2010, 20:19     матрица и массив
Еще ссылки по теме:

Многомерный массив (матрица) на С++ C++
C++ Двумерный массив-матрица
Задан массив и матрица, получить другой массив по правилу C++

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

Или воспользуйтесь поиском по форуму:
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
06.12.2010, 20:19  [ТС]     матрица и массив #7
Да да понял,спасибо всем
Yandex
Объявления
06.12.2010, 20:19     матрица и массив
Ответ Создать тему
Опции темы

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