2011-03-30, 19:07
  #1
Medlem
Tjena har byggt ett sånt där litet program som räknar ner från valfritt heltal till 0. Problemet är att efter att den har gjort detta så lägger den till några skumma siffror efteråt. Ta en titt på koden, jag kan inte hitta problemet. Om jag matar in heltalet 10 får jag : 10,9,8,7,6,5,4,3,2,1,4469696
OBS! Jag övar på funktionsanrop hehe.

#include <iostream>
using namespace std;

int countDown(int n);

int main ()
{
int n;

cout << "Skriv in ett heltal "<<endl;
cin >> n;


cout << countDown(n) <<endl;



system("PAUSE");
return 0;
}

int countDown(int n)
{
while (n>0) {
cout << n << ",";
--n;
}
}
Citera
2011-03-30, 19:23
  #2
Medlem
ojns avatar
1. Kass rubrik, säger inget om ditt problem.
2. Inga CODE-/PHP-taggar, vilket gör koden svårläst.

Kod:
cout << countDown(n) <<endl
ser lite underlig ut. Bör väl bara vara
Kod:
countDown(n); 
?
Citera
2011-03-30, 19:35
  #3
Medlem
Tjenare!

Problemet du får grundar sig i att du har en funktion som inte returnerar något svar utan kör en loop, och svarar vad den tror är rätt, och sen när den är klar så svarar den med ett tal.

Din funktion är definerad som om den skulle ha en integer som returvärde, men den returnerar aldrig något.

void countDown(int n);

är rätt sätt att göra det på. Då säjer du att funktionen tar en int som indata, och retunerar inget. Utan du skriver bara till skärmen.

Sen när du vill göra detta, behöver inte heller kalla på cout, utan det räcker med det cout som du har i din funktion.

alltså som tidigare talare sagt.
Förslag:
Kod:
#include <iostream>
using namespace std;

void countDown(int n);
  
int main ()
{
    int n=0;

    cout << "Skriv in ett heltal "<<endl;
    cin >> n;

    countDown(n);

    return 0;
}   
  
void countDown(int n)
{
     while (n>=1) 
         cout <<  n-- << ",";
}      
__________________
Senast redigerad av Virr3 2011-03-30 kl. 19:38.
Citera
2011-03-30, 19:40
  #4
Medlem
Celenos avatar
Citat:
Ursprungligen postat av Treyarch
cout << countDown(n) <<endl;

int countDown(int n)
{
while (n>0) {
cout << n << ",";
--n;
}
}

countDown(10) skriver alltså ut själv först, är deklarerat som en int men returnerar ingenting, sen skriver du ut denna int som aldrig fått nåt värde därav ett skumt heltal, det som råkade ligga på den minnesadressen.

Vaddå, skulle det vara ett roligt test eller? För det var det inte.

Edit: Too late...
Citera
2011-03-30, 19:41
  #5
Medlem
Citat:
Ursprungligen postat av ojn
1. Kass rubrik, säger inget om ditt problem.
2. Inga CODE-/PHP-taggar, vilket gör koden svårläst.

Kod:
cout << countDown(n) <<endl
ser lite underlig ut. Bör väl bara vara
Kod:
countDown(n); 
?

1.Trodde någon med erfarenhet skulle se problemet direkt.
2. Svårläst? haha!

tack för att du försökte lösa den dock
Citera
2011-03-30, 19:45
  #6
Medlem
Citat:
Ursprungligen postat av Virr3
Tjenare!

Problemet du får grundar sig i att du har en funktion som inte returnerar något svar utan kör en loop, och svarar vad den tror är rätt, och sen när den är klar så svarar den med ett tal.

Din funktion är definerad som om den skulle ha en integer som returvärde, men den returnerar aldrig något.

void countDown(int n);

är rätt sätt att göra det på. Då säjer du att funktionen tar en int som indata, och retunerar inget. Utan du skriver bara till skärmen.

Sen när du vill göra detta, behöver inte heller kalla på cout, utan det räcker med det cout som du har i din funktion.

alltså som tidigare talare sagt.
Förslag:
Kod:
#include <iostream>
using namespace std;

void countDown(int n);
  
int main ()
{
    int n=0;

    cout << "Skriv in ett heltal "<<endl;
    cin >> n;

    countDown(n);

    return 0;
}   
  
void countDown(int n)
{
     while (n>=1) 
         cout <<  n-- << ",";
}      

Nu fungerar det tack så mycket för din hjälp
Citera
2011-03-30, 21:33
  #7
Medlem
Dubsteps avatar
Citat:
Ursprungligen postat av Treyarch
1.Trodde någon med erfarenhet skulle se problemet direkt.
2. Svårläst? haha!

tack för att du försökte lösa den dock
Jag kan tipsa dig om att du kommer få bra mycket bättre hjälp om du har en bra titel + använder kod-taggar

Dessutom försvinner risken för att reta upp mods, då dålig rubrik kan belönas med papperskorg & varning.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in