Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > нужно сделать проверку для проги


Автор: deathunicorn 3.4.2009, 20:38
Прога для работы с файлом. Ищет в файле по строкам максимальное число. Помогите написать проверку для того, чтобы она не выкидывала при написаниии не числа в файле, чтобы она пропускала строку и считала дальше

Код
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <stdio.h>
#include <conio.h>
#include <fstream>
#include <iostream>

using namespace std;

int main()
{
    int max, n=1, i, j=2;

    char s[20];
cin.getline(s,20);
    ifstream infile(s);
 if (!infile)
    {
        std::cerr << "Error. File wasn't open / exist" << std::endl;
    }

    infile >> max;
    while(infile >> i)
    {
        if(max<i)
        {
            max=i; n=j;
        }
        j++;
    }

    cout << max << ' ' << n;

    getch();
    return 0;
}


Модератор: пользуйся кнопкой "Код"

Автор: zim22 3.4.2009, 21:09
Код

#include <stdio.h>
#include <conio.h>
#include <fstream>
#include <iostream>

using namespace std;

int main()
{
    int max, n=1, i, j=2;

    char s[20];
cin.getline(s,20);
    ifstream infile(s);
 if (!infile)
    {
        std::cerr << "Error. File wasn't open / exist" << std::endl;
    }

    infile >> max;
    int ig = 0;
    while(infile)
    {      
        infile >> i;
        //std::cout << i << std::endl;
        if (infile.fail() && !infile.eof())
        {          
          infile.clear();          
          infile.ignore();
          continue;
        }
        
        if(max<i)
        {
            max=i; n=j;
        }
        j++;
    }

    cout << max << ' ' << n;

    getch();
    return 0;
}

Автор: mes 3.4.2009, 21:22
Цитата(zim22 @  3.4.2009,  20:09 Найти цитируемый пост)
    while(infile)
    {      
       ..
        j++;
    }

имхо, нагляднее было бы выразить через for, а то счетчик слишком "далек" от  проверки условия.

а также непонятно почему в случае ошибки все равно доходит до считывания в переменную мах ?  smile

Добавлено через 1 минуту и 2 секунды
deathunicorn, отредактируйте пожалуйста свой код с использованием тегов CODE  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)