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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ вычислительная геомтерия http://www.cyberforum.ru/cpp-beginners/thread1000334.html
Круг Даны координаты n точек (xi,yi), i=1,2,…,n (n≤100). Указать номера тех точек, которые принадлежат кругу с центром в точке (x,y) и радиусом R. Результат вывести в порядке следования вводимых данных. Если таких точек нет, напечатать “0”. Пример input.txt 3 1 1 1 2 2 3 3 3 2 output.txt
C++ нарисовать треугольник из * без if else Доброго времени суток, в книге задание нарисовать треугольник из *, причем пользователь вводит кол-во строк, не используя if else. Что-то алгоритм вообще придумать никак не могу.Например ввели 5 строк. ....* ...** ..*** .**** ***** http://www.cyberforum.ru/cpp-beginners/thread1000327.html
C++ уравнение массы переноса
Помогите написать "уравнение массы переноса". Не могу сам разобраться. нужно написать для теста: u't+u'(x)=2 u=x+t u(o,t)=t u(x,o)=x tau=0.01 h=0.1 Схема должна быть получена с помощью конечно-разностных апроксимаций производных.
C++ Определить индексы подряд расположенных положительных элементов массива
Вевсти элементи масива а. Определить индексы подряд расположенных положительных элементов массива. (щчень нужно срочно) есть код, но в нем ошибки: #include <stdio.h> #include <conio.h> #include <iostream.h> int a; int i,j,k,I; int main() { clrscr();
C++ Двумерный динамический массив - найти ошибку в коде http://www.cyberforum.ru/cpp-beginners/thread1000305.html
Кто мне может объяснить почему не работает вариант, когда мы выносим весь процесс выделения памяти под двумерный массив и заполнение оного в отдельную функцию и вызываем в конструкторе? void CRegionMapNDlg::MemoryAllocationOnArrays(UINT **pArray, int numArr, int numVar) { pArray = new UINT *; for (int i = 0; i < numArr; i++) pArray = new UINT; for (int i = 0; i < numArr; i++) {...
C++ перегрузка через friend, ошибка:( Почему-то пишет что нету доступа к приватным параметрам, но функция же friend... Пробовал уже по всяякому, никак не прокатывает #ifndef TEST_H #define TEST_H #include <iostream> class Test { public: Test(); подробнее

Показать сообщение отдельно
QuanterSVETA
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 5

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

07.11.2013, 08:05. Просмотров 271. Ответов 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru