2015-11-11 2 views
0

Я новичок в программировании, поэтому у меня есть вопрос, который, вероятно, является основным. В настоящее время у меня есть текстовый файл с 365 строками ... одна строка в день в году. Это первые четыре строки файла:чтение столбцов в массив

2003 1 1 18 0 -1 36 50 46 
2003 1 2 16 3 -1 43 56 52 
2003 1 3 19 7 -1 42 56 49 
2003 1 4 14 3 -1 42 58 50 

В конце концов я должен построить график их с помощью специальной библиотеки даны нам, но сначала я хочу, чтобы поместить данные для каждого столбца в массив. Это часть моего кода, где я пытаюсь сделать именно это.

#include "library.h" 
#include <iostream> 
#include <fstream> 
#include <iomanip> 

using namespace std; 

ifstream in; 
int yr[364], mo[364], day[364], windSpeed[364], precip[364], snowDepth[364], minTemp[364], maxTemp[364], avgTemp[364]; 

void main() { 
    make_window(800, 800); 
    set_pen_color(color::red); 
    set_pen_width(8); 

// open file, read in data 
    in.open("PORTLAND-OR.TXT"); 
    if (in.is_open()) { 
     // read each column into an array 
     for (int i = 0; i < 364; i++) { 
      in >> yr[i] >> mo[i] >> day[i] >> windSpeed[i] >> precip[i] >> snowDepth[i] >> minTemp[i] >> maxTemp[i] >> avgTemp[i]; 
      cout << mo[i] << " " << day[i] << endl; 

     } 
     in.close(); 
    } 
    else { 
     cout << "error reading file" << endl; 
     exit(1); 
    } 
} 

При попытке распечатать все значения во втором и третьем столбцах (месяц и день), он начинает печать с 8 марта (3 8) по декабрь 31 (12 31). Мне нужно, чтобы он печатался полностью с 1 января по 31 декабря. Есть ли причина, по которой стоимость первых двух месяцев не печатается?

+0

Это трудно понять, что это неправильно, не видя, как массивы объявляются и как они будут напечатаны. –

+0

Опубликовать более полезный код, такой как объявление массива ,,, – RajSharma

+0

нужен входной файл, потому что я протестировал с несколькими входами и работал –

ответ

0

Ниже приведена действительно глупая основная программа, которая считывает ваш файл с помощью существующего кода чтения и снова выводит его обратно. Я вложил комментарии в код с тем, что вам следует делать.

В основном, это whaty я говорил вчера в loop not displaying all data entries from file

#include <iostream> 
#include <fstream> 

using namespace std; // bad! Avoid doing this in real life. 

int yr[364], 
    mo[364], 
    day[364], 
    windSpeed[364], 
    precip[364], 
    snowDepth[364], 
    minTemp[364], 
    maxTemp[364], 
    avgTemp[364]; // bad! define a structure instead 


/* Example: 
struct stats 
{ 
    int yr; 
    int mo; 
    int day; 
    int windSpeed; 
    int precip; 
    int snowDepth; 
    int minTemp; 
    int maxTemp; 
    int avgTemp; 
}; 

struct stats statistics[364]; // bad! use a std::vector instead 

std::vector<stats> statistics; 
*/ 

int main() 
{ 
    // removed all the windowing stuff. 
    ifstream in; 
    in.open("PORTLAND-OR.TXT"); 
    if (in.is_open()) 
    { 
     // read each column into an array 
     for (int i = 0; i < 364; i++) 
     { // what do you do if the file ends early or contains bad information? 
      in >> yr[i] >> 
        mo[i] >> 
        day[i] >> 
        windSpeed[i] >> 
        precip[i] >> 
        snowDepth[i] >> 
        minTemp[i] >> 
        maxTemp[i] >> 
        avgTemp[i]; 
     } 
     in.close(); 
    } 
    else 
    { 
     cout << "error reading file" << endl; 
     return 1; 
    } 
    // printing out all the stuff that was read 
    for (int i = 0; i < 364; i++) 
    { 
     cout << yr[i] << "," << 
       mo[i] << "," << 
       day[i] << "," << 
       windSpeed[i] << "," << 
       precip[i] << "," << 
       snowDepth[i] << "," << 
       minTemp[i] << "," << 
       maxTemp[i] << "," << 
       avgTemp[i] << endl; 
    } 
} 
Смежные вопросы