Spełnienie warunku wielokrotnego (czy jak to sie tam nazywa).
Ostatnio zmodyfikowano 2011-07-02 16:35
Johnny Temat założony przez niniejszego użytkownika |
Spełnienie warunku wielokrotnego (czy jak to sie tam nazywa). » 2011-07-02 11:41:24 Witam, mam problem z pewnym swoim programem a mianowicie nie mogę rozwiązać błędu jaki się w nim znalazł.
Chodzi o warunek w strukturze [do{}while()] :
#include <iostream> #include <stdio.h> #include <conio.h> #include <windows.h> #include <ctime> #include <fstream>
using namespace std;
class Sprawdz { public: bool zero(); bool jeden(); bool dwa(); bool trzy(); bool cztery(); bool piec(); bool szesc(); bool siedem(); bool osiem(); };
int test = 0; int test2 = 0; int numer[ 9 ]; unsigned char key;
bool Sprawdz::zero() { if( numer[ 0 ] == 0 ) return( 0 ); else if( numer[ 0 ] > 0 ) return( 1 ); }
bool Sprawdz::jeden() { if( numer[ 1 ] == 0 ) return( 0 ); else if( numer[ 1 ] > 0 ) return( 1 ); }
bool Sprawdz::dwa() { if( numer[ 2 ] == 0 ) return( 0 ); else if( numer[ 2 ] > 0 ) return( 1 ); }
bool Sprawdz::trzy() { if( numer[ 3 ] == 0 ) return( 0 ); else if( numer[ 3 ] > 0 ) return( 1 ); }
bool Sprawdz::cztery() { if( numer[ 4 ] == 0 ) return( 0 ); else if( numer[ 4 ] > 0 ) return( 1 ); }
bool Sprawdz::piec() { if( numer[ 5 ] == 0 ) return( 0 ); else if( numer[ 5 ] > 0 ) return( 1 ); }
bool Sprawdz::szesc() { if( numer[ 6 ] == 0 ) return( 0 ); else if( numer[ 6 ] > 0 ) return( 1 ); }
bool Sprawdz::siedem() { if( numer[ 7 ] == 0 ) return( 0 ); else if( numer[ 7 ] > 0 ) return( 1 ); }
bool Sprawdz::osiem() { if( numer[ 8 ] == 0 ) return( 0 ); else if( numer[ 8 ] > 0 ) return( 1 ); }
int main() { Sprawdz suma; fstream plik; plik.open( "data.txt", ios::out | ios::in | ios::app ); srand( time( NULL ) ); wybieranie: do { srand( time( NULL ) ); key =(( rand() % 9 ) + 48 ); test2 =(( rand() % 9 ) + 0 ); system( "cls" ); cout << endl << " 7 8 9 " << endl << " 4 5 6 " << endl << " 1 2 3 " << endl << " + 0 - " << endl; cout << endl << " " << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << endl; cout << endl << " " << suma.zero() << suma.jeden() << suma.dwa() << suma.trzy() << suma.cztery() << suma.piec() << suma.szesc() << suma.siedem() << suma.osiem(); Sleep( 750 ); switch( key ) { case 48: system( "cls" ); cout << endl << " 7 8 9 " << endl << " 4 5 6 " << endl << " 1 2 3 " << endl << " + [0] - " << endl << endl << " " << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << endl; numer[ test2 ] = 0; test++; Sleep( 250 ); break; case 49: system( "cls" ); cout << endl << " 7 8 9 " << endl << " 4 5 6 " << endl << " [1] 2 3 " << endl << " + 0 - " << endl << endl << " " << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << endl; numer[ test2 ] = 1; test++; Sleep( 250 ); break; case 50: system( "cls" ); cout << endl << " 7 8 9 " << endl << " 4 5 6 " << endl << " 1 [2] 3 " << endl << " + 0 - " << endl << endl << " " << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << endl; numer[ test2 ] = 2; test++; Sleep( 250 ); break; case 51: system( "cls" ); cout << endl << " 7 8 9 " << endl << " 4 5 6 " << endl << " 1 2 [3]" << endl << " + 0 - " << endl << endl << " " << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << endl; numer[ test2 ] = 3; test++; Sleep( 250 ); break; case 52: system( "cls" ); cout << endl << " 7 8 9 " << endl << " [4] 5 6 " << endl << " 1 2 3 " << endl << " + 0 - " << endl << endl << " " << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << endl; numer[ test2 ] = 4; test++; Sleep( 250 ); break; case 53: system( "cls" ); cout << endl << " 7 8 9 " << endl << " 4 [5] 6 " << endl << " 1 2 3 " << endl << " + 0 - " << endl << endl << " " << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << endl; numer[ test2 ] = 5; test++; Sleep( 250 ); break; case 54: system( "cls" ); cout << endl << " 7 8 9 " << endl << " 4 5 [6]" << endl << " 1 2 3 " << endl << " + 0 - " << endl << endl << " " << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << endl; numer[ test2 ] = 6; test++; Sleep( 250 ); break; case 55: system( "cls" ); cout << endl << " [7] 8 9 " << endl << " 4 5 6 " << endl << " 1 2 3 " << endl << " + 0 - " << endl << endl << " " << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << endl; numer[ test2 ] = 7; test++; Sleep( 250 ); break; case 56: system( "cls" ); cout << endl << " 7 [8] 9 " << endl << " 4 5 6 " << endl << " 1 2 3 " << endl << " + 0 - " << endl << endl << " " << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << endl; numer[ test2 ] = 8; test++; Sleep( 250 ); break; case 57: system( "cls" ); cout << endl << " 7 8 [9]" << endl << " 4 5 6 " << endl << " 1 2 3 " << endl << " + 0 - " << endl << endl << " " << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << endl; numer[ test2 ] = 9; test++; Sleep( 250 ); break; default: Sleep( 250 ); break; }; } while( suma.zero() != 1 ); system( "cls" ); cout << endl << " 7 8 9 " << endl << " 4 5 6 " << endl << " 1 2 3 " << endl << " + 0 - " << endl; cout << endl << " " << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << endl; cout << endl << " " << suma.zero() << suma.jeden() << suma.dwa() << suma.trzy() << suma.cztery() << suma.piec() << suma.szesc() << suma.siedem() << suma.osiem(); wynik: plik << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << " "; plik << numer[ 8 ] << numer[ 0 ] << numer[ 7 ] << numer[ 1 ] << numer[ 6 ] << numer[ 2 ] << numer[ 5 ] << numer[ 3 ] << numer[ 4 ] << " "; plik << numer[ 8 ] << numer[ 7 ] << numer[ 6 ] << numer[ 5 ] << numer[ 4 ] << numer[ 3 ] << numer[ 2 ] << numer[ 1 ] << numer[ 0 ] << " "; plik << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << " "; plik << numer[ 8 ] << numer[ 0 ] << numer[ 7 ] << numer[ 1 ] << numer[ 6 ] << numer[ 2 ] << numer[ 5 ] << numer[ 3 ] << numer[ 4 ] << " "; plik << numer[ 8 ] << numer[ 7 ] << numer[ 6 ] << numer[ 5 ] << numer[ 4 ] << numer[ 3 ] << numer[ 2 ] << numer[ 1 ] << numer[ 0 ] << " "; plik << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << " "; plik << numer[ 8 ] << numer[ 0 ] << numer[ 7 ] << numer[ 1 ] << numer[ 6 ] << numer[ 2 ] << numer[ 5 ] << numer[ 3 ] << numer[ 4 ] << " "; plik << numer[ 8 ] << numer[ 7 ] << numer[ 6 ] << numer[ 5 ] << numer[ 4 ] << numer[ 3 ] << numer[ 2 ] << numer[ 1 ] << numer[ 0 ] << " "; plik << numer[ 0 ] << numer[ 1 ] << numer[ 2 ] << numer[ 3 ] << numer[ 4 ] << numer[ 5 ] << numer[ 6 ] << numer[ 7 ] << numer[ 8 ] << " "; plik << numer[ 8 ] << numer[ 0 ] << numer[ 7 ] << numer[ 1 ] << numer[ 6 ] << numer[ 2 ] << numer[ 5 ] << numer[ 3 ] << numer[ 4 ] << " "; plik << numer[ 8 ] << numer[ 7 ] << numer[ 6 ] << numer[ 5 ] << numer[ 4 ] << numer[ 3 ] << numer[ 2 ] << numer[ 1 ] << numer[ 0 ] << endl; cout << endl << " ---------" << endl; plik.close(); Sleep( 500 ); koniec: return( 0 ); }
Chodzi mi o to żeby program kończył losowanie gdy wszystkie pozycje [0/1] zostaną zamienione na [1] i chciałęm zapytać czy można ująć spełnienie wszystkich warunków bo gdy wpisuje
} while( suma.zero() != 1 && suma.jeden() != 1 && suma.dwa() != 1 && suma.trzy() != 1 && suma.cztery() != 1 && suma.piec() != 1 && suma.szesc() != 1 && suma.siedem() != 1 && suma.osiem() != 1 );
program kończy losowanie po wpisaniu pierwszej liczby. Proszę o pomoc i z góry dzięki. |
|
m4tx |
» 2011-07-02 11:46:55 Możesz dać do...while(1), a tego fora zaraz przed końcem pętli :)
edit: OMG, żeby forum po kliknięciu w Napisz nową wiadomość edytowało starą to naprawdę... Kurde, co to jest?! |
|
Johnny Temat założony przez niniejszego użytkownika |
» 2011-07-02 12:07:22 Mało ogarniam to 3 co napisałeś bo nie za bardzo wiem gdzie mam umieścić tego ifa. Btw to ma być funkcja [while] a nie [for] :]
Teraz to to mi znikło co pisałeś ;/ ale nie moge dać tego na koniec bo to jest połączenie pętli [do] z [switch-case] i nie mam jak tam tego wepchnąć ;D |
|
m4tx |
» 2011-07-02 12:25:42 Więc tak: Zamiast całej klasy daj takie coś: bool Sprawdz( int i ) { if( numer[ i ] == 0 ) return( 0 ); else if( numer[ i ] > 0 ) return( 1 ); } Zamiast do...while(warunek) daj do {[ costam, costam ] for( int i = 0; i < 9; i++ ) if( Sprawdz( i ) != 1 ) continue; else if( i == 8 ) break; } while( 1 ); |
|
Johnny Temat założony przez niniejszego użytkownika |
» 2011-07-02 12:32:12 Nie, nie działa, program po zamienieniu wszystkich [0] na ciczby [0 < x > 10] dalej je zamienia. Jednakże program się skompilował ;D |
|
m4tx |
» 2011-07-02 12:38:27 OK, już wiem. To powinno zaworczyć: bool exit = false; do {[ costam, costam ] for( int i = 0; i < 9; i++ ) if( Sprawdz( i ) != 1 ) continue; else if( i == 8 ) exit = true; } while( !exit ); |
|
Johnny Temat założony przez niniejszego użytkownika |
» 2011-07-02 13:37:09 yyyy ... teraz sprawa wygląda nieco inaczej bo kompilator sie buntuje przy właśnie [ bool exit = false; ]
Compiling: C:\Users\Am\Desktop\C++\Koder.cpp
C:\Users\Am\Desktop\C++\Koder.cpp:14: error: 'bool exit' redeclared as different kind of symbol
c:\program files\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/../../../../include/stdlib.h:368: error: previous declaration of 'void exit(int)'
C:\Users\Am\Desktop\C++\Koder.cpp: In function 'int main()':
C:\Users\Am\Desktop\C++\Koder.cpp:160: error: assignment of function 'void exit(int)'
C:\Users\Am\Desktop\C++\Koder.cpp:160: error: cannot convert 'bool' to 'void(int)' in assignment
Process terminated with status 1 (0 minutes, 1 seconds)
4 errors, 0 warnings
czasem tego nie ogarniam :D |
|
SeaMonster131 |
» 2011-07-02 13:45:53 ponieważ istnieje taka funkcja jak void exit( int ) , a jak wiadomo nazwy nie mogą się powtarzać :) |
|
« 1 » 2 3 |