|
Вопрос # 5 950/ вопрос решён / |
|
Здравствуйте!
Недавно начал изучать C++. Использую Microsoft Visual Studio 2010. По работе надо писать программку, долгая история)
Есть код, посмотрите, при отладке выдает ошибку, в чем проблема разобраться не могу. При отладке все нормально до последнего момента.
Благодарен за развернутый и доступный ответ / совет )
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Приложение: Переключить в обычный режим-
-
-
-
-
-
-
-
-
-
- float *mas;
- int razmer_arr;
-
-
- cout << "rezmer massiva" << "\n";
- cin >> razmer_arr;
- mas = new float[razmer_arr];
-
-
-
-
-
-
-
-
- }
-
-
-
-
- if(x1>=x+0.0020 && f==0){
- f=1;
- if(x1>=x+0.0070 && f==1){
- f=2;
- if(x1>=x+0.0090 && f==2){b++;f=0;g=0;}
- }
- if(x1<=x-0.0020 && f==1){c++;f=0;g=0;}
- }
-
-
- delete [] mas;
- getch();
- }
- }
-
-
-
-
-
 |
Вопрос задал: merkulov.artem (статус: Посетитель)
Вопрос отправлен: 13 февраля 2012, 14:17
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, merkulov.artem!
Нашел пару ошибок в коде. Привожу исправленный вариант
#include <iostream>
#include <fstream>
// conio наверное уже не нужен...
using namespace std;
int main() { // главная функция
int b=0; // представление переменной b, счетчик положительных значений.
int c=0; // представление переменной c, счетчик отрицательных значений.
int f=0; // представление переменной f.
int g=0; // представление переменной g.
float *mas;
int razmer_arr;
double x=0;
double x1=0;
cout << "rezmer massiva" << "\n";
cin >> razmer_arr;
mas = new float[razmer_arr];
ifstream infile("data.txt");
int j=0;
int col_numb=0;
while(!infile.eof() && j < razmer_arr) { // условие уточнено. Иначе нужно было угадывать кол-во элементов
infile >> mas[j]; // теперь читается указанное кол-во элементов, но не более, чем есть в файле
j++; // вообще то здесь j не нужно, ведь есть col_numb
col_numb++;
}
for(int i=0; i<col_numb; i++) { // здесь было плохое условие, и как следствие был выход за пределы
массива
x = mas[i];
if(g==0) {
x1 = mas[i];
g=1;
}
if(x1>=x+0.0020 && f==0) {
f=1;
if(x1>=x+0.0070 && f==1) {
f=2;
if(x1>=x+0.0090 && f==2) {
b++;
f=0;
g=0;
}
}
if(x1<=x-0.0020 && f==1) {
c++;
f=0;
g=0;
}
}
if(b==10) {
cout << b << "\n"; // при достижении максимальных значений с
}
if(c==10) {
cout << c << "\n";
}
}
delete[] mas; // память освобождалась дважды - так как эта строка была в цикле:)
}
Но вот ничего не выводит программа... Но никто не говорил, что именно она должна выводить.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 14 февраля 2012, 12:50
Оценка за ответ: 5
Комментарий к оценке: Огромное спасибо!
p.s. буду дальше грызть гранит науки.
|
Мини-форум вопроса
Всего сообщений: 0.
14 февраля 2012, 18:39: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Ответ удовлетворил, судя по всему.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|