Algorytm na odczytywanie kart [c++]
- Damian905
- Użytkownik
- Posty: 144
- Rejestracja: 2 sty 2008, o 17:14
- Płeć: Mężczyzna
- Podziękował: 9 razy
- Pomógł: 16 razy
Algorytm na odczytywanie kart [c++]
Witam!!! Mam problem z takim oto programem. polecenie :
Karty w talii możemy ponumerować od 1 do 52. Hierarchia każdej karty w pierwszej kolejności określa rodzaj karty, w drugiej jej kolor. Jeśli przyjmiemy, ze kartę najważniejszą w hierarchii oznaczamy najmniejsza liczba, kolejnym liczbom będą przyporządkowane następujące karty: 1 - As wino; 2 - As czerwo;.............;52 - 2 żołądź.
Napisz program, który z pliku skradającego sie z 52 wierszy, w ktorym zapisana jest liczba oznaczajaca hierarchie karty, odczyta jaka karta znajduje sie pod podana cyfra. Przyklad: liczbie 2 odpowiada zapis "A-kier", a liczbie 5 zapis"K-pik".
Karty w talii możemy ponumerować od 1 do 52. Hierarchia każdej karty w pierwszej kolejności określa rodzaj karty, w drugiej jej kolor. Jeśli przyjmiemy, ze kartę najważniejszą w hierarchii oznaczamy najmniejsza liczba, kolejnym liczbom będą przyporządkowane następujące karty: 1 - As wino; 2 - As czerwo;.............;52 - 2 żołądź.
Napisz program, który z pliku skradającego sie z 52 wierszy, w ktorym zapisana jest liczba oznaczajaca hierarchie karty, odczyta jaka karta znajduje sie pod podana cyfra. Przyklad: liczbie 2 odpowiada zapis "A-kier", a liczbie 5 zapis"K-pik".
-
- Użytkownik
- Posty: 283
- Rejestracja: 26 sty 2007, o 22:11
- Płeć: Mężczyzna
- Podziękował: 4 razy
- Pomógł: 93 razy
Algorytm na odczytywanie kart [c++]
Najprościej :
Jeżeli dobrze myślę to karty układają się kolorami ? pik,kier,karo,trefl, pik,kier,karo,trefl itd? Wtedy można zamienić odczytany string na liczbę i sprawdzać podzielność .
Jeśli nie mamy dokładnie określonej ilości wierszy można użyć while(plik)
Kod: Zaznacz cały
#include <iostream>
#include <fstream>
#include <string>
int main()
{
std::ifstream plik;
std::string text;
plik.open("lista.txt");
for(n=0;n<52;n++)
{
getline(plik, text);
if(text=="1")
{
std::cout<<"A-kier
";
}
/* i 51 if ... */
}
plik.close();
getchar();
return 0;
}
Kod: Zaznacz cały
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream plik;
string text;
int n,k,cyfra;
plik.open("lista.txt");
for(n=0;n<52;n++)
{
getline(plik, text);
istringstream iss(text);
iss >> cyfra;
k = (cyfra-cyfra%4)/4;
switch(k)
{
case 0:
text="A-";
break;
case 1:
text="K-";
break;
case 2:
text="Q-";
break;
case 3:
text="J-";
break;
case 4:
text="10-";
break;
case 5:
text="9-";
break;
case 6:
text="8-";
break;
case 7:
text="7-";
break;
case 8:
text="6-";
break;
case 9:
text="5-";
break;
case 10:
text="4-";
break;
case 11:
text="3-";
break;
case 12:
text="2-";
break;
}
if(cyfra%4 == 0)
{
text+="trefl";
}
else if(cyfra%3 == 0 )
{
text+="karo";
}
else if(cyfra%2 == 0)
{
text+="kier";
}
else
{
text+="pik";
}
cout<<text<<"
";
}
plik.close();
getchar();
return 0;
}
- kadiii
- Użytkownik
- Posty: 642
- Rejestracja: 20 gru 2005, o 21:04
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Pomógł: 130 razy
Algorytm na odczytywanie kart [c++]
Tak przypadkiem zerknąłem. Kod jest oczywiście dobry, ale razi niekonsekwencja używania switcha. Kod wyglad jednak dużo przejrzyściej kiedy używamy elementów danego języka konsekwentnie(i adekwatnie do sytuacji). To tak w ramach dygresji
- Damian905
- Użytkownik
- Posty: 144
- Rejestracja: 2 sty 2008, o 17:14
- Płeć: Mężczyzna
- Podziękował: 9 razy
- Pomógł: 16 razy
Algorytm na odczytywanie kart [c++]
Dzieki wielkie z ten programik, jednak nie chce mi sie skomplikowac poniewaz moj kompilator wyrzuca taki blad: "sstream: No such file or directory". Moj kompilator to DevC++ 4.
-
- Użytkownik
- Posty: 6607
- Rejestracja: 16 sty 2007, o 19:42
- Płeć: Mężczyzna
- Podziękował: 119 razy
- Pomógł: 1823 razy
Algorytm na odczytywanie kart [c++]
Nie ma najnowszego deva IDE jest juz dawno porzucone i nierozwijane. Blad wynika z jakiejs starej wersji kompilatora nieposiadajacego dobrych naglowkow. Mozna wiec sciagnac nowszy kompilator i podlaczyc go pod deva, albo (co radze) przesiasc sie na lepsze IDE z wiekszymi mozliwosciami.
Pozdrawiam.
Pozdrawiam.