Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C] Obliczenie ilości kropek w pliku tekstowym.

MORTEM 15 Maj 2004 22:25 2583 10
  • #1 15 Maj 2004 22:25
    MORTEM
    Specjalista techniki DVD

    Witam
    Czy ktoś z szanownych forumowiczów mógłby podesłać mi programik napisanych w C+ lub C++ który czytałby z pliku ile razy występuje w nim kropka?
    Za wszelką pomoc serdecznie dziękuję.

    Zamykam. - arnoldziq

  • #2 16 Maj 2004 15:59
    wizzzzard
    Poziom 10  

    A o jaki plik chodzi ??? Ma się rozumieć '*.txt' ??

  • #3 16 Maj 2004 19:47
    BoskiDialer
    Poziom 34  

    https://www.elektroda.pl/rtvforum/topic129688.html
    tam masz program do zliczania linii...

    drobna modyfikacja i jusz powinno zliczać kropki:

    Code:
    #include <stdio.h> 
    

    main()
    {
       FILE *plik;
       char* c1;
       int a=0;
       
       plik=fopen("plik.txt","rt");
       
       while(c1 != EOF)
       {
          if ((c1=fgetc(plik)) == '.') a++;
       }       
       printf("ilosc kropek: %d\n",a);
       fclose(plik);
       return 0;
    }

  • #4 16 Maj 2004 21:58
    MORTEM
    Specjalista techniki DVD

    Niestety ten program jak i poprzednie nie daje się skompilować, a jest on potrzebny na gwałt. RATUNKU!!!! POMOCY !!!!

  • #5 16 Maj 2004 23:21
    wizzzzard
    Poziom 10  

    Teraz działa wszystko poprawine... możesz sobie już normalnie skompilować i będzie grało :)

    KOD:

    #include <stdio.h>

    main()
    {
    FILE *plik;
    int c1;
    int a=0;

    plik=fopen("d:\\text.txt","rt");

    while(c1 != EOF)
    {
    if ((c1=fgetc(plik)) == '.') a++;
    }
    printf("Ilosc kropek: %d\n",a);
    fclose(plik);
    return 0;
    }

  • #6 16 Maj 2004 23:25
    wizzzzard
    Poziom 10  

    Aha i plik z którego liczysz te kropki musi być w podanej lokalizacji - czyli na D
    No chyba że sobie chcesz to zmienić, czyli zamiast D podaj inną literkę no i oczywiście odpowiednią nazwę pliku (u mnie text.txt)
    Miłego liczenie kropeczek ;)

  • #7 18 Maj 2004 14:52
    piotrek5001
    Poziom 24  

    Czy program może być pod Windowsa (c++ Builder)?

  • #8 18 Maj 2004 18:35
    MORTEM
    Specjalista techniki DVD

    Jak najbardziej może być
    Dziękuję wszystkim za zainteresowanie
    Niestety przedstawione programy nie chcą się kompilować właśnie w żadnym posiadanym przezemnie programie (Microsoft Visual C++, Turbo compiler).

  • #9 18 Maj 2004 19:08
    Bielsky
    Poziom 20  

    Może następna wersja....
    Domyślnie otwiera plik dane.txt, możesz też skompilowany program wywołać:
    program.exe nazwa_pliku_danych

    #include <iostream>
    #include <stdlib.h>
    #include <fstream>

    using namespace std;

    int main(int argc, char *argv[])
    {
    ifstream plikwej;
    char buf; //zakładam, że linia jest krótsza niż 10000 znaków
    int i=0;

    if (argc>1){
    plikwej.open(argv[1],ios::in);
    }
    else {
    plikwej.open("dane.txt",ios::in);
    };

    if (!plikwej){
    cout << endl<< "Nie udalo sie otworzyc pliku wejscioewgo \n";
    return 1;
    }

    while ( plikwej.get(buf) ){
    if (buf=='.') i++;
    }
    cout << "Liczba kropek : " <<i<< endl;
    plikwej.close();
    system("PAUSE");
    return 0;
    }

    Program kompilowałem devC++ z www.bloodshed.net,, nie zawiera jednak funkcji niestandardowych, nie powinno być problemów z innymi kompilatorami.
    Jeżeli twój kompilator używa starych norm zapisu - zmień
    #include <iostream>
    #include <fstream>
    na
    #include <iostream.h>
    #include <fstream.h>
    i wywal linijkę
    using namespace std

    Nie wiem, jak to wygląda dokładnie w visual, ale musisz ustawić w opcjach projektu coś typu "console application".

  • #10 18 Maj 2004 20:55
    MORTEM
    Specjalista techniki DVD

    :arrow: Bielsky
    Jeszcze raz serdeczne dzięki ale interesuje mnie jak najprostsza wersja takiego programu z jedną pętlą i jak najmniej komend, bez sprawdzania czy plik istnieje itd.

  • #11 19 Maj 2004 11:59
    Bielsky
    Poziom 20  

    To sobie wytnij, co niepotrzebne.

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

    main()
    {
    ifstream plikwej;
    char buf;
    int i=0;
    plikwej.open("dane.txt",ios::in);
    while ( plikwej.get(buf) ){
    if (buf=='.') i++;
    }
    cout << "Liczba kropek : " <<i<< endl;
    plikwej.close();
    }

    Prościej się nie da.

TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo