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

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

Войти
Регистрация
Восстановить пароль
 
 
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
#1

Программа компилируется но не работает - C++

27.08.2012, 20:11. Просмотров 938. Ответов 23
Метки нет (Все метки)

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
#include <conio.h>
#include<windows.h>
#include<iostream>
#include<time.h>
using namespace std;
int main()
{
  setlocale(0, "");
    srand(unsigned(time(NULL)));
    int N, SIZE=2,temp;
    cout<<"Введите размер матрицы: ";
    cin >> N;
    int ** matrix = new int * [N];
    for (int i = 0; i < N; i++)
        matrix [i] = new int [SIZE];
 
    for (int i = 0; i < N; i++)
        for (int j = 0; j <SIZE; j++)
            matrix[i][j] = ((rand() % 10));
                        
        
 cout << "Вот Ваша матрица:" << endl << endl;
 for (int i = 0; i < N; i++)
 {
     for(int j = 0; j < SIZE; j++)
         cout << matrix[i][j] << " ";
     cout << endl;
 }
 
 cout << endl;
 
for(int i = 0; i < SIZE; i++)
{
for(int j = 0; j < SIZE - 1; j++)
{
if(matrix[i][j + 1] < matrix[i][j])
{
temp = matrix[i][j + 1];
matrix[i][j + 1] = matrix[i][j];
matrix[i][j] = temp;
}
}
if(matrix[i + 1][0] < matrix[i][SIZE - 1])
{
temp = matrix[i + 1][0];
matrix[i + 1][0] = matrix[i][SIZE - 1];
matrix[i][SIZE - 1] = temp;
}
}
cout << "Вот Ваша матрица:" << endl << endl;
 for (int i = 0; i < SIZE; i++)
 {
     for(int j = 0; j < SIZE; j++)
         cout << matrix[i][j] << " ";
     cout << endl;
 }
  for (int i = 0; i < SIZE; i++)
            delete [] matrix[i];
        delete [] matrix;
}
Создается двумерный динамический массив, показывается и должен сортироваться пузырьком и снова показываться. но вместо этого вылетает ошибка "необработанное исключение"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2012, 20:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа компилируется но не работает (C++):

Программа компилируется но не работает - C++
После ввода программа не выдает нечего и закрывается:cry: #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;cstring&gt; using...

Почему программа компилируется но не работает? - C++
Заявки (телевизоры) поступают на проверку к 3 пунктам контроля . Если все контроллеры заняты , заявки встают в очередь . Если заявка...

Почему Visual Studio показывает ошибку, но программа компилируется и работает? - C++
template &lt;typename T&gt; struct MyType { friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;out, const MyType&lt;T&gt; &amp;object) { out &lt;&lt;...

Программа компилируется в Borland 6.0 но не компилируется в Visual Studio 2008 - C++
Ета програма компилируетса в борланде 6.0 но не компилируетса в Visualstudio 2008 и в борланде 10-м почему? #include&lt;iostream&gt; ...

Первая программа. Код не компилируется и не запускается программа. - C++
Первая программа, первая ошибка Здравствуйте! Решил учить С++. Скачал книгу Programming: Principles and Practice Using C++, Бьерн...

Не компилируется программа - C++
Привет. Прошу помочь, если это конечно возможно, не компилируется этот код в dev cpp, версия 5.11. Подскажите, что не так. Выдает такую...

23
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
27.08.2012, 23:02  [ТС] #16
все верно, но почему так то?
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
27.08.2012, 23:22 #17
Цитата Сообщение от Alt_Shift Посмотреть сообщение
все верно, но почему так то?
попробуй написать так
C++
1
int k = 0;
и тоже самое увидишь
отладчик встал ДО исполнение инициализации а не ПОСЛЕ
грубо говоря ты стоишь в начале строчки и не можешь прочитать что в этой строке
0
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
27.08.2012, 23:34  [ТС] #18
Цитата Сообщение от ValeryS Посмотреть сообщение
попробуй написать так
C++
1
int k = 0;
и тоже самое увидишь
отладчик встал ДО исполнение инициализации а не ПОСЛЕ
грубо говоря ты стоишь в начале строчки и не можешь прочитать что в этой строке
а как правильно?
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
28.08.2012, 00:41 #19
Цитата Сообщение от Alt_Shift Посмотреть сообщение
а как правильно?
в смысле ???
так и есть правильно
это просто работа с отладчиком
все что происходит в строке ты увидишь
когда курсор будет стоять на следующей строке
например
C++
1
2
3
int k=5;// вот здесь ты увидишь в k мусор
k=7+10;// вот здесь ты увидишь в k 5
 ....  // вот здесь ты увидишь в k 17
Добавлено через 6 минут
Цитата Сообщение от Alt_Shift Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (int k = 0; k<N; k++)
 {
 for(int j = 0;j < SIZE - 1; ++j) // i - номер прохода
 { 
 for(int i = 0; i < SIZE - 1; ++i) // внутренний цикл прохода
 { 
 if (matrix[k][2] < matrix[k+1][2]) 
 {
 temp = matrix[k][2]; 
 matrix[k][2] = matrix[k+1][2]; 
 matrix[k+1][2] = temp;
 }
 }
 }
 }
вот она твоя ошибка
matrix[k][2] ты берешь третий столбец (выход за пределы)
matrix[k+1][2] на последней итерации будет matrix[N][2](опять выход за пределы)
и зачем ты крутишь циклы j и i если не используешь в теле этих значений

Добавлено через 4 минуты

Добавлено через 21 минуту
если хочешь сортировать 2 столбец то наверное так
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int k=0; k<N-1; k++) // цикл проходов
 {
 for(int j =0 ;j <N-k ; j++) 
   { 
     if (matrix[j][1] > matrix[j+1][1]) 
     {
       temp = matrix[j+1][1]; 
       matrix[j+1][1] = matrix[j][1]; 
       matrix[j][1] = temp;
     }
   }
 }
"камешком"

C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int k=N-1; k>1; k--) // цикл проходов
 {
 for(int j =k-1 ;j <N-1 ; j++) 
   { 
     if (matrix[j][1] >matrix[j+1][1]) 
     {
       temp = matrix[j+1][1]; 
       matrix[j+1][1] = matrix[j][1]; 
       matrix[j][1] = temp;
     }
   }
 }
"пузырьком"

Добавлено через 15 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int k=1; k<N; k++) // цикл проходов
 {
 for(int j =N-k-1 ;j >=0 ; j--) 
   { 
     if (matrix[j][1] >matrix[j+1][1]) 
     {
       temp = matrix[j+1][1]; 
       matrix[j+1][1] = matrix[j][1]; 
       matrix[j][1] = temp;
     }
   }
 }
еще один "пузырек"
0
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
28.08.2012, 04:17  [ТС] #20
первые два не сортирую вообще Последняя сортирует но как то странно-только первые несколько строк
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
28.08.2012, 08:31 #21
Цитата Сообщение от Alt_Shift Посмотреть сообщение
Последняя сортирует но как то странно-только первые несколько строк
последний выбрось это я уже перемудрил
первые два прекрасно сортирует ошибка в инициализации циклов (ночью писал без компилятора)
1 способ
было
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
2
3
4
for (int k=0; k<N-1; k++) // цикл проходов
 {
   for(int j =0 ;j <N-k ; j++) 
    {
стало
C++
1
2
3
4
for (int k=1; k<N; k++) // цикл проходов
 {
     for(int j =0 ;j <N-k ; j++) 
      {
как видишь диапазон k сместился
2 способ
было
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
2
3
for (int k=N-1; k>1; k--) // цикл проходов
 {
 for(int j =k-1 ;j <N-1 ; j++)
стало
C++
1
2
3
for (int k=N-1; k>0; k--) // цикл проходов
 {
   for(int j =k-1 ;j <N-1 ; j++)
не обрабатывал первую(нулевую) ячейку из-за k>1 стало k>0

если интересно с третьим способом
то вечером могу покумекать, где я накосячил
1
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
28.08.2012, 17:46  [ТС] #22
Цитата Сообщение от ValeryS Посмотреть сообщение

если интересно с третьим способом
то вечером могу покумекать, где я накосячил
Спасибо, меня вполне устраивает пузырек А как бы теперь этому массиву дать возможность добавлять новые элементы ставя их в очередь приоритет которой по второму столбцу?

Добавлено через 52 минуты
Цитата Сообщение от Alt_Shift Посмотреть сообщение
Спасибо, меня вполне устраивает пузырек
сори...сразу просмотрел Она все равно не правильно сортирует. первый столбец остается без изменений, то есть если в данный момент это делается как
до:
5 8
2 5
9 2
6 7

после:
5 2
2 5
9 7
6 8

а элементы должны как бы всплывать вверх то есть после сортировки результут должен был быть

9 2
2 5
6 7
5 8
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
28.08.2012, 18:09 #23
Цитата Сообщение от Alt_Shift Посмотреть сообщение
сортировка происходила по второму столбцу
Цитата Сообщение от Alt_Shift Посмотреть сообщение
первый столбец остается без изменений,
ты уж определись сортировать первый или нет?
Цитата Сообщение от Alt_Shift Посмотреть сообщение
а элементы должны как бы всплывать вверх то есть после сортировки результут должен был быть
9 2
2 5
6 7
5 8
вообще не понял что ты привел, первый то не сортирован
дай полное ТЗ

Цитата Сообщение от Alt_Shift Посмотреть сообщение
дать возможность добавлять новые элементы ставя их в очередь приоритет которой по второму столбцу?
переведи
0
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
28.08.2012, 18:23  [ТС] #24
Цитата Сообщение от ValeryS Посмотреть сообщение
ты уж определись сортировать первый или нет?

вообще не понял что ты привел, первый то не сортирован
тут уже неактуально) сам допер, вид цикла сортировки просто должен быть

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (int k=N-1; k>0; k--) // цикл проходов
 {
   for(int j =k-1 ;j <N-1 ; j++) 
   {
     if (matrix[j][1] >matrix[j+1][1]) 
     {
       temp = matrix[j+1][1]; 
       temp2=matrix[j][0];
       matrix[j+1][1] = matrix[j][1]; 
       matrix[j][0]=matrix[j+1][0];
       matrix[j][1] = temp;
       matrix[j+1][0]=temp2;
     }
   }
 }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2012, 18:23
Привет! Вот еще темы с ответами:

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

Не компилируется программа - C++
Здорова! Не компилируется программа: #include &lt;iostream&gt; using std::cout; using std::endl; class class1 //базовый класс для...

Не компилируется программа - C++
------ Построение начато: проект: Rapid Roll, Конфигурация: Debug Win32 ------ Компиляция... raiders3d.cpp c:\rapid...

Программа не компилируется - C++
Установил Borland С+++ 5,5 в папку C:\BCC, в папке bin как положено создал bcc32.cfg и link32.cfg как полагается с соответствующим...


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

Или воспользуйтесь поиском по форуму:
24
Yandex
Объявления
28.08.2012, 18:23
Ответ Создать тему
Опции темы

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