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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
#1

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

06.12.2010, 19:50. Просмотров 295. Ответов 6
Метки нет (Все метки)

дана квадратная матрица с размером 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++
Здравствуйте,Помогите решить пожалуйста:swoon: Буду очень благодарен) Задан массив B=\left и матрица ...

Написать класс Матрица. Массив объектов класса Массив - C++
Написать класс Матрица (в данном случае матрица – массив объектов класса Массив из предыдущего задания). В классе реализовать следующие...

дана квадратичная матрица z[n][n]. составить программу, которая если матрица симметричная(транспонированная матрица равна исходной), сделает ее не сим - C++
помогите пожалуйста. условие: дана квадратичная матрица z. составить программу, которая если матрица симметричная(транспонированная...

Массив и матрица - C++
Дано матрицу целых чисел А (n * n). Определить является ли она симметричной относительно главной диагонали. Дан массив слов....

Массив и матрица - C++
Вот такие задачи: 1) В одномерном массиве, состоящем из n целых элементов опеределить: - сумму четных элементов массива -...

массив и матрица - C++
Всем привет! Если кто знает как решить то помогите потому что у меня не получается сделать самому(я пробовал) Условие: Дана...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Евгений М.
1035 / 976 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 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
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
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
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
06.12.2010, 20:14  [ТС] #4
Цитата Сообщение от Евгений М. Посмотреть сообщение
int j=1
Почему здесь 1?
Евгений М.
1035 / 976 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
06.12.2010, 20:16 #5
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
Почему здесь 1?
Нет смысла сравнивать x[i][0] с x[i][0]. Поэтому пусть начнет со элемента с вторым индексом равным 1, а не 0.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
06.12.2010, 20:17 #6
Потому что бессмысленно проверять нулевой элемент. Он предполагается за максимальный до начала проверки остальных элементов.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
06.12.2010, 20:19  [ТС] #7
Да да понял,спасибо всем
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2010, 20:19
Привет! Вот еще темы с ответами:

Массив(Матрица). - C++
Характеристикой столбца назовем наибольшее количество идущих подряд отрицательных элементов.Вывести максимальное количество элементов в...

Двумерный массив-матрица - C++
помогите,пожалуйста. Нужно составить программу, которая выводит на экран квадратную матрицу A размером n*n . Входные данные: n – порядок...

Двумерный массив (матрица) - C++
Здравствуйте, ребята. В программе нужно поменять местами максимальный и минимальный элементы в каждом столбце матрицы. Основной код я...

двумерный массив ( матрица ) - C++
Для заданной матрицы размером 8х8. Найдите: 1). Такие j i k, когда j -я строка матрицы совпадает из k -м столбиком 2). Сумму элементов...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.12.2010, 20:19
Ответ Создать тему
Опции темы

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