2009-03-12, 23:50
  #1
Medlem
Kod:
#include <iostream>
#include <fstream>
using namespace std;

void main()
{
    
system("cls");

    
int iKundNr=0iPostNr=0;
    
char kfNmn[20] = "";
    
char keNmn[20] = "";
    
char kpAdress[20] = "";
    
char kpStad[15] = "";

    
ifstream infil("kund_databas.txt");

    
cout << "\n Kundnr F\x94rnamn     Efternamn     Postadress      Postnr   Stad";
    
cout << "\n ====== =======     =========     ==========      ======   ====\n";

    while(
infil >> iKundNr >> kfNmn >> keNmn >> kpAdress >> iPostNr >> kpStad)

    
cout << " " << iKundNr << "   " << kfNmn << "\t    " << keNmn << "\t  " << kpAdress << "\t  " << iPostNr << "    " << kpStad;

    
infil.close();
    
cin.get();
    
system("cls");


Skapa en txt fil som heter kund_databas och skriv in t.ex. dessa saker.
Utelämna //, dessa är bara kommentar till vad det hänvisar till.


Kod:
1001 // Kundnummer
Gunnar // Förnamn
Bengtsson // Efternamn
Lövstigen 23 // Postadress
49871 // Postnummer
Fulvalla // Stad


Här är då problemet. När jag försöker läsa in filen så flyttar den postadressens gatunummer till postnummervariabeln.
Jag vet inte hur jag kan skriva om while-loopen så att den tar med blankraden i char eller int typer.

Jag kan inte använda mig av t.ex. while (infil.getline(iKundNr)...) därför att jag har både int och char typer i while-loopen
och den vill inte kompilera med getline för int typer. Det är så jag uppfattar det som.
__________________
Senast redigerad av Moodilic 2009-03-12 kl. 23:53.
Citera
2009-03-13, 00:05
  #2
Medlem
cpapas avatar
Fullösningen är ju att läsa in gatunummret som ett eget värde och gå vidare därifrån.

Det beror ju på hur fint du vill göra det
Citera
2009-03-13, 00:21
  #3
Medlem
Citat:
Ursprungligen postat av cpapa
Fullösningen är ju att läsa in gatunummret som ett eget värde och gå vidare därifrån.

Det beror ju på hur fint du vill göra det

Så ful skulle jag aldrig vilja ha det, haha.

Jag försökte även med en do-while men fick inge kläm på det. Snarare visste jag inte hur man skulle skriva, jag chansade mest.

Finns det något annat sätt att skriva ovanstående kod om man gör om den?
Citera
2009-03-13, 00:44
  #4
Medlem
cpapas avatar
Citat:
Ursprungligen postat av Moodilic
Så ful skulle jag aldrig vilja ha det, haha.

Jag försökte även med en do-while men fick inge kläm på det. Snarare visste jag inte hur man skulle skriva, jag chansade mest.

Finns det något annat sätt att skriva ovanstående kod om man gör om den?

Här kanske:
http://www.cplusplus.com/reference/i...lators/ws.html

sätt in
Kod:
>> ws >> 
före eller efter kpAdress, kanske löser problemet ... men då får du kanske inget mellanslag mellan gata och nummer ...

PS. ... det problemet kanske kan lösas med någon av följande:
http://www.cplusplus.com/reference/i...rs/skipws.html
http://www.cplusplus.com/reference/i.../noskipws.html

PS2. så här kanske:
Kod:
... >> noskipws >> kpAdress >> skipws >> ... 
__________________
Senast redigerad av cpapa 2009-03-13 kl. 00:47.
Citera
2009-03-13, 00:46
  #5
Medlem
Citat:
Ursprungligen postat av cpapa
Här kanske:
http://www.cplusplus.com/reference/i...lators/ws.html

sätt in
Kod:
>> ws >> 
före eller efter kpAdress, kanske löser problemet ... men då får du kanske inget mellanslag mellan gata och nummer ...

PS. ... det problemet kanske kan lösas med någon av följande:
http://www.cplusplus.com/reference/i...rs/skipws.html
http://www.cplusplus.com/reference/i.../noskipws.html


Tackar!
Ska testa detta. Återkommer med svar lite senare.
Citera
2009-03-13, 00:48
  #6
Medlem
cpapas avatar
Citat:
Ursprungligen postat av Moodilic
Tackar!
Ska testa detta. Återkommer med svar lite senare.

Fan vad du högg

Kolla mitt PS2 om det inte fungerade!
Citera
2009-03-13, 00:55
  #7
Medlem
Citat:
Ursprungligen postat av cpapa
Fan vad du högg

Kolla mitt PS2 om det inte fungerade!

Inget av dessa funkade.
och PS2 skrev inte ut ett skit.


Grejen är ju det här att när jag ska skapa en ny kund så använder jag en char till kpostAdress (k betyder att jag har använt en char, hade jag haft c hade det betytt constant eller något annat som kanske finns)
Citera
2009-03-13, 01:01
  #8
Medlem
Haha detta är rätt fult gjort men nu visar den numret iaf.

Kod:
int ipAdressNr=0;

// Kod.....

while(infil >> iKundNr >> kfNmn >> keNmn >> kpAdress >> ipAdressNr >> iPostNr >> kpStad)

cout << " " << iKundNr << "   " << kfNmn << "\t    " << keNmn << "\t  " << kpAdress << " " << ipAdressNr << "\t  " << iPostNr << "    " << kpStad
Citera
2009-03-13, 01:02
  #9
Medlem
cpapas avatar
Jag tycker att det börjar lukta fullösning

PS. Du hann före
Citera
2009-03-13, 01:06
  #10
Medlem
Citat:
Ursprungligen postat av cpapa
Jag tycker att det börjar lukta fullösning

PS. Du hann före

Hehe. Well, som du ser, jag är inte alls bra på detta. Jag tror inte jag kan maila
iväg koden till min lärare då igår var sista handledningen innan tentan.

I värsta fall får jag använda mig av denna fullösning och göra en kommentar
om att jag inte vet något annat sätt som är bättre. Detta är trots allt en nybörjarkurs i programmering .
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