Wczytywanie z pliku i sprawdzanie
Ostatnio zmodyfikowano 2016-01-26 16:41
oblac Temat założony przez niniejszego użytkownika |
Wczytywanie z pliku i sprawdzanie » 2016-01-26 14:55:05 Program sprawdzający czy nawias zamykający nie pojawia się przed otwierającym w pliku źródłowym C++. Stworzyłam plik txt, do którego wkleiłam kod innego programu, zapisałam go w tym samym folderze co program. Mój "schemat myślenia" jest następujący: 1. Otwieram plik do odczytu w C++ 2. Przy po mocy pętli for pobieram dane z pliku znak po znaku 3. Instrukcją warunkową if porównuję znak z nawiasem zamykającym 4. Ifem porównuję następnik znaku z nawiasem otwierającym 5. Jeśli nawias zamykający jest przed otwierającym wyświetla się błąd. W przeciwnym razie ok. 6. Zamykam plik. Niestety coś tutaj nie poszło, bo jedyne co dostałam, to "Process returned". Proszę o help :( #include<iostream> #include<fstream> #include<string>
using namespace std;
int main() { fstream plik; char znak; plik.open( "kod.txt", ios::in ); if( plik.good() ) { plik.get( znak ); for( int i = 0; i < ios::ate; i++ ) { if( i == ')' ) if(( i + 1 ) == '(' ) cout << "Blad"; else cout << "Ok"; } plik.close(); } else cout << "Blad otwierania pliku"; return 0; }
|
|
carlosmay |
» 2016-01-26 15:14:53 for( int i = 0; i < ios::ate; i++ ) { if( i == ')' ) if(( i + 1 ) == '(' ) |
zmienna 'i', którą porównujesz do znaku to licznik pętli, nic więcej. |
|
oblac Temat założony przez niniejszego użytkownika |
» 2016-01-26 15:20:10 Zmiana typu zmiennej na "char" nic nie zmienia.. |
|
carlosmay |
» 2016-01-26 15:40:55 tutaj pobierasz znak do zmiennej znak, a sprawdzasz czy w zmiennej i jest zapisany znak ')'? |
|
oblac Temat założony przez niniejszego użytkownika |
» 2016-01-26 15:43:34 Racja, racja. Ale po zmianie wciąż nie działa. Ech, wybacz mi moją ułomność, kiedy inni ludzie uczyli się C++, mi robili kartkówki z Excela. int main() { fstream plik; char i; plik.open( "kod.txt", ios::in ); if( plik.good() ) { plik.get( i ); for( i = 0; i < ios::ate; i++ ) { if( i == ')' ) if(( i + 1 ) == '(' ) cout << "Blad"; else cout << "Ok"; } plik.close(); } else cout << "Blad otwierania pliku";
|
|
carlosmay |
» 2016-01-26 15:49:19 plik.get( i ); for( i = 0; i < ios::ate; i++ ) { if( i == ')' )
|
|
|
oblac Temat założony przez niniejszego użytkownika |
» 2016-01-26 15:52:10 Czyli powinnam użyć funkcji początku pliku/pierwszego znaku określając początek działania pętli? |
|
carlosmay |
» 2016-01-26 16:03:10 for(; plik.get( znak ); ) { if( znak == ')' ) } Choć ja użyłbym pętli while(). |
|
« 1 » 2 |