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

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

Войти
Регистрация
Восстановить пароль
 
QuanterSVETA
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 5
#1

Написать программу. не могу найти ошибку - C++

07.11.2013, 08:05. Просмотров 278. Ответов 0
Метки нет (Все метки)

Приветствую всех, мне нужно помощь в решении задачи, сам не могу поймать баг.. в целом все работает, но на деле выводит не до конца отредактированный массив. Заранее благодарен!

Задача: "Упорядочить строки целочисленной прямоугольной матрицы по возрастанию суммы модулей их элементов. Найти номер первого из столбцов, содержащих хотя бы один отрицательный элемент".

C++ (Qt)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include "conio.h"
#include "windows.h"
#include "string.h"
#include <iostream>
 
int main()
{
 
    setlocale (LC_ALL,"Russian");
    setlocale (LC_ALL, "rus");
 
    int **mas = NULL;
    int *sum = NULL;
    int r, b, key;
    int temp;
    int i = 0, a = 0, j = 0, k = 1;
 
    do
    {
        printf ("\n-----------------------------------------\n");
        printf ("\n ---> 1 - Ввод массива и обработка \n ---> 0 - Выход \n");
        key = getch();
 
        switch (key)
        {
 
        case'1':                //В этом блоке мы вводим массив и выполняем обраотку
 
            int *sums = new int[b];
 
            //////Вводим количество столбцов
            do
            {
                printf ("\n-----------------------------------------\n");
                printf ("\n Введите количество строк массива: ");
                scanf ("%d", &r);
 
                if (r <= 0)
                {
                    printf ("\n     -- Некорректное значение --\n");
                }
            }while (r <= 0);
            
            
            //////Вводим количество столбцов
            do
            {
                printf ("\n-----------------------------------------\n");
                printf ("\n Введите количество столбцов массива: ");
                scanf ("%d",&b);
 
                if (b <= 0)
                {
                    printf ("\n     -- Некорректное значение --\n");
                }
            }while (b <= 0);
 
            printf ("\n-----------------------------------------\n");
 
            mas = new int*[r];
 
            for (int i = 0; i < r; i++)
            {
                mas[i] = new int[b];
            }
 
            for (i = 0; i < r; i++)
            {
                for (j = 0; j < b; j++)
                {
                    printf ("\n Введите  A [%d][%d] = ", i, j);  //Ввод массива
                    scanf ("%d", &mas[i][j]);
                }
            }
 
            printf ("\n\n-----------------------------------------\n");
            printf ("\n   Первоначальный массив:\n\n");
 
            for (int i = 0; i < r; ++i)       //Вывод перваначального массива
            { 
                for (int j = 0; j < b; ++j) 
                {
                    printf("%-5d", mas[i][j]);
                }
                printf("\n\n");
            }
 
            ///////////
 
            for(i = 0; i < r; ++i)
            {
                int sum = 0;
                for(j = 0; j < b; ++j)
                {
                    sum = sum + abs(mas[i][j]);
                    sums[i] = sum;
                }
                bool flag = false;
 
                do
                {
                    flag = false;
                    for(i = 0; i < r; i++)
                    {
                        if(sums[i] < sums[i-1])
                        {
                            int buf = sums[i-1];
                            sums[i] = sums[i-1];
                            sums[i-1] = buf;
                            int *tmp = mas[i];
                            mas[i] = mas[i-1];
                            mas[i-1] = tmp;
                            flag = true;
                        }
                    }
                }while(flag = false);
            }
            
            printf ("\n\n-----------------------------------------\n");
            printf ("\n   Отредактированный массив:\n\n");
 
            for (int i = 0; i < r; ++i)       //Вывод отредактированного массива
            {
                for (int j = 0; j < b; ++j) 
                {
                    printf("%-5d", mas[i][j]);
                }
                printf("\n\n");
            }
        
            for(i = 0; i < r; ++i)            //Вывод номера первого столбца с отрицательным элементом
            {
                for(j = 0; j < b; ++j)
                {
                    if(mas[i][j] < 0)
                    {
                        while (a != 1)
                        {
                            printf ("\n-----------------------------------------\n");
                            printf("\n  Номер первого столбца с отрицательным элементом: %d\n", j+1);
                            a = 1;
                        }
                    }
                }
            }
 
            break;
        }
 
    }while (key !='0');
    for (int i = 0; i < r; i++)
    {
        delete [] mas[i];
    }
    delete []mas;
    delete []sum;
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2013, 08:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать программу. не могу найти ошибку (C++):

Не могу найти ошибку. Нужно написать функцию обмена значениями для 2 целых чисел. Вот мой код - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include&lt;iostream&gt; using namespace std; void F(int a, int b) { a = a + b; b = a -...

Написать программу нахождения суммы большего и меньшего из трех чисел, найти ошибку - C++
в чём ошибка? //Написать программу нахождения суммы большего и меньшего //из трех чисел. #include &lt;iostream.h&gt; #include &lt;conio.h&gt; ...

Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. Найти ошибку - C++
Ребят, такая проблема, задание: Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. ...

Найти слова, повторяющиеся более одного раза, не могу найти ошибку - C++
#include &lt;iostream&gt; using namespace std; void obr1(char **s, char **mas, int n, int m) { int i; int k; char *tm; for(i...

Массивы. Посчитать количество положительных, найти минимальное, удалить строку с минимальным (Не могу найти ошибку) - C++
// Заданы матрицы X(8;4),Y(5;5),Z(6;9). // Для каждой из матриц определить строку, в которой находится наименьшее // количество...

Проверьте программу на ошибку, не могу понять что не так - C++
#include &lt;iostream.h&gt; main() { int a, i, j, t; for(i = 0; i &lt;=10; i++) for(j = 0; i &lt;=10; i++) {if j&lt;=i || j&gt;=(11-i) a=1; ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2013, 08:05
Привет! Вот еще темы с ответами:

Не могу найти ошибку - C++
Доброго времени суток, вообщем такое задание: В одномерном массиве,состоящем из n вещественных элементов вычислить: 1. Произведение...

Не могу найти ошибку - C++
Вот моя задача и к ней я должен придумать обработку исключений Поле first - положительное целое число, цена товара, поле second -...

Не могу найти ошибку - C++
В общем суть программы состоит в том чтобы решить нелинейное уравнение x3+x2-4x-4=0 двумя методами хорд и итераций, есть исходник , вот...

Не могу найти ошибку - C++
Вот задание к которому надо придумать обработку исключительных ситуаций Поле first - положительное целое число, цена товара, поле second...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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