Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zliczanie liczb w pliku tekstowym.

08 Gru 2008 21:22 2512 4
  • Poziom 9  
    WITAM,

    Witam Was moi mili programiści. Mam do napisania program, a że jestem świerzy w tej dziedzinie potrzebuje pomocy specjalistów takich jak wy. Mam do napisania program, myślę, że z dziedziny nie podchwytliwych, ale jak narazie dla mnie trochę trudny. Temat jego brzmi:

    Napisz program, który zapisze do pliku tekst wpisany z klawiatury. Następnie bezpośrednio operując na pliku policzy ile jest w tekście liczb 2, 3 i 4 cyfrowych i wypisze ich ilość na ekran. Nie używamy tablic.

    Obecnie to, co zdążyłem wyrzeźbić to:

    Code:


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

    int main()
    {
        char zdanie[100], tekst[100];
        fstream plik("plik.txt",ios::in | ios::out | ios::trunc);

        cout << "Podaj tekst:" << endl;
        cin.getline(zdanie,100, '\n');
        plik << zdanie;
        plik.close();

        plik.open("plik.txt");
        while(!plik.eof()){
           plik >> tekst;
          cout << tekst << endl;
       }
        plik.close();
    }



    I właśnie tu się zawiesiłem. Nie wiem, jak dalej pójść, aby rozwiązać ten problem programistyczny. Mam nadzieje, że mi pomożecie.

    Dziękuje z góry jak rzadko który!!!

    Regulamin, punkt 11.
    Poprawiłem temat.
    Regulamin, punkt 15.
    Proszę zwrócić uwagę na pisownię.

    [Dr.Vee]
  • Poziom 11  
    spróbuj tak:

    Code:

    #include <iostream>
    #include <fstream>

    #include <stdlib.h>

    using namespace std;

    int main()
    {
        char zdanie[100], tekst[100];
        fstream plik("plik.txt",ios::in | ios::out | ios::trunc);

        cout << "Podaj tekst:" << endl;
        cin.getline(zdanie,100, '\n');
        plik << zdanie;
        plik.close();

        int temp,licz2=0,licz3=0,licz4=0;

        plik.open("plik.txt");
        while(!plik.eof()){
           plik >> tekst;

           temp=atoi(tekst);
           if(temp<100) ++licz2;
           else if(temp<1000) ++licz3;
           else ++licz4;

          cout << tekst << endl;
       }
        plik.close();
       
        cout<<licz2<<"  "<<licz3<<"  "<<licz4;
    }
  • Poziom 9  
    Niestety nie działa program w sposób prawidłowy.

    =============

    Witam was moi mili

    Myślę, że optymalnym rozwiązaniem danego problemu będzie czytanie tekstu znak po znaku i dodawanie go do siebie w przypadku natrafienia na liczbę, czy jest to 2 czy 3 czy 4 cyfrowa liczba. Najlepiej problem wykonać na funkcjach.

    Dziękuje z góry jak rzadko który!!!

    Proszę nie pisać postu pod postem, tylko używać przycisku ZMIEŃ.
    Posty scaliłem.
    [Dr.Vee]
  • Poziom 15  
    Cytat:
    Myślę, że optymalnym rozwiązaniem danego problemu będzie czytanie tekstu znak po znaku

    dokładnie tak
    Cytat:
    i dodawanie go do siebie w przypadku natrafienia na liczbę, czy jest to 2 czy 3 czy 4 cyfrowa liczba.

    co do czego dodawać?
    dobrze jest przechowywać ilość liczb 2,3 i4 cyfrowych w jakiś int-ach. W końcu masz je tylko policzyć
    Cytat:

    Najlepiej problem wykonać na funkcjach.

    tak - choć nie jest to wymagane
  • Poziom 9  
    Witam,

    Napisałem coś takiego, ale nadal niestety nie działa poprawnie. Czy pomożecie mi w pokazaniu błędów.


    Code:


    #include <iostream>
    #include <fstream>
    #include <string> 
    using namespace std;
    int szukaj(char *w,char *t)
    {
     int i=0,j=0,M=strlen(w),N=strlen(t);
     int temp,licz2=0,licz3=0,licz4=0;


     while(j<M && i<N)
        {
        if(t[i]!=w[j]) {i-=j-1;j=-1;}
        i++;j++;
        }
     if(j==M)
     {
         
         
           if(temp<100) ++licz2;
           else if(temp<100) ++licz3;
           else ++licz4;
           }
           else return 0
           ;
           
    }

    int main()
     {
        char a[100], b[100];
        fstream plik("plik.txt",ios::in | ios::out | ios::trunc);

        cout << "Podaj tekst:" << endl;
        cin.getline(a,100, '\n');
        plik << a;
        plik.close();
     cout <<  szukaj(a,b) << endl;
     getchar();
     getchar();
     
     }