Блог пользователя BlackStar

Автор BlackStar, 11 лет назад, По-русски

Всем привет! Буду очень благодарен за помощь в данном вопросе. На самом деле я понятия не имею, как его считывать, возможно написал полнейший бред, но это работало в запуске на кф. Пробовал вот так:

#include<iostream>
#include<cstdio>
#include<stdio.h>
using namespace std;
...
int main(){
    FILE * pFile = stdin;

// FILE * pFile = fopen("a.in","r"); - так тоже пробовал.
    freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
     m=1;
    while(true){
    fscanf(pFile,"%d",&a);
if(feof(pFile)) break;
    }
return 0;
}
  • Проголосовать: нравится
  • +1
  • Проголосовать: не нравится

»
11 лет назад, # |
Rev. 2   Проголосовать: нравится +4 Проголосовать: не нравится
while (scanf("%d", &a) == 1) {
  // do something with a
}
while (cin >> a) {
  // do something with a
}

UPD: поправил в первом while условие на ==

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Спасибо!

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +7 Проголосовать: не нравится

    В первом while должно быть либо != EOF/!= -1 (что одно и то же), либо == 1 (где 1 — количество считываемых элементов). Последнее, имхо, более корректно.

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Благодарю!

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Спасибо =), что-то упустил это. Поправил в комменте.

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      ==1 может быть и более корректно, но большой шанс забыть поменять 1 на 2, когда вдруг понадобилось добавить ещё один считываемый параметр.

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Есть такая незадача. Но тогда перестаёт работать на сэмплах.