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

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

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

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

07.11.2013, 08:05. Просмотров 272. Ответов 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;
}
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; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2013, 08:05
Привет! Вот еще темы с ответами:

Не могу найти ошибку - C++
{ char str={0}; char str2={0}; int k=0; int n=8; strcpy(str,this-&gt;Edit1-&gt;Text.c_str()); for(int i=0; str!='\0';i++) { ...

Не могу найти ошибку - C++
ошибка в строке 24..не могу исправить. Помогите, пожалуйста. #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;iostream&gt; using...

Не могу найти ошибку - C++
Здравствуйте,столкнулся с такой проблемой ,нужно было написать программу,которая определяет количество элементов,которые находятся в...

не могу найти ошибку - C++
Код програмы: #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;conio.h&gt; using namespace std; const int N=3; int main() ...


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

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

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