| 
| 
 | Вопрос # 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: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Ответ удовлетворил, судя по всему. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |