webForumDet fria alternativet

vad är det för fel på koden?

C/C++

9 svar · 375 visningar · startad av Injssc

Medlem sedan apr. 200326 inlägg
Frågan#1

Är det någon som kan se vad jag ska ändra för att det ska fungera?

Koden lyder :
#include <stdlib.h>
#include <time.h>
#include <iostream.h>
#include <math.h>
#include <conio.h>

//Score
void Score(int a, int b, int);
int Check(int k, int, int);
int ladder(int y, bool);

//Dice
void RollDices(int t);

//Yatzy

const char Names[] =
{
"Ettor ",
"Tvaor ",
"Treor ",
"Fyror ",
"Femor ",
"Sexor ",
"Par ",
"2par ",
"3tal ",
"4tal ",
"LStege ",
"SStege ",
"Kak ",
"Chans ",
"Yatzy "
};

//Result
int poengSum(int poen, int summ, int);
void SkrivVal(int Val);
void ReportResult(int rap);

int main()
{
int tkast[5];
int upp_poeng[15];
int tSum_poang = 0;
int i;
int kasta_tarning, poang, upp_poang;

// Initiera Randomizer
srand(time(0));

// Initiera iDices och iAchievedScores
for (i = 0; i < 5; i++)
{
tkast *= 0;
upp_poeng *= -1;
}

for (i = 5; i < 15; i++)
{
upp_poang *= -1;
}

cout << " valkomen till Yatzy " <<endl;
for (i = 0; i < 15; i++)
{

cout << endl << "du kan nu kasta tarningarna " << Names *<< endl;
kasta_tarning(tkast);
poang(tkast, upp_poang, i);
ReportResult(upp_poang);

}

return 0;
}

void poeng(int tkast, int upp_poang, int rakna)
{
int kast = 0;
int kast2 = 0;
int poang = 0;
int i;

switch(rakna)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
for (i = 0; i < 5; i++)
{
if (tkast *== rakna + 1)
{
poang += rakna + 1;
}
}
break;

case 6: // par
case 7: // triss
case 8: // fyrtal
poang = prova(tkast, rakna - 4, 1);
break;

case 9: // tvåpar
poang = prova(tkast, 2, 2);
// dice = score / 2;
break;
case 10: // Kåk...
poang = prova(tkast, 3, 1);

if (poang != 0)
{
kast = poang / 3;
poang = poang + prova(tkast, 2, 1);
kast2 = (poang-kast*3)/2;
if (kast = kast2)
{
poang = 0;
}
}
else
{
poang = 0;
}
case 11: // Liten stege
poang = stege(tkast, true);
break;
case 12: // Stor stege
poang = stege(tkast, false);
break;
case 13: // Yatzy!
kast = tkast[0];
if (tkast[1] ==kast && tkast[2] == kast && tkast[3] == kast && tkast[4] == kast && tkast[5] == kast)
{
poang = kast * 5;
}
else
{
poang = 0;
}
break;
case 14: // Chans
for(int i = 0; i < 5; i++)
{
poang += tkast*;
}
break;
}
upp_poang[rakna] = poang;
}

int prova(int *Tkast, int iAntalLika, int iAntalX)
{
int prova[6];
int halaParValue = -1;
int i;

for (i = 6; i > 0; i--)
{
prova[i-1] = 0;
for (int j = 0; j < 5; j++)
{
if (Tkast[j] == i)
{
prova[i-1]++;
}
}
}
for (i = 6; i > 0; i--)
{
if (prova[i-1] == iAntalLika)
{
if (iAntalX == 1)
{
return i * iAntalLika;
}
else if (iAntalX == 2)
{
if (halaParValue == -1)
{
halaParValue = i * iAntalLika;
}
else
{
return i * iAntalLika + halaParValue;
}
}

{

}
}
}
return 0;

void swap(int &i, int &j)
{
int k = i;
i = j;
j = k;
}

int stege(int Tkast, bool liten)
{
long sum = 0;
int i,
j;

for (i = 0; i < 5; i++)
{
for (j = i; j < 5; j++)
{
if (Tkast > Tkast[j])
{
swap(Tkast
, Tkast[j]);
}
}
}

for (i = 0; i < 5; i++)
{
sum += Tkast ** (int)pow(10,i);
}

if (sum == 54321 && liten)
{
return 15;
}
else if (sum == 65432 && !liten)
{
return 20;
}
else
{
getch();
return 0;

}
}

/* random funktion av slumptal*/

inline int getRand6()
{
return rand() % 6 + 1;
}

void visakast(int Value)
{

switch (Value)
{
case 1:
++Ettor;
break;
case 2:
++Tvaer;
break;
case 3:
++Treor;
break;
case 4:
++Fyror;
break;
case 5:
++Femor;
break;
case 6:
++Sexor;
break;
}

{

// tar tarningkast

void visaTarningar (int Tkast)
{

for(int i=1; i<=3;i++)
{
for(int j=1; j<=5;j++)
{
cout << " | ";
visakast(Tkast[j-1], i);
cout << " | ";
}
cout << endl;
}
}

void kasta_tarning(int Tkat)
{
int info, tarning_sla_om;

//forstakast

for(int j=1;j<=5; j++)
{
Tkast[j-1]=getRand6();
}

visaTarningar(Tkast);

//om man vill sla om

for(int i=1;i<=2,i++)
{
cout << " vilka terningar vill du kasta (0-5)? ";
cin >> info;

  // loop for vilken tarning du vill sla om

  if(info !=5)
  {
   cout \<\< " vilka terningar vill du kasta om ?";

  }

  else

  {

   cout \<\< " kasta tarningarna " \<\< endl;

  }

  for(int j=1;j\<=info;j++)
  {
   if(info !=5)
    {

    cin \>\> tarning_sla_om;
    }

    else
    {
    tarning_sla_om =j;
    }

    tkast\[tarning_sla_om-1\]=getRand6();
  }

  visaTarningarna(Tkast);
}

}

void ReportResultat(int upp_poang)
{

int tSumBon = 0;
int tSumDig = 0;
int tSumRes = 0;
int tSumTtl = 0;

  tSumDig = poangSum(upp_poang, 0, 5);
  if (tSumDig \>= 63)
  {

   tSumBon = 50;
  }

  tSumRes = poangSum(upp_poang, 6, 14);
  tSumTtl = tSumDig + tSumBon + tSumRes;

  cout \<\< endl;

  for(int i=0; i \< 9; i++)
  {
   if ( i \< 6 )
    {

    cout \<\< namn*;
        skriv_val(upp_poang*);
        cout \<\< " \| ";
    }

    else if(i == 6)
    {
    cout \<\< " .......... ";
    }

    else if(i == 7)
    {

    cout \<\< " sum ";
           skriv_val(tSumDig);
           cout \<\< " \|   ";

    }

    else

    {

    cout \<\< " Bonus ";
        skriv_Val(tSumBon);
        cout \<\< " \| ";
    }

    cout \<\< namn\[i+6\];
    skriv_Val(upp_poang\[i+6\]);
    cout \<\< endl;
}
cout \<\< " " \<\< endl;
cout \<\< " ";
skriv_Val(tSumTtl);
cout \<\< endl;

}

void skriv_Val(int Value)
{

if(Value >= 10)
{
cout << Value;

}

else if (Value >= 0)
{
cout << " " << Value;
}

else

{

cout \<\< "   ";

}
}

int poangSum(int upp_poang, int start, int stop)
{

int tSum =0;

for( int i = start;i>=stop; i++)
{
if(upp_poang *> 0)
{

   tSum += upp_poang*;
  }

}
return tSum;
}*************

Medlem sedan aug. 20021 752 inlägg
#2

Vad är det för fel? Får du något fel medelande? När blir det fel?

tips: Läs Kodtaggar

/Viktor

Medlem sedan juni 200010 432 inlägg
#3

http://www.webforum.nu/misc.php?s=&action=bbcode

Sen var det så många fel i din kod att jag (vilket inte behöver hindra andra), avstår att lusa av den. Vad kör du med för utvecklingsverktyg? Du har ju massor av rena syntaxfel som du måste få bort.. som felvändna måsvingar, matris som är deklarerad som array, odeklarerade pekare i funktionsprototyper m.m.. listan kan göras till istort sett alla fel man kan göra ;)

Men en normal ANSI kompilator ger syntax-felutskrifter.. om du börjar med att bena ut dem ett efter ett så kommer det säkert lösa sig. Börja med din char array som egentligen ska vara en matris (Kolla i litteraturen får du se hur det funkar eller ställ en fråga om det här ifall du undrar över detaljerna). Sen se till att deklarera alla funktioner innan de används, du har visst missat ett par tre stycken. Sen får du se till att ge funktionsparametrarna rätt deklarationer.. en kasta_taerning(int,int) är inte detsamma som kasta_taerning(int*,int) osv...

Puh! ;)

Medlem sedan apr. 200318 inlägg
#4

Ett litet tips från mej kan vara att bygga upp programmet i omgångar. Gör en funktion, testa den så att du vet att den funkar i alla lägen. Fortsätt med nästa osv. Tills du har hela programmet klart. Det gör det mycket lättare att felsöka. Det är ingen som orkar sätta sig här och gå igenom hela din kod och räkna upp 10-tals fel.

Medlem sedan mars 20034 471 inlägg
#5

stenmark skrev:

Ett litet tips från mej kan vara att bygga upp programmet i omgångar. Gör en funktion, testa den så att du vet att den funkar i alla lägen. Fortsätt med nästa osv. Tills du har hela programmet klart...

Det motsvarar den vettigaste programmeringsparadigm man kan använda. Ju mer man skriver på en gång ju mer är det som (kan) bli tokigt och ju svårare blir det att hitta felen.

När det gäller felmeddelanden från kompilatorn ska du även veta detta: ETT enda fel KAN ge upphov till många felmeddelanden. Därför ska man alltid "debugga" ett i taget. Ta hand om första felet, kompilera igen, ta hand om första felet, kompilera... annars kan man leta ihjäl sig efter fel som är följdfel...

Medlem sedan juni 200010 432 inlägg
#6

Design är A och O..

Medlem sedan apr. 200326 inlägg
#7

nu har jag kommit hit

nu har jag kommit så här långt och då får jag felet deckarations sytax error. Vad ska jag ändra för att det ska fuvinna så att det fungerar?

#include <stdlib.h>
#include <time.h>
#include <iostream.h>
#include <math.h>
#include <conio.h>

//Score
void poang(int *b, int);
int prova(int *k, int, int);
int stege(int *y, bool);

//Dice
void RollDices(int *t);

//Yatzy

const char *Names[] =
{
"Ettor ",
"Tvaor ",
"Treor ",
"Fyror ",
"Femor ",
"Sexor ",
"Par ",
"2par ",
"3tal ",
"4tal ",
"LStege ",
"SStege ",
"Kak ",
"Chans ",
"Yatzy "
};

//Result
int poengSum(int poen, int sum, int);
void SkrivVal(int Val);
void ReportResult(int *rap);

int main()
{
int tkast[5];
int upp_poang[15];
int i;

// Initiera Randomizer
srand(time(0));

// Initiera iDices och iAchievedScores
for (i = 0; i \< 5; i++)
{
	tkast *\= 0;
	upp_poang *\= -1;
}

for (i = 5; i \< 15; i++)
{
	upp_poang *\= -1;
}

cout \<\< " valkomen till Yatzy " \<\<endl;
for (i = 0; i \< 15; i++)
{

	cout \<\< endl \<\< "du kan nu kasta tarningarna " \<\< Names *\<\< endl;
  

}

}

void poeng(int *tkast, int upp_poang, int rakna)
{
int kast = 0;
int kast2 = 0;
int poang = 0;
int i;

switch(rakna)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
	for (i = 0; i \< 5; i++)
	{			
		if (tkast *\== rakna + 1)
		{
			poang += rakna + 1;
		}
	}
	break;

case 6:	// par
case 7:	// triss
case 8:	// fyrtal
	poang = prova(tkast, rakna - 4, 1);
break;
 
case 9: // tvåpar
	poang = prova(tkast, 2, 2);

// dice = score / 2;
break;
case 10: // Kåk...
poang = prova(tkast, 3, 1);

	if (poang != 0)
	{
		kast = poang / 3;
		poang = poang + prova(tkast, 2, 1);
		kast2 = (poang-kast\*3)/2;
		if (kast = kast2)
		{
			poang = 0;
		}
	}
	else
	{
		poang = 0;
	}
case 11: // Liten stege
	poang = stege(tkast, true);
	break;
case 12: // Stor stege
	poang = stege(tkast, false);
	break;
case 13: // Yatzy!
	kast = tkast\[0\];
	if (tkast\[1\] ==kast && tkast\[2\] == kast && tkast\[3\] == kast && tkast\[4\] == kast && tkast\[5\] == kast)
	{
		poang = kast \* 5;
	}
	else
	{
		poang = 0;
	}
	break;
case 14: // Chans
	for(int i = 0; i \< 5; i++)
	{
		poang += tkast*;
	}
	break;

  }

}

int prova(int *tkast, int iAntalLika, int iAntalX)
{
int prova[6];
int halaParValue = -1;
int i;

 for (i = 6; i \> 0; i--)
	 {
		prova\[i-1\] = 0;
		for (int j = 0; j \< 5; j++)
		{
		 	 if(tkast\[j\] == i)
		 	 {
		 		prova\[i-1\]++;
		 	  }
		}
	}
 for (i = 6; i \> 0; i--)
 {
		if (prova\[i-1\] == iAntalLika)
		{
       if (iAntalX == 1)
		  {
				return	i \* iAntalLika;
		  }

		 		else if (iAntalX == 2)
			 	{

					if (halaParValue == -1)
					{

             		halaParValue = i \* iAntalLika;
						}
							else
							{

				 		return i \* iAntalLika + halaParValue;

			 		}

} } }

void swap(int &i, int &j)
{
int k = i;
i = j;
j = k;

int stege(int tkast*, bool liten)
{
long sum = 0;
int i,
j;

 for (i = 0; i \< 5; i++)
 {

	for (j = i; j \< 5; j++)
	{
		 if (tkast *\> tkast\[j\])
		 {

			swap(tkast*, tkast\[j\]);
		 }
	}

 		for (i = 0; i \< 5; i++)
	 	{
			sum += tkast *\* (int)pow(10,i);
	 	}

 		if (sum == 54321 && liten)
	 	{

		return 15;
	 	}

 		else if (sum == 65432 && !liten)
	 	{
			return 20;
	 	}
 			else
  }

getch();
return 0;

}

/* random funktion av slumptal*/

inline int getRand6()
{
return rand() % 6 + 1;
}

void visakast(int Value)
{

switch (Value)
{
case 1:
	\++Ettor;
	break;
case 2:
	\++Tvaer;
	break;
case 3:
	\++Treor;
	break;
case 4:
	\++Fyror;
	break;
case 5:
	\++Femor;
	break;
case 6:
	\++Sexor;
	break;
}

}

// tar tarningkast

void visaTarningar (int tkast)
{

for(int i=1; i\<=3;i++)

{
for(int j=1; j<=5;j++)
{
cout << " | ";
visakast(tkast[j-1], i);
cout << " | ";
}
cout << endl;
}
}

void kasta_tarning(int tkast)
{
int info, tarning_sla_om;

//forstakast

for(int j=1;j<=5; j++)
{
tkast[j-1]=getRand6();
}

visaTarningar(tkast);

//om man vill sla om

for(int i=1;i<=2,i++)
{
cout << " vilka terningar vill du kasta (0-5)? ";
cin >> info;

  // loop for vilken tarning du vill sla om

  if(info !=5)
  {
  	cout \<\< " vilka terningar vill du kasta om ?";

  }

  else

  {

  	cout \<\< " kasta tarningarna " \<\< endl;

  }

  for(int j=1;j\<=info;j++)
  {
  	if(info !=5)
     {

     	cin \>\> tarning_sla_om;
     }

     else
     {
     	  tarning_sla_om =j;
     }

     tkast\[tarning_sla_om-1\]=getRand6();
  }

  visaTarningarna(tkast);

}
}

void ReportResultat(int *upp_poang)
{

	int tSumBon = 0;
  int tSumDig = 0;
  int tSumRes = 0;
  int tSumTtl = 0;

  tSumDig = poangSum(upp_poang, 0, 5);
  if (tSumDig \>= 63)
  {

  	tSumBon = 50;
  }

  tSumRes = poangSum(upp_poang, 6, 14);
  tSumTtl = tSumDig + tSumBon + tSumRes;

  cout \<\< endl;

  for(int i=0; i \< 9; i++)
  {
  	if ( i \< 6 )
     {

     	cout \<\< namn*;
        skriv_val(upp_poang*);
        cout \<\< " \| ";
     }

     else if(i == 6)
     {
     	cout \<\< " .......... ";
     }

     else if(i == 7)
     {

     		cout \<\< " sum  ";
           skriv_val(tSumDig);
           cout \<\< " \|   ";

     }

     else

     {

     	cout \<\< " Bonus  ";
        skriv_Val(tSumBon);
        cout \<\< " \|  ";
     }

     cout \<\< namn\[i+6\];
     skriv_Val(upp_poang\[i+6\]);
     cout \<\< endl;
}
cout \<\< "  " \<\< endl;
cout \<\< "  ";
skriv_Val(tSumTtl);
cout \<\< endl;

}

void skriv_Val(int Value)
{

if(Value \>= 10)

{
cout << Value;

}

else if (Value >= 0)
{
cout << " " << Value;
}

else

{

cout \<\< "   ";

}
}

int poangSum(int upp_poang, int start, int stop)
{

int tSum =0;

for( int i = start;i>=stop; i++)
{
if(upp_poang *> 0)
}

  	tSum += upp_poang*;
  }

}
return tSum;

}*************

Medlem sedan juni 200010 432 inlägg
#8

Genom ditt första inlägg har du fått ett PM från mig om kodtaggarna. Din kod är hopplös att försöka få något vettigt ur när den ser ut som ovan, utan indentering m.m.. även andra har ju påtalat detta för dig så om du verkligen är seriös i din fråga kunde du väl vara lite mer tillmötesgående om vad vi andra vill ha för att kunna hjälpa dig?

Medlem sedan apr. 20031 inlägg
#9

I hur många forum frågar du egentligen? Du ställer dina frågor , på bbs.linux.se, PHPportalen, point-blank.nu, CCSweden och här...

Medlem sedan apr. 200326 inlägg
#10

Tack för alla svar jag har fått.

1250 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
141 ms — deklarationer (db)
0 ms — hämta statistik (cache)
1096 ms — hämta tråd, inlägg och bilagor (db)
145 ms — ändringar (db)