HILFE - Zufallszahlen - Komische Symbole

Hi wiedermal :)

Eine Frage zuerst: Du hast doch diesen folgenden Beitrag, von dem ich hier eine Kopie per Email bekommen habe,
geschrieben? Aber wo ist er dann? Ich hab nur das Email! Siehst du deinen Original-Beitrag?

Ich schau das Programm durch und meld mich dann wieder
---
Hallo @sheel (hoffe das du noch da bist :) ) ich hab das mal auf meine art ein wenig gemacht, das mit den koordinaten war mir bisschen zu kompliziert...
leider stecke ich bei 2 funktionen...
vorgabe ist mit pointern zu arbeiten in der funktion ausgeben(char *a, char *b, char *c)

hier der code: (funktioniert fast)

C++:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>

void spielStarten(void);
char getZeichen(void);
int berechneErgebnis(char a, char b, char c);
void ausgabe(char *a, char *b, char *c);
char intToChar(int i);
void slotstart(void);

int main(void)
{
int startTime = 0; 
int endTime   = 0;
startTime     = clock()/CLOCKS_PER_SEC;
endTime   = (clock()/CLOCKS_PER_SEC) - startTime;
srand( (unsigned)time(NULL) );

do
{
system("cls");
printf("Mein Spielautomat");
printf("\n\n"); 
printf("Spielzeit: %d sec", endTime);
printf("\n\n"); 
spielStarten();
printf("\n\n'w' um nochmals zu spielen");
}
while('w' == getch());

printf("\n\n");
return 0;
}


void spielStarten(void)
{
char zeichen[3] = { '0', '0', '0' };
int i = 0;
int j = 0;
int z = 3;
char eingabe = 0;
int punkte = 0;

printf("-------------------");
printf("\n|");

for(i=0; i<3; i++)
{
printf("%3c  |", zeichen[i]);
}
printf("\n-------------------");
printf("\n(Dr\201cken Sie eine beliebige Taste)");
printf("\n\n"); 

getch();
slotstart();

punkte = berechneErgebnis(zeichen[0], zeichen[1], zeichen[2]);
printf("\n\n");
printf("Ihre Punkte: %d", punkte);
}

void ausgeben(char *a, char *b, char *c)
{
printf("-------------------");
printf("\n|"); 
if (*a==10) printf("  A  |");
else
if (*a==11) printf("  B  |");
else
if (*a==12) printf("  C  |");
else
printf("%3c  |", (*a));

if (*b==10) printf("  A  |");
else
if (*b==11) printf("  B  |");
else
if (*b==12) printf("  C  |");
else
printf("%3c  |", (*b));
  
if (*c==10) printf("  A  |");
else
if (*c==11) printf("  B  |");
else
if (*c==12) printf("  C  |");
else
printf("%3c  |", (*c));

printf("\n-------------------\n");

}

int berechneErgebnis(char a, char b, char c)
{ 
int erg = 0; 

if(a > '9')
a = a - 'A' + 10;
else 
a -= 48;
  
if(b > '9')
b = b - 'A' + 10;
else 
b -= 48;
  
if(c > '9')
c = c - 'A' + 10;
else 
c -= 48;
  
erg = 100*a +10*b + c;
  
if( (a==b) && (a==c) ) 
  erg *=3;
   else if( (a==b) || (a==c) || (b==c) )
  erg *=2;
   
return erg;
}

char getZeichen(void)
{ 
int i = 0;
char j;

fflush(stdin); 
i = 1 + ( rand() % 12 );

if( (i>=1) && (i<=9) )
{
j = intToChar(i);
}
else if(i==10)
j = 'A';
else if(i==11)
j = 'B';
else if(i==12)
j = 'C'; 

return j;
}

char intToChar(int i)
{
return (char)i + 48;
}

void slotstart(void)
{
char zufall1 = 0; 
char zufall2 = 0; 
char zufall3 = 0;

zufall1 = getZeichen();
zufall2 = getZeichen();
zufall3 = getZeichen();

do
{
system("cls");
ausgeben(&zufall1, &zufall2, &zufall3);
} 
while(!kbhit());

getch();

do
{
system("cls");
//ausgeben(zufall1,getZeichen(),getZeichen());
ausgeben(&zufall1, &zufall2, &zufall3);
}
while(!kbhit());

getch();
do
{
system("cls");
//ausgeben(zufall1,zufall2,getZeichen());
ausgeben(&zufall1, &zufall2, &zufall3);
}
while(!kbhit());
 
getch();

system("cls");
//ausgeben(zufall1,zufall2,zufall3);
ausgeben(&zufall1, &zufall2, &zufall3);
}
ich seh leider den fehler nicht oder anders gesagt ich komm da nich weiter...hat da jemand eine idee Die parameterliste von ausgeben(...) bitte nicht ändern! ist Vorgabe!
danke schonmal im vorraus!!

gruß manda

//EDIT

So, also erstens:
In der Funktion Slotstart hast du ja 3 do-while Schleifen
Da bei jedem Schleifendurchlauf eine andere Zufallszahl vorhanden sollte,
muss das zufall1=getzeichen(); von oben mit in die Schleife
Vor oder nach dem system("cls"); ist egal, aber unbedingt vor der ausgabe!

Für die zweite/dritte Schleife machst du das gleiche, dann halt mit Zufall2 und zufall3

Der Block
zufall1=getzeichen();
zufall2=getzeichen();
zufall3=getzeichen();
am Anfang der Funktion wird dadurch überflüssig

Zweitens: Damit man auch was mitbekommt, muss in jeder der drei Schleifen nach der ausgabe
ein Sleep rein!

Und drittens: Alles, was in spielStarten nach dem Aufruf vom slotstart passiert, also die gesamte Punkteberechnung, sollte besser am Ende vom slotstart selber hinkommen
Weil, wie soll die Punkteberechnung die Werte bekommen, bei denen der Benutzer angehalten hat? Die gibts nur im slotstart.

Sollte jetzt eigentlich laufen

Und bitte schreib noch, ob du deinen vorigen ORIGINALbeitrag mit dem Code selber sehen kannst
Das kommt mir alles ein bisschen seltsam vor...verschwindet einfach so
Beim Enumerator ist es ja auch in dem Thread hier passiert...nur ich bin noch verschont :)

PS: Jetzt musste ich mich sogar neu anmelden, um den Beitrag hier schreiben zu können,
aber das liegt wohl an meiner Cookielöschaktion
 
Eine Frage zuerst: Du hast doch diesen folgenden Beitrag, von dem ich hier eine Kopie per Email bekommen habe,
geschrieben? Aber wo ist er dann? Ich hab nur das Email! Siehst du deinen Original-Beitrag?

[...]

Und bitte schreib noch, ob du deinen vorigen ORIGINALbeitrag mit dem Code selber sehen kannst
Das kommt mir alles ein bisschen seltsam vor...verschwindet einfach so
Beim Enumerator ist es ja auch in dem Thread hier passiert...nur ich bin noch verschont :)
Moin,

dann bring ich hier mal Licht ins Dunkel, warum du hier zwei Beiträge vermißt: Enumerator und manda haben jeweils einen ihrer Beiträge gelöscht.

mfg Maik
 
Zurück