Tymek Temat założony przez niniejszego użytkownika |
Statyski Tekstu » 2011-01-16 21:48:55 #include <iostream> #include <fstream> #include <string> #include <conio.h>
using namespace std;
int chars; int words; int sentences; int letters; int numbers; int lines; int indention;
bool goOn = true; int option = - 1; ifstream file; string fileName;
bool isPunctuationMark( char c ) { return( c == '.' || c == '?' || c == '!' ); }
bool isLetter( char c ) { return(( c >= 'a' && c <= 'z' ) ||( c >= 'A' && c <= 'Z' ) ||(( unsigned char ) c >= 0xC0 ) ); }
void title() { cout << " ## # # # # # # # #" << endl; cout << "# ### ## ### # # ## ### # # # # ### ### # # ## ### # #" << endl; cout << " # # # # # ### # # ### ## # # ## ## # # # #" << endl; cout << " # ## ### ## # ## ## # # # ## ## ### # # ## ## ###" << endl; cout << "## ### ### Autor: xxxx" << endl; cout << "___________________________________________________________________" << endl; cout << endl; }
void menu() { cout << "1. Wczytaj plik"; if( file.is_open() ) cout << " Wczytany plik: " << fileName; cout << endl; cout << "2. Wyswietl zawartosc pliku" << endl; cout << "3. Pokaz statystyki" << endl; cout << "4. Koniec" << endl; cout << "Wybierz opcje: "; cin >> option; }
void openFile() { system( "cls" ); title(); cout << "Podaj nazwe pliku (0 aby wyjsc): "; cin >> fileName; if( fileName == "0" ) option = - 1; else { if( file.is_open() ) file.close(); file.open( fileName.c_str(), ifstream::in ); if( !file.is_open() ) { system( "cls" ); title(); cout << "Blad otwaria pliku (nacisnij dowolny klawisz aby kontynuowac)"; getch(); } else { option = - 1; } } }
void display() { system( "cls" ); title(); if( file.is_open() ) { while( !file.eof() ) { char c = file.get(); if( file.good() ) cout << c; } file.clear(); file.seekg( 0, ios::beg ); cout << endl << endl << "Nacisnij dowolny klawisz aby kontynuowac"; } else { cout << "Nie wczytano zadnego pliku (nacisnij dowolny klawisz aby kontynuowac)"; } option = - 1; getch(); }
void statistics() { system( "cls" ); title(); if( file.is_open() ) { chars = words = sentences = letters = numbers = lines = indention = 0; char prev_c = ' '; while( !file.eof() ) { char c = file.get(); if( file.good() ) { if( !isspace( c ) ) chars++; if( isspace( prev_c ) && !isspace( c ) ) words++; if( isPunctuationMark( c ) && !isPunctuationMark( prev_c ) ) sentences++; if( isLetter( c ) ) letters++; if( isdigit( c ) ) numbers++; if( c == '\n' ) lines++; if( c == '\t' && prev_c != '\t' ) indention++; prev_c = c; } } file.clear(); file.seekg( 0, ios::beg ); cout << "Statystyki: " << endl; cout << "-znaki: " << chars << endl; cout << "-wyrazy: " << words << endl; cout << "-zdania: " << sentences << endl; cout << "-litery: " << letters << endl; cout << "-cyfry: " << numbers << endl; cout << "-linie: " << lines << endl; cout << "-akapity: " << indention << endl; cout << endl << endl << "Nacisnij dowolny klawisz aby kontynuowac"; } else { cout << "Nie wczytano zadnego pliku (nacisnij dowolny klawisz aby kontynuowac)"; } option = - 1; getch(); }
void close() { system( "cls" ); title(); cout << "Czy napewno chcesz wyjsc? (t/n): "; char quit; cin >> quit; if( quit == 't' || quit == 'T' ) { if( file.is_open() ) file.close(); goOn = false; } else if( quit == 'n' || quit == 'N' ) { option = - 1; } else { system( "cls" ); title(); cout << "Wybrano niewlasciwa opcje (nacisnij dowolny klawisz aby kontynuowac)"; getch(); } }
int main() { while( goOn ) { if( option == - 1 ) { system( "cls" ); title(); menu(); } else { switch( option ) { case 1: openFile(); break; case 2: display(); break; case 3: statistics(); break; case 4: close(); break; default: system( "cls" ); title(); cout << "Wybrano niewlasciwa opcje (nacisnij dowolny klawisz aby kontynuowac)"; getch(); break; } } } return 0; }
Projekt wczytuje plik tekstowy i ma za zadanie zliczyć ilość znaków w tekście (oprócz białych) ilość wyrazów zdań liter cyfr wierszy w tym samym folderze znajdywać się musi plik tekst.txt przykładowy tekst II wojna światowa – największy konflikt zbrojny w historii świata, trwający od 1 września 1939 do 2 września 1945 (w Europie do 8 maja 1945), obejmujący zasięgiem działań wojennych prawie całą Europę, wschodnią i południowo-wschodnią Azję, północną Afrykę, część Bliskiego Wschodu i wszystkie oceany. Niektóre epizody wojny rozgrywały się nawet w Arktyce i Ameryce Północnej. Poza większością państw europejskich i ich koloniami, brały w niej udział --------------------- co o tym sądzicie , poprawić coś , ulepszyć , upiększyć?:D mam go jutro oddać bądź za tydzień i sam nie wiem czy jeszcze mu czegoś nie dodać ;d |
|
ison |
» 2011-01-16 22:06:57 oddajesz sam plik wykonywalny czy kod również? Wypadałoby się zastosować do const-correctness do krótkich funkcji w Twoim kodzie możesz zastosować inline (chociaż i tak pewnie kompilator sam to zrobi) masz literówkę w kodzie |
|
malan |
» 2011-01-16 23:01:57 WTF?! Napisać od nowa :) Zapoznać się z funkcjami i zmiennymi lokalnymi! Globale na stos! Lepiej może nie... :) mam go jutro oddać bądź za tydzień i sam nie wiem czy jeszcze mu czegoś nie dodać ;d |
Za tydzień. |
|
dmx81 |
» 2011-01-19 21:36:17 w funkcji display w komentarzu zmień "dopuki" na dopóki:P znasz c++ a nie znasz polskiego ?? ;)
a poza tym to zalezy co bedzie oceniane? ma poprostu dzialac? (czyli jak kolega wyzej pisal - nie oddajesz kodu zrodlowego) czy ma byc napisane w optymalny sposob (nie liczac optymalizacji jaka zapeni kompilator lecz) a moze uzyc jakiegos okreslonego mechanizmu/stylu pisania
bo tak to nikt nie wie jak ma odpowiedziec, jeden napisze zeby przepisac i obiektowo napisac, kto inny innych funkcji by uzyl itd - jesli dziala to juz masz plus, jesli przygladales sie uwaznie kilka razy analizujac kod i nie znalazles lepszego wyjscia - to poprostu napisales na takim poziomie, na jakim potrafisz no i to zostanie ocenione, bo chyba o to w tym chodzi :) a jak pytasz o upiekszanie, to tez nie wiadomo co chcesz zrobic, wiecej podkreslen lub krzaczkowych napisow? a moze biblioteke newcurses i kolorowo w konsoli ;)
to jest twoj kod i niech taki zostanie jesli dziala:) to jest moje zdanie, jesli nie podejmowales sie pisania klas, to pewnie nie za bardzo masz "wpojone" programowanie obiektowe, wiec na za tydzien raczej nie przerobisz kodu, wiec jesli nie bylo to wymogiem, to zostaw :) bo widac ze dajesz rade sobie z funkcjami bibliotecznymi i robieniem swoich .... ale sie rozpisalem
|
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-01-20 00:53:11 nie miałem jeszcze programowania obiektowego , a sprawdzenie wygląda tak ze oglądany jest kod , zadawane pytania , czy się kompiluje , czy spełnia wymogi xd |
|
jsc |
» 2011-01-20 02:12:28 Co do wyglądu kodu to prostu przeładowałeś go komentarzami, zastanów się, które są pomocne, a które nic nie wnoszą do wiedzy o przeciętnej wiedzy o języku C++. |
|
dmx81 |
» 2011-01-20 17:16:40 chociaz z drugiej strony nie wiadomo, jak bedzie na to patrzyl sprawdzajacy - dla niektorych - im wiecej wypisane (o ile z sensem) to lepiej - w sensie, ze wszytsko ma objasnione. oczywiscie na codzien chyba nikt nie opisuje praktycznie kazdej linijki, tylko np do czego bedzie sluzyla funkcja i jakies elementy kodu wymagajace wyjasnienia, bo reszta jak np: static_cast u ciebie byloby opisane - rzutowanie na cos tam - na codzien tego sie nie pisze, bo to oczywiste, z kolei prowadzacy zajecia moze byc z tego zadowolony - bo swiadomie uzywasz rzutowania, a nie bo przepisales to np z przykladu z ksiazki. dlatego trudno wyczuc - sam wiesz najlepiej, na pewno najwiekszym wyznacznikiem bedzie sprawnie dzialajacy kod, po drugie umiejenosc objasnienia kodu, a reszta to juz w tym przypadku chyba sprawy kosmetyczne (tak mi sie wydaje) |
|
« 1 » |