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

Ошибка в программе. Не правильно работает. - C++

Восстановить пароль Регистрация
 
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
02.05.2012, 15:25     Ошибка в программе. Не правильно работает. #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
#include "stdafx.h" //стандартно подключенная библеотека
#include <conio.h> //для консольного ввода/вывода данных
#include <iostream> //для ввода/вывода данных
 
using namespace std;//пространство имен
 
int main()
{ 
int N,M,c=0,max=0;// объявление переменных
cout<<"Vvedite kol-vo strok massiva:";//вывод на экран текста-подсказку
cin>>N;
cout<<"Vvedite kol-vo stolbcov massiva:";//вывод на экран текста-подсказку
cin>>M;
float **A=new float *[N];// выделение памяти под двумерный массив
for (int i=0;i<N;i++)
A[i]=new float [M];
cout<<"Vvedite elementy massiva:"<<'\n';
for (int i=0;i<N;i++)// заполняем массив строками
for (int j=0;j<M;j++)// заполняем массив столбцами
cin>>A[i][j];
int index=0;
for (int i=0;i<N;i++)
{
cout<<"[";
for (int j=0;j<M;j++)
{
cout<<A[i][j]<<" ";// вывод на экран полученной матрицы
}
cout<<"]"<<endl;
}
for (int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
 
if(A[i][j]==0)// если элемент нулевой
{
    max++;
}
if(c<max)
        {
            c= max;
            index = j;
        }
    }
    max = 0;
}
 
cout<<"Index:"<<index+1<<endl;//вывод на экран индекса столбца с максим. кол-вом нулевых элементов
int *B;// объявление указателя на массив В
B=new int[N];// выделение динамической памяти под массив
for (int i=0;i<N;i++)
B[i]=A[i][index];
for (int i=0, j=N-1;i<N;i++,j--)// переставление элементов в обратном порядке
A[i][index]=B[j];
for (int i=0;i<N;i++)
{
cout<<"[";
for (int j=0;j<M;j++)
{
cout<<A[i][j]<<" ";// вывод на экран полученной матрицы
}
cout<<"]"<<endl;
}
system("pause");
delete [] A;
delete [] B;
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2012, 15:25     Ошибка в программе. Не правильно работает.
Посмотрите здесь:

C++ Что не правильно в этой программе?
C++ Как правильно написать степень в программе c++
есть график, проверьте правильно ли программа? и подскажите как задать в программе интервал? C++
Conio.h не работает в программе C++
Не работает поиск в программе C++
C++ Как правильно использовать Указатели для массива (ошибки в программе)?
C++ Не правильно работает if C++
C++ Не правильно работает!
C++ Не работает сортировка в программе
Помогите найти ошибку в программе: не правильно выводит время в структуре TRAIN C++
Правильно ли в данной программе освобождается память? C++
C++ Как правильно организовать ветвление в программе? (if / else if)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
02.05.2012, 15:44     Ошибка в программе. Не правильно работает. #2
в цикле где вы проверяете равенство элемента нулю, надо перебирать не по строкам, а по столбцам. т.е поставьте A[j][i] == 0. соответственно надо поменять местами M и N в условиях циклов.
а проверку c<max можно вынести из внутреннего цикла.

Добавлено через 5 минут
память от двумерного массива нужно освобождать в цикле, как вы его из создавали.
amfisat
 Аватар для amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 235
02.05.2012, 15:46     Ошибка в программе. Не правильно работает. #3
Небольшие изменения в цикле:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for (int i=0;i<N;i++)
    {
        for(int j=0;j<M;j++)
        {
 
            if(A[j][i]==0)// если элемент нулевой
            {
                max++;
            }
        }
            if(c<max)
            {
                c = max;
                index = i;
            }
        max = 0;
    }
Вам уже ответили - не заметила. Ну пусть будет.
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
02.05.2012, 15:50  [ТС]     Ошибка в программе. Не правильно работает. #4
Спасибо) а можете на пальцах рассказать как элементы столбца меняются?
Yandex
Объявления
02.05.2012, 15:50     Ошибка в программе. Не правильно работает.
Ответ Создать тему
Опции темы

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