piechcia Temat założony przez niniejszego użytkownika |
2 zmienne obok siebie wyciągane z pliku » 2015-11-07 11:39:59 <am problem przez któy nie moge pracować dalej. Problem z liczbami wyciąganymi z pliku to była błachostka w porównaniu do tego. Otóż docelowy wykląd zmiennej jest taki. 2K - Dwójka Karo. kP - król Pik 9T - Dzewiątka trefl etc. Jak to dodać te zmienne K,P,T by były odczytywane ale nie miały wpływu na sume? Obecnie mój zapis programu wygląda tak system( "pause" ); system( "cls" );
fstream plik; plik.open( "Gracz 1.txt", ios::in ); plik >> liczba; plik >> liczba2; plik >> liczba3; plik >> liczba4; plik >> liczba5;
cout << "Karty gracza nr 1\n\n";
if( liczba == 1 ) cout << "Jedynka\n";
if( liczba == 2 ) cout << "Dwojka\n";
if( liczba == 3 ) cout << "Trojka\n";
if( liczba == 4 ) cout << "Czworka\n";
if( liczba == 5 ) cout << "Piatka\n";
if( liczba == 6 ) cout << "Szostka\n";
if( liczba == 7 ) cout << "Siodemka\n";
if( liczba == 8 ) cout << "Osemka\n";
if( liczba == 9 ) cout << "Dziewiatka\n";
if( liczba == 10 ) cout << "Dziesiatka\n";
if( liczba2 == 1 ) cout << "Jedynka\n";
if( liczba2 == 2 ) cout << "Dwojka\n";
if( liczba2 == 3 ) cout << "Trojka\n";
if( liczba2 == 4 ) cout << "Czworka\n";
if( liczba2 == 5 ) cout << "Piatka\n";
if( liczba2 == 6 ) cout << "Szostka\n";
if( liczba2 == 7 ) cout << "Siodemka\n";
if( liczba2 == 8 ) cout << "Osemka\n";
if( liczba2 == 9 ) cout << "Dziewiatka\n";
if( liczba2 == 10 ) cout << "Dziesiatka\n";
if( liczba3 == 1 ) cout << "Jedynka\n";
if( liczba3 == 2 ) cout << "Dwojka\n";
if( liczba3 == 3 ) cout << "Trojka\n";
if( liczba3 == 4 ) cout << "Czworka\n";
if( liczba3 == 5 ) cout << "Piatka\n";
if( liczba3 == 6 ) cout << "Szostka\n";
if( liczba3 == 7 ) cout << "Siodemka\n";
if( liczba3 == 8 ) cout << "Osemka\n";
if( liczba3 == 9 ) cout << "Dziewiatka\n";
if( liczba3 == 10 ) cout << "Dziesiatka\n";
if( liczba4 == 1 ) cout << "Jedynka\n";
if( liczba4 == 2 ) cout << "Dwojka\n";
if( liczba4 == 3 ) cout << "Trojka\n";
if( liczba4 == 4 ) cout << "Czworka\n";
if( liczba4 == 5 ) cout << "Piatka\n";
if( liczba4 == 6 ) cout << "Szostka\n";
if( liczba4 == 7 ) cout << "Siodemka\n";
if( liczba4 == 8 ) cout << "Osemka\n";
if( liczba4 == 9 ) cout << "Dziewiatka\n";
if( liczba4 == 10 ) cout << "Dziesiatka\n";
if( liczba5 == 1 ) cout << "Jedynka\n";
if( liczba5 == 2 ) cout << "Dwojka\n";
if( liczba5 == 3 ) cout << "Trojka\n";
if( liczba5 == 4 ) cout << "Czworka\n";
if( liczba5 == 5 ) cout << "Piatka\n";
if( liczba5 == 6 ) cout << "Szostka\n";
if( liczba5 == 7 ) cout << "Siodemka\n";
if( liczba5 == 8 ) cout << "Osemka\n";
if( liczba5 == 9 ) cout << "Dziewiatka\n";
if( liczba5 == 10 ) cout << "Dziesiatka\n";
system( "pause" ); system( "cls" );
cout << "Suma\n"; cout << liczba + liczba2 + liczba3 + liczba4 + liczba5;
}
Pozdrawiam |
|
j23 |
» 2015-11-07 12:54:45 Uprośćmy nieco: const char * num_str[] = { nullptr, "Jedynka", "Dwojka", "Trojka", "Czworka", "Piatka", "Szostka", "Siodemka", "Osemka", "Dziewiatka", "Dziesiatka" };
...
cout << num_str[ liczba ] << '\n'; cout << num_str[ liczba2 ] << '\n'; cout << num_str[ liczba3 ] << '\n'; cout << num_str[ liczba4 ] << '\n'; cout << num_str[ liczba5 ] << '\n'; Znacznie czytelniej, nie sądzisz? Co do pytania. Karty w formie 2K czy 9T możesz rozbić na liczbę i kolor np. tak: string s;
...
plik >> s;
if( isdigit( s[ 0 ] ) ) { int n; char c; if( sscanf( s.c_str(), "%i%c", & n, & c ) == 2 ) { cout << "liczba: " << n << '\n'; cout << "kolor: " << c << '\n'; } else { } } else { }
P.S. walidację wprowadzanych danych oczywiście pominąłem. To już twoja działka. |
|
piechcia Temat założony przez niniejszego użytkownika |
» 2015-11-08 17:16:37 nie do końca rozumiem cp dalej zrobić. Mógł byś mimo że na nie idealnym moim projekcie pomóc mi to wykonać bo w c++ jestem noga |
|
j23 |
» 2015-11-08 18:29:21 Przecież w drugim kodzie pokazałem Ci, jak wyciągnąć liczbę i kolor z danej tekstowej. Dostosuj to sobie do swojego kodu i wtedy ewentualnie pytaj, czego konkretnie nie rozumiesz. Za Ciebie programu pisać nie będę. |
|
piechcia Temat założony przez niniejszego użytkownika |
» 2015-11-09 00:22:49 chce ten kod dostosować to mojego pierwotnego bo mimo jego archaiczności go rozumiem. Z czasem będe się dokształcać i modyfikować kody ale puki co chciałbym dokończyć ten program na danych które już podałem i nie wiem co gdzie wpisać. Wiem że to nie ładne prosić człowieka o wyręczenie ale jak byś mógł mi chociaż pokazać jak przypisać literze K Wartość 11 i dodać do niej kolor np KP - król Pik to jestem twoim dłużnikiem |
|
j23 |
» 2015-11-09 10:21:50 int n; char c;
if( isdigit( s[ 0 ] ) ) { if( sscanf( s.c_str(), "%i%c", & n, & c ) != 2 ) { } } else { switch( s[ 0 ] ) { case 'W': n = 11; break; case 'D': n = 12; break; case 'K': n = 13; break; case 'A': n = 14; break; default: n = - 1; }; c = s[ 1 ]; }
cout << "karta nr. " << n << " kolor: " << c << '\n'; |
|
piechcia Temat założony przez niniejszego użytkownika |
» 2015-11-12 22:46:43 Jeszcze raz musiałem napisać ten program i do szedłem do takiej postaci. Pojawiły sie trzy problemy. zmienna karta z liczbami chce sie tylko skompilować przy stringu a przy incie wywala bład. nawet jak program sie skompiluje to wszystkie karty są w lini a nie w kolumnie. Przy próbie zmiany nazwy koloru z P na Pik wywala taki błąd [ code src = "C++" ] 35 17 C:\U sers\Piechu\Downloads\kurs_cpp_odc7( 1 ) \k urs_cpp_odc7\02 zapis dopisuj do pliku\zapis_dopisuj.cpp[ Error ] could not convert 'kolor.std::basic_string<_CharT, _Traits, _Alloc>::operator=<char, std::char_traits<char>, std::allocator<char> >(119)' from 'std::basic_string<char>' to 'bool' [ \c ode ]
[ code src = "C++" ] #include <iostream> #include <fstream>
using namespace std;
string kolor; string karta; string linia; int nr_linii = 1;
int main( int argc, char * argv[] ) { { fstream plik; plik.open( "kartaa.txt", ios::in ); if( plik.good() == false ) cout << "Nie mozna otworzyc pliku!"; while( getline( plik, linia ) ) { switch( nr_linii ) { case 1: karta = linia; case 2: kolor = linia; } nr_linii++; } plik.close(); if( kolor = 'P' ) cout << "Pik"; cout << karta; cout << kolor; ; plik.close(); return 0; } } [ \c ode ]
mam nadzieje ż e zrozumiecie o co mi chodzi i pomo ż ecie |
|
« 1 » |