Gå till innehåll
Just nu i M3-nätverket

Hjälp att syna kod, c++, får ett fel jag inte förstår.


jonibygg

Rekommendera Poster

Hej!

 

När jag kör nedanstående program så går det fint att skriva in hur många konton som skall skapas. Programmet går vidare och frågar efter Namn på kontohavare, detta görs i funktionen nyttKonto. Efter min inmatning trycker jag enter och där händer inget mer. Antagligen har detta med cin-satserna att göra, men jag har inte riktigt fattat det här med cin.ignor osv, när behövs det ena osv.

 

Tacksam för hjälp med detta, framför allt så jag förstår vad som är fel.

//  Bankkonto
//  main.cpp
//  Uppgift 2.3
//
//  Created by Johan Nilsson on 2011-05-22.
//  Copyright 2011. All rights reserved.
//

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

struct Konto {
   string namn;
   double saldo;
   double ranta;
};

Konto nyttKonto();
void visaSaldo(Konto s);
void ranteKostnad(Konto m);
void clearConsol();

int main (int argc, const char * argv[])
{
   //Bestäm dimensionen / antal konton som skall behandlas
   int s;
   cout << "Antal konto?" << endl ;
   cin >> s;

   //Sätt dimensionen på minaKonton utifrån input variabel s
   //samt fyll på med info i for-loopen.
   Konto* minaKonton = new Konto[s];

   for (int i = 0; i < s; i++) {
       minaKonton[i] = nyttKonto();
   }
   //Skriv ut kontohavare och saldo på respektive konto i en tabell.
   clearConsol();
   cout << "Saldo: " << endl;
   cout << left << setw(25) << "Kontohavare" << setw(1) << "Saldo" << endl ;
   for (int i = 0; i < s; i++) {
       visaSaldo(minaKonton[i]);
   }
   //Skriv ut kontohavare och räntekostnad på respektive konto i en tabell
   clearConsol();
   cout << "Räntekostnad:" << endl ;
   cout << left << setw(25) << "Kontohavare" << setw(1) << "Räntekostnad" << endl ;
   for (int i = 0; i < s; i++) {
       ranteKostnad(minaKonton[i]);
   }
   return 0;
}
//Fyll på strukturen Konto
Konto nyttKonto()
{
   Konto s;
   cout << "Mata in Kontohavare: " << endl ;
   getline(cin, s.namn);
   cout << "Insättning: " << endl ;
   cin >> s.saldo;
   cout << "Ränta i %: " << endl ;
   cin >> s.ranta;
   cin.ignore(1000, '\n');

   return s; 
}
//Skriv ut saldo, indata är minaKonton    
void visaSaldo(Konto s)
{
   cout << left << setw(25) << s.namn << setw(1) << s.saldo << " kr" << endl ;

}
//Skriv ut räntekostnad, indata är minaKonton 
void ranteKostnad(Konto m)
{
   double rantaKr = (m.saldo * m.ranta)/100;
   cout << left << setw(25) << m.namn << setw(1) << rantaKr << " kr" << endl ;
}
//Rensa konsolen på antal blank rader
void clearConsol()
{
   const int blankRader = 5;    
   for (int i = 0; i < blankRader; i++) {
       cout << '\n';
   } 
}

Länk till kommentar
Dela på andra webbplatser

Jag la in en

cin.ignore(1000, '\n');

efter du läst in "antal konton".

 

Är inte heller riktigt haj på cin.ignore.

 

Kommer ihåg att jag brukade använda getline istället.

Länk till kommentar
Dela på andra webbplatser

Tack för ditt förslag, testade det, fungerade inte ändå???

Klippte ut all kod i main.cpp och klistrade in i Textmate och körde programmet därifrån, då fungerade det.

Öppnade ett nytt projekt i Xcode och klistrade in samma kod och körde run, då fungerade det.

 

Det som är konstigt är att min kod har fungerat, jag skrev den tidigare i veckan när jag satt på ett hotell och skrotade, så det jag skulle göra idag var bara att kommentera koden lite grann tänkte jag. När det var gjort valde jag att testa den och då fungerade det inte, jag sparar min kod på dropbox, kanske kan det vara det som är problemet?

 

Strunt samma nu funkar samma kod som inte fungerade tidigare.

Länk till kommentar
Dela på andra webbplatser

Så här gör Dropbox med mina tecken ibland?

Svenska tecken blir feltolkade, kanske var det något sådant i den andra koden som gjorde att det inte fungerade.

 

 

Dator nyDator()
{
   Dator d;
   cout << "Skriv in dina data för datorn \nMinne: ";
   cin >> d.minne;
   cout << "Hårddisk: "; 
   cin >> d.hdd; 
   cout << "Bildskärm: ";
   cin >> d.bildskarm;
   return d;
}

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...