---
title: "Problem med enkelt program."
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/90821-problem-med-enkelt-program"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Napoleon"
published: "2003-11-19T15:43:09.000Z"
updated: "2003-11-21T15:00:34.000Z"
replies: 4
views: 310
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/90821-problem-med-enkelt-program"
---

# Problem med enkelt program.

## #1 — Napoleon, 2003-11-19T15:43Z

Jag behöver hjälp med en liten version av svälta räv. Spelarna är kortlekar. Först läggs ett kort ut som man sedan ska lägga över för att ta korten. Man lägger vartannat kort. Ess räknas som ett om det läggs ut först och som 14 om det läggs på ett annat kort.

Problemet är att Klover verkar vara som en trumf färg. Varje kort beskrivs med en farg vilken har typen enum Kortfarg {hjarter, spader, klover, ruter} och med en valör av typen int.

```
int main()
{
	Kortbunt spelare[2], leken;
	leken.ny_kortlek();
	leken.blanda();
	for (int i=1; i < 53; i++)
	{
		spelare[i%2].lagg_overst(leken.ge_oversta());
	}
	int nasta=1;
	while (spelare[0].antal_kort() > 0 && spelare[1].antal_kort() > 0)
	{
		Kort k, forsta;
		if (leken.antal_kort()==0)
		{
			forsta=spelare[nasta].ge_oversta();
			cout << "Spelare " << nasta+1 << " lagger "; forsta.skriv_ut(); cout << "\n\nForsta\n\n";
			leken.lagg_overst(forsta);
			nasta=(nasta+1)%2;
		}
		else
		{
			k=spelare[nasta].ge_oversta();
			cout << "Spelare " << nasta+1 << " lagger "; k.skriv_ut();
			leken.lagg_overst(k);
			if (k.farg() == forsta.farg() && (k.valor()>forsta.valor() || k.valor()==1))
			{
				cout << "Spelare " << nasta+1 << " tar korten.";
				spelare[nasta].lagg_till_bunt(leken);
				cout << "Spelare 1 har nu " << spelare[0].antal_kort() << " kort.\nSpelare 2 har nu " << spelare[1].antal_kort()
				<< " kort";
			}
			else
			nasta=(nasta+1)%2;
		}
	}
	if (spelare[1].antal_kort() == 0)
		cout << "spelare 2 har vunnit!";
	else
		cout << "spelare 1 har vunnit!";
}
```

Tack på förhand!

Permalänk: https://www.webforum.nu/p/90821

## #2 — PeW, 2003-11-20T19:31Z

Lättaste sättet att reda ut sådana problem är att smacka in lite spårutskrifter. 
Utan att kolla närmare så är ju ivf Klöver detsamma som talet 2 i din enum. Du har inte råkat förväxla nån logik nånstans så att det alltid blir 2 när det ska vara nåt annat?

Permalänk: https://www.webforum.nu/p/1211361

## #3 — Lasp, 2003-11-20T20:02Z

Kul problem och välkommen till wF Napoleon.

Permalänk: https://www.webforum.nu/p/1211369

## #4 — PeW, 2003-11-20T20:12Z

Javisstja! Välkommen Napoleon!  :D

Permalänk: https://www.webforum.nu/p/1211373

## #5 — Napoleon, 2003-11-21T15:00Z

Det löste sig!

```
while (spelare[0].antal_kort() > 0 && spelare[1].antal_kort() > 0)
	{
               Kort k, forsta;
```

Här var felet. Det skulle vara:

```
Kort k, forsta;
while (spelare[0].antal_kort() > 0 && spelare[1].antal_kort() > 0)
	{
```

Annars anropades konstruktorn (som hade default värdet klover ess dvs ett kort som kan tas av alla klover) för forsta och kort varje gång loopen kördes, jag hade fått för mig att så inte var fallet av någon anledning.

Jag har kollat runt lite i forumet tidigare men nu har jag äntligen tagit mig för att registrera mig :)

Permalänk: https://www.webforum.nu/p/1211696

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/90821-problem-med-enkelt-program
