webForumDet fria alternativet

Enkla frågor

12 svar · 739 visningar · startad av enrosabanan

enrosabananMedlem sedan maj 200736 inlägg
#1

Jag frågade några väldigt simpla frågor här för ett tag sedan och tydligen var de så "idiotiska" så jag fick inga direkta svar. Men nu gör jag ett nytt försök med säkert lika lätta frågor.

Fråga nummer ett:

Hur gör man för att få till två if-satser och en else? Är detta möjligt för det känns som att jag har hållt på i en evighet utan att jag kommer på hur man gör.

Fråga nummer två:

Det är då den här koden jag har en fråga på:

#include <iostream>
using namespace std;

void main()
{
	int tal;

	cout << "Skriv in hur många tal du vill att programmet ska skriva ut: ";
	cin >> tal;

	for (int i = tal; i>0 ; i--)
		cout << i;

}

Hur gör jag för att den ska räkna från 1 och uppåt istället för från det största talet och nedåt?

Fråga nummer tre:

Frågan gäller denna kod:

#include <iostream>
using namespace std;

void main()
{
	int antal;
	int tal;

	cout << "Skriv in antal tal du vill räkna ut summan på: ";
	cin >> antal;

	for (int i = antal; i>0 ; i--)
	{
	
		cout << "Skriv in ett tal: ";
		cin >> tal;
	}

	cout << antal*tal;

}

Hur gör jag för att räkna ut summan? Det är inte antal*tal eller antal+tal och allt vad jag försökt. Nu försökte jag bara poängtera att jag försökt allt jag kan men det är ju inte så mycket.

Jag är mycket tacksam över svar.

spangoMedlem sedan juni 20008 205 inlägg
#2
  1. Är det något i stil med följande du är ute efter?
int i = [i]någonting[/i];
if (i < 0) cout << "i är ett negativt tal";
else if (i > 0) cout << "i är ett positivt tal";
else cout << "i är noll";

På det här sättet kan du kedja hur många if-satser som helst.

  1. Du vänder bara på ordningen i din for:
for (int i = 1; i <= tal ; i++)
        cout << i;
  1. Du får göra en variabel som du adderar ihop alla talen i. Summan av talen är ju just summan, dvs alla talen ihopplussade.
void main()
{
    int antal;
    int tal;
    int sum = 0;

    cout << "Skriv in antal tal du vill räkna ut summan på: ";
    cin >> antal;

    for (int i = antal; i>0 ; i--)
    {
        cout << "Skriv in ett tal: ";
        cin >> tal;
        sum += tal; // lägg till det inlästa talet i din summa-variabel
    }

    cout << sum;

}
enrosabananMedlem sedan maj 200736 inlägg
#3
#include <iostream>
using namespace std;

void main()
{
	int tal1;
	int tal2;

	cout << "Skriv in ett tal: ";
	cin >> tal1;

	cout << "Skriv in ett tal till: ";
	cin >> tal2;

	if (tal1 > tal2)
		cout << tal1 << "är större än" << tal2 << endl;

	if (tal2 < tal1)
		cout << tal2 << "är större än" << tal1 << endl;

	else
		cout << "De båda talen är lika stora" << endl;

}

Jag förstår tyvärr inte riktigt hur du menar att jag ska göra? Det var koden till min första fråga.
Jag ska även göra en likadan som denna fast med en funktion. Så jag antar att denna ska vara utan funktion i uträknandet. Eller hur det nu fungerar?

Tack så mycket för svaren på de två andra frågorna.

spangoMedlem sedan juni 20008 205 inlägg
#4

Ditt exempel är ju nästan precis samma sak som jag skrev, fast jag använde i istället för tal1 och konstanten 0 istället för variabeln tal2. Alltså blir det:

	if (tal1 > tal2)
		cout << tal1 << "är större än" << tal2 << endl;
	else if (tal2 < tal1)
		cout << tal2 << "är större än" << tal1 << endl;
	else
		cout << "De båda talen är lika stora" << endl;

Det blir samma effekt som om man skriver:

	if (tal1 > tal2)
		cout << tal1 << "är större än" << tal2 << endl;
	else {
		if (tal2 < tal1)
			cout << tal2 << "är större än" << tal1 << endl;
		else
			cout << "De båda talen är lika stora" << endl;
	}

Vad gäller det där med funktionen så antar jag att den ska ta emot två tal, och sen kolla om de är lika med, större än, eller mindre än varandra. Jag ger dig inte hela koden - du ska få jobba lite också :) - men typ så här:

Först och främst tittar vi på hur din mainfunktion ska se ut. Vi tar bort hela if-konstruktionen och byter ut det mot ett anrop av funktionen som vi ännu inte skrivit:

void main()
{
	int tal1;
	int tal2;

	cout << "Skriv in ett tal: ";
	cin >> tal1;

	cout << "Skriv in ett tal till: ";
	cin >> tal2;

	// Anropa funktion som jämför talen
	compare_numbers(tal1, tal2);

}

Så, då behöver vi göra en funktion som heter compare_numbers. Allt den ska göra är egentligen att innehålla if-satsen enligt ovan:

void compare_numbers(int tal1, int tal2)
{
	// lägg in if-satsen som jämför talen och gör utskrifter
}

Sen behöver vi deklarera funktionen så att vi kan använda den i main(). Deklaration görs med att man bara skriver funktionshuvudet utanför alla funktioner: void compare_numbers(int tal1, int tal2);

Ditt hela program blir då alltså något i stil med:

#include <iostream>
using namespace std;

// Deklarera vår jämförelsefunktion så att vi kan använda den från main
void compare_numbers(int tal1, int tal2);

void main()
{
	int tal1;
	int tal2;

	cout << "Skriv in ett tal: ";
	cin >> tal1;

	cout << "Skriv in ett tal till: ";
	cin >> tal2;

	// Anropa funktion som jämför talen
	compare_numbers(tal1, tal2);

}

void compare_numbers(int tal1, int tal2)
{
	// jämför talen
}
enrosabananMedlem sedan maj 200736 inlägg
#5

De där två första verkar inte funka alls för mig. Jag vet inte riktigt vad jag gör för fel för vilka tal jag än skriver in tar den else. Programmet skriver alltså ut att båda talen är lika stora oavsett vilka tal jag skriver.

Det där andra med funktionen ska jag försöka förstå nu :)

spangoMedlem sedan juni 20008 205 inlägg
#6

Det är inte så att du gjort nåt misstag så att de faktiskt är lika stora? Prova att skriva ut cout << "De båda talen (" << tal << " och " << tal2 <<") är lika stora" << endl;

enrosabananMedlem sedan maj 200736 inlägg
#7

Det funkar om tal1 är större än tal2 men inte om tal2 är större än tal1.

spangoMedlem sedan juni 20008 205 inlägg
#8

Njae, men utskrifterna blir likadana från båda fallen. Om tal1 = 3 och tal2 = 4 skrivs det ut att "4 är större än 3", och om tal1 = 4 och tal2 = 3 skrivs det också ut att "4 är större än 3". Det är dock ingen bugg...

enrosabananMedlem sedan maj 200736 inlägg
#9

Näe, så blir det inte när jag kör programmet. Om tal1 = 3 och tal2 = 4 så skriver programmet ut "De båda talen är lika stora." men om tal1 = 4 och tal2 = 3 så skriver programmet ut rätt, alltså "4 är större än 3"

spangoMedlem sedan juni 20008 205 inlägg
#10

dubbelpost...

spangoMedlem sedan juni 20008 205 inlägg
#11

Ja... just det. Ser det nu. Jämförelsen i den andra iffen är trasig, den kollar ju tal2 < tal1. Det ska ju vara tvärtom.

enrosabananMedlem sedan maj 200736 inlägg
#12

Oj, det var visst inte så svårt fel, men tack endå :)

Nu försöker jag mig på den där med funktionen men förstår inte riktigt hur jag ska göra för att använda funktionen.

#include <iostream>
using namespace std;

int compare_numbers(int tal1, int tal2);

void main  ()
{
	int tal1, tal2;

	cout << "Skriv in ett tal: ";
	cin >> tal1;

	cout << "Skriv in ett tal till: ";
	cin >> tal2;

	int compare = compare_numbers(tal1, tal2);

	cout << "Det minsta talet är: " << compare << endl;

}

int compare(int tal1, int tal2);

{
	return tal1 tal2;
}
yadorMedlem sedan mars 2004455 inlägg
#13

void main() ----> int main()

int compare_numbers(int tal1, int tal2)
{
	return (tal1>tal2)?tal2:tal1;
}
133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)