Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wczytywanie z pliku i sprawdzanie

Ostatnio zmodyfikowano 2016-01-26 16:41
Autor Wiadomość
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 :(


C/C++
#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;
}
P-144028
carlosmay
» 2016-01-26 15:14:53
C/C++
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.
P-144029
oblac
Temat założony przez niniejszego użytkownika
» 2016-01-26 15:20:10
Zmiana typu zmiennej na "char" nic nie zmienia..
P-144030
carlosmay
» 2016-01-26 15:40:55
plik.get( znak );
 tutaj pobierasz znak do zmiennej znak, a sprawdzasz czy
if( i == ')' )
 w zmiennej i jest zapisany znak ')'?
P-144031
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.

C/C++
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";
   
P-144032
carlosmay
» 2016-01-26 15:49:19
C/C++
plik.get( i ); // pobierasz znak do zmiennej 'i'
for( i = 0; i < ios::ate; i++ ) // nadpisujesz znak wartością 0
{
    if( i == ')' ) // sprawdzasz czy null to )
P-144033
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?
P-144034
carlosmay
» 2016-01-26 16:03:10
C/C++
for(; plik.get( znak ); ) {
    // wykrywanie if
    if( znak == ')' ) // zrob cos
         }
Choć ja użyłbym pętli while().
P-144035
« 1 » 2
  Strona 1 z 2 Następna strona