C++ Odczytywanie i sortowanie danych z plików *.csv

0

Witam wszystkich. To mój pierwszy post na forum i już prośba.
Mam taki projekcik na zaliczenie informatyki. Do dyspozycji są 4 pliki w .csv w których dane liczbowe i słowne oddzielone są różnymi operatorami mianowicie takimi : w 1 - " w 2- ; w 3-** ,** a w 4- dane są każda w innej komórce czyli tabulator.
Nie jestem żadnym demonem języka C. Jedynie C++ trochę liznąłem. Programowanie z poziomu kompilatora nie jest mi potrzebne póki co w życiu. Moje próby stworzenia tego kodu nie nadają się chyba nawet do wrzucenia tutaj.

Pomożecie jak się za to zabrać w szybki i prosty sposób ? Dodam, że kończy mi się czas, ten projekcik zostawiłem na koniec a sesja tuż tuż.

4

Oczekujesz pomocy czy rozwiązania za Ciebie?

  1. Jeśli pomocy: pokaż kod, staraj się zastosować do Dlaczego nikt nie odpowiada w moim wątku?
  2. Jeśli wykonania za Ciebie: http://4programmers.net/Forum/Og%C5%82oszenia_drobne (jestem w stanie wykonać zadanie za zaledwie 250zł)
0

Ok więc wrzucam wypociny, ale już na tym etapie wyczuwam kłopoty, gdyż występują pewne problemy. Jednym z nich jest np. bardzo duży zakres danych w pliku (jeden z plików ma liczbe rekordów 188tyś.)

#include<iostream>
#include<iomanip>
#include<fstream>
#include<string>

using namespace std;
int i;
struct dostawcy
		{
       char nazwa_skrot[13597];
       char numer_klienta[13597];
       char ulica[13597];
       char miejscowosc[13597];
   	    };
dostawcy dos[13597];

  struct magazynp
		{
       char nr_mag[188531];
       char nrkarty[188531];
       char nr_odpadu[188531];
       char nr_klienta[188531];
       char firma[188531];
       char jedn[188531];
       char masa[188531];
       char datad[188531];
   	    };
magazynp tab1[188531];  

struct slownik
		{
       char gr[1026];
       char podgr[1026];
       char rodz[1026];
       char typ[1026];
       char opis[1026];
       char nr_odpadu[1026];
   	    };
slownik slow[1026];

struct magazynw
		{
       char dataw[20570];
       char nrkarty[20570];
       char nr_magw[20570];
       char nr_odpadu[20570];
       char nr_klienta[20570];
       char firma[20570];
       char jedn[20570];
       char masa[20570];
   	    };
magazynw tab2[20570]; 

int main () {
    int wybierz;
    fstream dostawcy;
    fstream slownik;
    fstream magazynp;
    fstream magazynw;
    char c;
  
    
    
    while(1){
             cout <<"Program sortujacy - zaliczenie Projekt Informatyka\n"
                  <<"\n"
                  <<"Menu :\n"
                  <<"1-Wczytaj dane z pliku Dostawcy\n"
                  <<"2-Wczytaj dane z pliku MagazynP\n"
                  <<"3-Wczytaj dane z pliku MagazynW\n"
                  <<"4-Wczytaj dane z pliku Slownik\n"
                  <<"5-Odczytaj dane z pliku Dostawcy\n"
                  <<"6-Odczytaj dane z pliku MagazynP\n"
                  <<"7-Odczytaj dane z pliku MagazynW\n"
                  <<"8-Odczytaj dane z pliku Slownik\n"
                  <<"0-Wyjscie"<<endl;
             cin >>wybierz;
             switch(wybierz){
             case 1:
                  dostawcy.open("dostawcy.csv", ios::in);
                
               for(i=0;i<13597 ;i++)
					 {
  			   		   	 dostawcy.getline(dos[i].nazwa_skrot,13597,':');
 					     dostawcy.getline(dos[i].numer_klienta,13597,':');
 					     dostawcy.getline(dos[i].ulica,13597,':');
 					     dostawcy.getline(dos[i].miejscowosc,13597);
  						 dostawcy.get(c);
 					 }
                          
                 dostawcy.close ();   
                  break;
             case 2:
                 magazynp.open("magazynp.csv", ios::in);
                
               for(i=0;i<188531 ;i++)
					 {
  			   		   	 magazynp.getline(tab1[i].nr_mag,188531,'"');
 					     magazynp.getline(tab1[i].nrkarty,188531,'"');
 					     magazynp.getline(tab1[i].nr_odpadu,188531,'"');
 					     magazynp.getline(tab1[i].nr_klienta,188531,'"');
 					     magazynp.getline(tab1[i].firma,188531,'"');
 					     magazynp.getline(tab1[i].jedn,188531,'"');
 					     magazynp.getline(tab1[i].masa,188531,'"');
 					     magazynp.getline(tab1[i].datad,188531);
  						 magazynp.get(c);
 					 }
                          
                 magazynp.close ();  
                  break; 
             case 3:
                  magazynw.open("magazynw.csv", ios::in);
                
               for(i=0;i<20570 ;i++)
					 {
  			   		   	 magazynw.getline(tab2[i].dataw,20570,'"');
 					     magazynw.getline(tab2[i].nrkarty,20570,'"');
 					     magazynw.getline(tab2[i].nr_magw,20570,'"');
 					     magazynw.getline(tab2[i].nr_odpadu,20570,'"');
 					     magazynw.getline(tab2[i].nr_klienta,20570,'"');
 					     magazynw.getline(tab2[i].firma,20570,'"');
 					     magazynw.getline(tab2[i].jedn,20570,'"');
 					     magazynw.getline(tab2[i].masa,20570);
  						 magazynw.get(c);
  					}
  						 magazynw.close (); 
                  break;
             case 4:
             	 slownik.open("slownik.csv", ios::in);
                
               for(i=1;i<1026 ;i++)
					 {
  			   		   	 slownik.getline(slow[i].gr,1026,';');
 					     slownik.getline(slow[i].podgr,1026,';');
 					     slownik.getline(slow[i].rodz,1026,';');
 					     slownik.getline(slow[i].typ,1026,';');
 					     slownik.getline(slow[i].opis,1026,';');
 					     slownik.getline(slow[i].nr_odpadu,1026); 
  						 slownik.get(c);
 					 }
                          
                 slownik.close ();   
            
                  break;
        /*     case 5:
                  
                       for(i=1;i<13597;i++){
                                          cout<<dos[i].nazwa_skrot<<dos[i].numer_klienta<<dos[i].ulica<<dos[i].miejscowosc<<endl;
                                         }
                  break;
			 case 6:
                   		for(i=1;i<188531;i++){
                                          cout<<tab1[i].nr_mag<<tab1[i].nrkarty<<tab1[i].nr_odpadu<<tab1[i].nr_klienta<<tab1[i].firma<<tab1[i].jedn<<tab1[i].masa<<endl;
                                         }
                  break; 
			 case 7:
                 cout<<slow[1].gr<<slow[1].podgr<<slow[1].rodz<<slow[1].typ<<slow[1].opis<<slow[1].nr_odpadu<<endl;
                  break;  
		     case 8:
                 
                 	     for(i=1;i<1026;i++){
                                          cout<<slow[i].gr<<slow[i].podgr<<slow[i].rodz<<slow[i].typ<<slow[i].opis<<slow[i].nr_odpadu<<endl;
                                         }
                  break;  	        
             case 0:
                  return 0;
                  break;
             default: 
             cout << "Nie ma takiej opcji"<<endl;
             break;
             }   */
    }
    system("PAUSE");
    return 0; 
}
 
1

Może zacznij od przeczytania rozdziału napisy z byle kursu.
Lub zastanów się nad pkt 2 od @kq

1 użytkowników online, w tym zalogowanych: 0, gości: 1