Sumowanie wartości w poszczególnych kolumnach

Sumowanie wartości w poszczególnych kolumnach

Program: wypisujący zawartość pliku na ekran, a następnie sumujący wartości w poszczególnych kolumnach.

Do działania programu został wykorzystany przykładowy plik tekstowy (nazwa “zad60.txt”) o zawartości:

Nazwisko pietro osob c.o. c.w. razem
Jankowski 1 3 1870 7920 11422
Borowski 4 4 330 10560 11178
Kaľmierczak 7 6 1485 15840 18621
Pietruszka 0 4 3025 10560 16225
Nogaj  9 3 2640 7920 12864
Kapitan  3 5 2640 13200 18144
Rostowski 2 2 4950 5280 14550
Aleksiak 1 3 1485 7920 10701
Romanowski 6 7 3300 18480 24660

Kompilator: Dev C++

Galeria:

Program w akcji.

Kod programu:

//Sumowanie wartości w poszczególnych kolumnach

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;

int main(int argc, char *argv[])
{
    stringstream ss;
    fstream plik;
    plik.open("zad60.txt");
    int length;
    plik.seekg(0,ios::end);
    length=plik.tellg();
    plik.seekg(0,ios::beg);
    char *buffer;
    buffer = new char[length];
    plik.read(buffer,length);
    cout.write(buffer,length);
    int sosob=0,sco=0,scw=0,srazem=0;
    int liczba=0,malyLicznik=0;
    for(int i=0;i<length;i++){
         if((buffer[i]>=48)&&(buffer[i]<=57)){
             ss<<buffer[i];
             } else if((buffer[i-1]>=48)&&(buffer[i-1]<=57)){
                    ss>>liczba;
                    malyLicznik++;
                    switch(malyLicznik){
                                    case 2 : sosob+=liczba; break;
                                    case 3 : sco+=liczba; break;
                                    case 4 : scw+=liczba; break;
                                    case 5 : srazem+=liczba; break;
                                    };
                                    ss.clear();
                                    };
        if(buffer[i-1]=='\n') malyLicznik=0;
    };
    cout<<"\tsumy:\t"<<sosob<<"\t"<<sco<<"\t"<<scw<<"\t"<<srazem<<"\n";
    int LiczTab=0;
    string ciag;
    ciag.clear();

    plik.close();
    system("PAUSE");
    return EXIT_SUCCESS;
}