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

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

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

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

02.05.2012, 15:25. Просмотров 249. Ответов 3
Метки нет (Все метки)

Определить индекс столбца с максим. кол-вом нулей и переставить элементы этого столбца с обратном порядке. Вот код, не считает не правильно.
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2012, 15:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в программе. Не правильно работает. (C++):

Функция cin.get(array, 80) работает в одной программе, но не работает в другой - C++
Добрый день. Я что то совсем запутался, одна и та же функция в одной программе работает, а в другой нет. В этой программе...

Почему в библиотеке не работает то, что спокойно работает в программе? - C++
День всем добрый! Я здесь решил собрать библиотеку для конструктора игр Game Maker. Хотел поэкспериментировать. Как всегда, у...

Не могу понять почему не работает (или правильно не работает) - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #define N 5 #define M 3 void main() { int a; int i,j; cout&lt;&lt;&quot;nachalnya...

Что не правильно в этой программе? - C++
Здравствуйте все! Познаний в с++ мало, чтаю, пробую учить. В одной из книг упражнение - найти что не так, подскажите. Спасибо всем...

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

Как правильно организовать ветвление в программе? (if / else if) - C++
Доброгл времени суток. Есть вопрос - почему если я ввожу нужный мне параметр мне всплывает на экран &quot;Введите значение средств в гривнях...

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

Добавлено через 5 минут
память от двумерного массива нужно освобождать в цикле, как вы его из создавали.
0
amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 240
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;
    }
Вам уже ответили - не заметила. Ну пусть будет.
0
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
02.05.2012, 15:50  [ТС] #4
Спасибо) а можете на пальцах рассказать как элементы столбца меняются?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2012, 15:50
Привет! Вот еще темы с ответами:

Как правильно написать степень в программе c++ - C++
Нужно написать q в степени n-1

Как правильно использовать Указатели для массива (ошибки в программе)? - C++
Необходимо переписать программу правильно, чтобы использовались указатели. Помогите, пожалуйста!!! Примерный (с ошибками код): ...

Помогите найти ошибку в программе: не правильно выводит время в структуре TRAIN - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstring&gt; using namespace std; struct TRAIN { char station; int number; ...

есть график, проверьте правильно ли программа? и подскажите как задать в программе интервал? - C++
вот есть график, проверьте правильно ли программа? и подскажите как задать в программе интервал? График: И что бы он был вот...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
02.05.2012, 15:50
Ответ Создать тему
Опции темы

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