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

Массив. Ошибка вывода - C++

Восстановить пароль Регистрация
 
stimo15
148 / 111 / 38
Регистрация: 09.09.2011
Сообщений: 274
06.11.2012, 21:58     Массив. Ошибка вывода #1
подскажите где косяк? почему то выводит двыжды отсортированный массив.

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <stdio.h>
using namespace std;
 
int main()
{
    int a[10][10], i, j, n, k;
    int b[10], max;
 
    cout<<"N=";
    cin>>n;
 
    for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++)
        {
            cout<<"Enter A ["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];
        }
    }
 
    system("cls");
    
    for (i=0; i<n; i++)
    {
        max=a[i][j];
        for (j=0; j<n; j++)
        {
            if (a[i][j]>max) max=a[i][j];
        }
        b[i]=max;
        /*cout<<"MAX="<<max<<endl;*/
    }
 
    for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++)
        {
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
 
    cout<<"Massiv B: \n";
    for (i=0; i<n; i++)
    {
        cout<<b[i]<<" ";
    }
 
    k=0;
    for (i=0; i<n-1; i++)
    {
        for (j=0; j<n-i-1; j++)
        {
            if (b[j]>b[j+1])
            {
 
                k=b[j+1];
                b[j+1]=b[j];
                b[j]=k;
            }
        }
    }
 
    for (i=0; i<n; i++)
    {
        cout<<b[i]<<" ";
    }
 
    cout<<endl;
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2012, 21:58     Массив. Ошибка вывода
Посмотрите здесь:

Циклический сдвиг, ошибка вывода. C++
Ошибка вывода букв C++
C++ Ошибка вывода данных в файл
ошибка вывода C++
C++ Ошибка вывода строки на экран
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.11.2012, 22:02     Массив. Ошибка вывода #2
Пример приведи. Иначе не понятно, что не так.
stimo15
148 / 111 / 38
Регистрация: 09.09.2011
Сообщений: 274
06.11.2012, 22:11  [ТС]     Массив. Ошибка вывода #3
Ввожу матрицу. Нахожу максимальный элемент в каждой строке и записываю их в массив. Потом этот массив сортирую пузырьком. И выдает такое:

9 6 1
4 5 6
2 3 1

И на выходе получаю массив:

3 6 9 3 6 9

а должно то быть

3 6 9
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.11.2012, 22:16     Массив. Ошибка вывода #4
stimo15, скопировали бы текст из консоли полностью. Я хотел увидеть, где будет надпись
Цитата Сообщение от stimo15 Посмотреть сообщение
cout<<"Massiv B: \n";
А так у Вас вывод массива b в 45-ой и 65-ой строчках. Причем в первом случаи массив до сортировки.
stimo15
148 / 111 / 38
Регистрация: 09.09.2011
Сообщений: 274
06.11.2012, 22:21  [ТС]     Массив. Ошибка вывода #5
Все спасибо, разобрался, терь все путем.
mrmaster88
42 / 42 / 3
Регистрация: 13.04.2012
Сообщений: 112
06.11.2012, 22:28     Массив. Ошибка вывода #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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
using namespace std;
 
#define N 10
 
int main()
{
    int a[N][N],b[N], max;
    
    for (int i = 0;i < N;i++) {
        for (int j = 0;j < N;j++) {
            cout<<"a["<<i<<"]["<<j<<"] = ";
            cin>>a[i][j];
        }
    }
    
    for (int i = 0;i < N;i++) {
        max = a[i][0];
        for (int j = 0;j < N;j++) {
            if (a[i][j] > max) max = a[i][j];
        }
        b[i] = max;
    }
    
    for (int i = 0;i < N;i++) {
        for (int j = 0;j < N;j++) {
            if (b[j] > b[i]) {
                int temp;
                temp = b[j];
                b[j] = b[i];
                b[i] = temp;
            } 
        }
    }
    
    for (int i = 0;i < N;i++)
        cout<<b[i]<<"  ";
        
    cout<<endl;
    
    return 0;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.11.2012, 23:05     Массив. Ошибка вывода #7
Цитата Сообщение от mrmaster88 Посмотреть сообщение
в вашей программе есть вариант выхода массива за пределы,
Где именно?
mrmaster88
42 / 42 / 3
Регистрация: 13.04.2012
Сообщений: 112
07.11.2012, 13:05     Массив. Ошибка вывода #8
в реализации оператора scanf, про это в msdn можно прочитать

Добавлено через 2 минуты
Цитата Сообщение от mrmaster88 Посмотреть сообщение
в реализации оператора scanf, про это в msdn можно прочитать
не в тот пост написал))
Цитата Сообщение от go Посмотреть сообщение
Где именно?
выход при вводе N, так как массив фиксированный, то можно промахнуться
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
07.11.2012, 15:57     Массив. Ошибка вывода #9
Цитата Сообщение от mrmaster88 Посмотреть сообщение
выход при вводе N, так как массив фиксированный, то можно промахнуться
Так обычно делают новички. Смысл в том, что им нужен массив размером n <= 10. Ничего такого в этом нет. Сам алгоритм сортировки, вроде, верный.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2012, 17:58     Массив. Ошибка вывода
Еще ссылки по теме:

C++ Ошибка вывода текста на экран
Ошибка вывода на консоль C++
Ошибка вывода 2мерного массива C++

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

Или воспользуйтесь поиском по форуму:
mrmaster88
42 / 42 / 3
Регистрация: 13.04.2012
Сообщений: 112
07.11.2012, 17:58     Массив. Ошибка вывода #10
Цитата Сообщение от go Посмотреть сообщение
Ничего такого в этом нет
неточности или ошибки на начальном этапе крепко осаживаются в памяти в дальнейшем
Yandex
Объявления
07.11.2012, 17:58     Массив. Ошибка вывода
Ответ Создать тему
Опции темы

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