Gå til innhold

[Løst]Forløkke problematikk i C++


Anbefalte innlegg

Noen som kan forklare meg hva den førtse for-løkken egentlig gjør?

Jeg skjønner jo at den førtse sørger for at innholdet i tabellen blir presentert på rett sted.

 

På forhånd takk...eksamen venter! :hmm:

 

 

 

// utgift.cpp

//

// Et program som regner ut hvor store utgifter du har i

// de ulike kategoriene

//

#include <iostream>

using namespace std;

 

const int antallKategorier = 10;

 

void main()

{

double sum[antallKategorier];

double utgift;

int kategori;

int teller;

 

for (teller = 0; teller < antallKategorier; teller++) {

sum[teller] = 0.0;

}

cout << "Kategorinummer maa vere mellom 0 og ";

cout << antallKategorier - 1 << endl;

cout << "Negativt kategorinummer avslutter. " << endl;

cout << "Angi kategorinummer og utgift: ";

 

cin >> kategori;

 

while (kategori > -1) {

cin >> utgift;

sum[kategori] += utgift;

cout << "Neste kategori og utgift: ";

cin >> kategori;

}

cout << endl << "Kategori Utgift" << endl;

 

for (teller = 0; teller < antallKategorier; teller++) {

cout << " " << teller << " " << sum[teller] << endl;

}

 

system("pause");

 

} // main

Lenke til kommentar
Videoannonse
Annonse

Den første for-løkka initialiserer elementene i sum-tabellen. Når tabellen opprettes har elementene en uviss verdi; de er uinitialiserte. for-løkka looper gjennom tabellen og setter alle elementene til 0.0.

 

(Er ikke dette innlysende, egentlig?)

Lenke til kommentar

Takker og bukker!

 

Jo innlysende er det sikkert, men ikke nødvendigvis for en som ikke er så veldig stødig i C++ og som har fåt firkantede øyne etter å ha sittet ved PCen i hele dag. Ser jo nå at det er rimelig logisk det du sier.

Lenke til kommentar

<< ("left shift") gjør at du flytter hver enkelt bit ett hak mot venstre.

Dvs. at hvis du har tallet 2, som i binær er 10, og skifter det ett hakk mot venstre, får du 100 (010 -> 100, tallet flyttes mot venstre), som tilsvarer 4 i titallssystemet.

 

Kort sagt betyr dette at for hvert venstre-skift dobles tallet. Tre venstre-skift vil dermed si å multiplisere tallet med 2^3. Fire venstre-skift tilsvarer å multiplisere med 2^4, osv.

 

Capice?

Lenke til kommentar
bare sånn ut av nysgjerrighet,.. er det ikke mulig å bruke bzero funksjonen til å nulle ut i stedet for løkken ? hvis du inkluderer string.h.

 

bzero(sum, antallKategorier)

8707757[/snapback]

 

Enda kortere:

double sum[antallKategorier] = {0};

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...