Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 950

Раздел: C++
/ вопрос решён /

Здравствуйте!
Недавно начал изучать C++. Использую Microsoft Visual Studio 2010. По работе надо писать программку, долгая история)
Есть код, посмотрите, при отладке выдает ошибку, в чем проблема разобраться не могу. При отладке все нормально до последнего момента.
Благодарен за развернутый и доступный ответ / совет )

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11. float *mas;
  12. int razmer_arr;
  13.  
  14.  
  15. cout << "rezmer massiva" << "\n";
  16. cin >> razmer_arr;
  17. mas = new float[razmer_arr];
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26. }
  27.  
  28.  
  29.  
  30.  
  31. if(x1>=x+0.0020 && f==0){
  32. f=1;
  33. if(x1>=x+0.0070 && f==1){
  34. f=2;
  35. if(x1>=x+0.0090 && f==2){b++;f=0;g=0;}
  36. }
  37. if(x1<=x-0.0020 && f==1){c++;f=0;g=0;}
  38. }
  39.  
  40.  
  41. delete [] mas;
  42. getch();
  43. }
  44. }
  45.  
  46.  
  47.  
  48.  
  49.  


merkulov.artem Вопрос решён, но можно продолжить его обсуждение в мини-форуме

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

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:51
Выполнено за 0.03 сек.