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

После выполнения операций отладка закрывается - C++

Восстановить пароль Регистрация
 
vadrus
22 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 18
11.01.2013, 12:05     После выполнения операций отладка закрывается #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
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
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <cmath>
 
double average(int ** matrix, int rows, int cols)
{
    double sum = 0.0, avg = 0.0;
    
    for(int i = 1; i <= rows; ++i)
    {
        for(int j = 1; j <= cols; ++j)
        {
            sum += matrix[i][j];
        }
    }
    
    return sum / (rows * cols);
}
 
void fill_matrix(int ** matrix, int rows, int cols)
{
    for(int i = 1; i <= rows; ++i)
    {
        for(int j = 1; j <= cols; ++j)
        {
            matrix[i][j] = rand() % 100;
        }
    }
}
 
void output_matrix(int ** matrix, int rows, int cols)
{
    for(int i = 1; i <= rows; ++i)
    {
        for(int j = 1; j <= cols; ++j)
        {
            std::cout << std::setw(4) << matrix[i][j] << " ";
        }
        std::cout << "\n";
    }
}
      
int main()
{
    srand(static_cast<unsigned int>(time(0))); 
    
    double rows, cols;
    float a,b;
    std::cout << "Enter rows: ";
    std::cin >> rows;
    b=rows-(int)rows;
    if (b>0)
    { 
    printf ("Error, please try again rows");
    std::cin >> rows;
    } else
    while((rows != (int)rows)||(rows<=0))
    { 
    printf ("Error, please try again rows");
    std::cin >> rows;
    }
    std::cout << "Enter cols: ";
    std::cin >> cols;
    a=cols-(int)cols;
    if (a>0)
    { 
    printf ("Error, please try again cols");
    std::cin >> cols;
    } else
 
    while((cols != (int)cols)||(cols<=0))
    { 
    printf ("Error, please try again cols");
    std::cin >> cols;
    }
    int ** matrix = new int * [(int)rows];
 
    for(int i = 1; i <= rows; ++i)
        matrix[i] = new int[(int)cols];
        
    
    fill_matrix(matrix, rows, cols);
    std::cout << "\nMatrix:\n";
    output_matrix(matrix, rows, cols);
    
    double avg = average(matrix, rows, cols);
    std::cout << "\nAverage = " << avg << "\n";
    
    double min = fabs(matrix[1][1] - avg), temp;
    int i_min = 0, j_min = 0;
    
    for(int i = 1; i <= rows; ++i)
    {
        for(int j = 0; j <= cols; ++j)
        {
            temp = fabs(matrix[i][j] - avg);
            if(temp < min)
            {
                min = temp;
                i_min = i;
                j_min = j;  
            }
        }
    }
    
    std::cout << "\nNearest: matrix[" << i_min << "][" << j_min << "] = " 
        << matrix[i_min][j_min] <<  "(difference = " << min << ")\n";
   
    for(int i = 0; i <= rows; ++i)
        delete [] matrix[i];
        
    delete [] matrix;
   
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
11.01.2013, 12:28     После выполнения операций отладка закрывается #2
перед return 0 поставьте system ("PAUSE");

Добавлено через 8 минут
У вас часто идет преобразование чисел. Может вы выходите за границы массива. Делайте все через double и проверку на выход за границы
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
11.01.2013, 12:34     После выполнения операций отладка закрывается #3
Цитата Сообщение от vadrus Посмотреть сообщение
for(int i = 1; i <= rows; ++i)
Индексы в массивах идут от 0 до rows-1
Less
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 53
11.02.2013, 14:59     После выполнения операций отладка закрывается #4
Аналогичная проблема, ни system ("PAUSE"); ни getchar() не помогают

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
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
163
164
165
#undef UNICODE
#undef _UNICODE
 
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "IOSTREAM"
#include "iomanip"
#include "windows.h"
#include <conio.h>
 
using namespace std;
 
void books();
void periodical();
void less20();
void textbooks();
void other();
void magazines();
void newspapers();
 
 
void main()//главная функция – М1
{setlocale(LC_ALL,"Russian"); // отображения на русском языке, включение нужной кодировки для консоли
    int a=0;
    cout<<endl;
    cout<<"\t Добро пожаловать в магазин BOOKER!"<<endl;
    cout<<endl;
    cout<<"Нажмите 2 – если хотите просмотреть информацию о книгах"<<endl;  cout<<"Нажмите 3 – если хотите просмотреть информацию о периодических изданиях "<<endl;
    cout<<endl;
    cout<<" Вы выбрали: "; cin>>a;
    cout<<endl;
    if(a==2)
        books();//переход к М2
    if(a==3)
        periodical();//переход к М3
}
void books() //функция для М2
{
    int b=0;
    cout<<"\t Нажмите 4 – если хотите просмотреть информацию об учебниках "<<endl;
    cout<<"\t Нажмите 5 – если хотите просмотреть информацию о другой литературе "<<endl;
    cout<<endl;
    cout<<"Вы выбрали: "; cin>>b;
    cout<<endl;
    if(b==4)
    {
        textbooks();//переход к М4
    }
    if(b==5)
    {
        other();//переход к М5
    }
    exit(2);
}
void periodical()//функция для М3
{
    int c=0;
    cout<<"\t Нажмите 6 – если хотите просмотреть информацию о газетах"<<endl;
    cout<<"\t Нажмите 7 – если хотите просмотреть информацию журналах"<<endl;
    cout<<endl;
    cout<<"Вы выбрали: "; cin>>c;
    cout<<endl;
    if(c==6)
    {
        newspapers();//переход к М6
    }
    if(c==7)
    {
        magazines();//переход к М7
    }
}
void textbooks()//функция для М4
{
    //информация об учебниках
    cout<<"\t Автор            \t Название                                 \t Цена"<<endl;
    cout<<"\t Довбуш        \t Visual C++                               \t 290 руб"<<endl;
    cout<<"\t C.Holsner      \t Visual C++ 6.0                        \t 200 руб"<<endl;
    cout<<"\t V.Podbelskiy \t Программирование на  C++ \t 300 руб"<<endl;
    cout<<endl;
    exit(4);
}
void other()//функция для М5
{
    int d=0;
    cout<<"\t Нажмите 8 – если хотите узнать о продажах в текущем месяце"<<endl;
    cout<<"\t Нажмите 9 – если хотите узнать о продажах в предыдущем месяце "<<endl;
    cout<<endl;
    cout<<"Вы выбрали: "; cin>>d;
    cout<<endl;
    if(d==8)//переход к М8
    {   
        //информация о продажх в текущем месяце
        cout<<"\t Вид литературы  \t Продано(шт)   \t Цена"<<endl;
        cout<<endl;
        cout<<"\t Научная                 \t 25                   \t 5532  руб"<<endl;
        cout<<"\t Романы                  \t 250                 \t 15010 руб "<<endl;
        cout<<"\tДетективы              \t 380                 \t 16035 руб "<<endl;
        cout<<endl;
        exit(8);
    }
    if(d==9)//переход к М9
    {
        //информация о продажх в предыдущем месяце
        cout<<"\t Вид литературы  \t Продано(шт)  \t Цена"<<endl;
        cout<<endl;
        cout<<"\t Научная                 \t 25                   \t 11064 руб"<<endl;
        cout<<"\t Романы                  \t 250                 \t 7005 руб "<<endl;
        cout<<"\tДетективы              \t 380                 \t 33000 руб "<<endl;
        cout<<endl;
        exit(9);
    }
}
void magazines()//функция для М7
{
    int e=0;
    cout<<"\t Нажмите 10 – издания, стоимость которых меньше 20 руб"<<endl;
    cout<<"\t Нажмите 11 – издания, стоимость которых больше 20 руб и меньше 100 руб"<<endl;
    cout<<" \t Нажмите 10 – издания, стоимость которых больше 100 руб "<<endl;
    cout<<endl;
    cout<<" Вы выбрали: "; cin>>e;
    cout<<endl;
    if(e==10)
        less20();//переход к М10 
    if(e==11)//переход к М11 
    {
        cout<<"\t Вид          \t Название   \t Стоимость"<<endl;
        cout<<endl;
        cout<<"\t журнал   \t Gamer         \t 85 руб"<<endl;
        cout<<"\t журнал    \t Люди         \t 55 руб"<<endl;
        cout<<endl;
        exit(11);
    }
    if(e==12)//переход к М12
    {
        cout<<"\t Вид           \t Название   \t Стоимость"<<endl;
        cout<<endl;
        cout<<"\t журнал    \t Motors         \t 150 руб"<<endl;
        cout<<"\t журнал    \t Мир ПК      \t 115 руб"<<endl;
        cout<<endl;
        exit(12);
    }
}
void newspapers()//функция для М6
{
    int k=0;
    cout<<" \t Нажмите 10 – издания, стоимость которых меньше 20 руб "<<endl;
    cout<<endl;
    cout<<"Вы выбрали: "; cin>>k;
    cout<<endl;
    if(k==10)
        less20();//переход к М10
    else
        exit(6);//выход из М6
}
void less20()//функция для М10
{
cout<<"\t Вид          \t Название      \t Стоимость"<<endl;
    cout<<endl;
    cout<<"\t газета       \t КП                \t 7,5 руб"<<endl;
    cout<<"\t журнал     \t Кухня           \t 19,99 руб"<<endl;
    cout<<endl;
    exit(10);
    
    return;}
Добавлено через 11 минут
Цитата Сообщение от Less Посмотреть сообщение
Аналогичная проблема, ни system ("PAUSE"); ни getchar() не помогают

ctrl+F5 спасло
Yandex
Объявления
11.02.2013, 14:59     После выполнения операций отладка закрывается
Ответ Создать тему
Опции темы

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