Gå til innhold

Bone's Offisielle C++ hjelpetråd


Anbefalte innlegg

// this program determines whether a person has exceeded their credit limit or not
// by

#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::fixed;

#include <iomanip>
using std::setprecision;

int main()
{
  int accountNumber;
  double beginningBalance;
  double totalCharges;
  double totalCredits;
  double creditLimit;
  double newBalance;

  cout << "Enter account number (-1 to end): ";
  cin >> accountNumber;

  while ( accountNumber != -1 ){
        cout << "Enter beginning balance: ";
        cin >> beginningBalance;

        cout << "Enter total charges: ";
        cin >> totalCharges;

        cout << "Enter total credits: ";
        cin >> totalCredits;

        cout << "Enter credit limit: ";
        cin >> creditLimit;

  newBalance = beginningBalance + totalCredits;


  if ( newBalance > creditLimit ) {
     cout << "Account:      " << accountNumber << endl;
     cout << "Credit limit: " << creditLimit << endl;
     cout << "Balance:      " << newBalance << endl;
     cout << "Credit limit exceeded" << endl;

   cout << "\nEnter account number (-1 to end) : ";
      cin >> accountNumber;

}

  else  {
      cout << "\nEnter account number (-1 to end) : ";
      cin >> accountNumber;
      
  }



}

     cout << "\nProgram terminated.";
     system("pause");
     return 0;
}

 

dette burde være rett om C++ behandler if setninger på samme måte om Java. Og hvis jeg anntar at programmet ditt ikke avslutter men bare venter på input fra

 

  else 
      cout << "\nEnter account number (-1 to end) : ";
      cin >> accountNumber;

 

Siden cout blir regnet som en del if setningen mens cin blir kjørt uansett som en del av loopen.

Lenke til kommentar
Videoannonse
Annonse

GUI med C og GTK virker helt kurrant, men kan jeg bruke C++ og GTK?

Bruker jeg C får jeg følelsen av å ikke dra så mye nytte av det, læreboken jeg følger er trossalt C++.

Alt av eksempler er jo med C på gtk sine nettsider, så hvordan kan jeg egentlig compile dette under C++?

Lenke til kommentar
  • 3 uker senere...

Hvorfor kan jeg ikke returne en string in funksjonen get_calc_type her?

(Fjernet en del kode)

 

#include <iostream>

#include <string>

#include <cstdlib>

using namespace std;

 

int get_calc_type(int a)

{

    string b;

    if (a == 1) { b = "+"; }

    if (a == 2) { b = "-"; }

    return (b);

}

Lenke til kommentar
Hvorfor kan jeg ikke returne en string in funksjonen get_calc_type her?

(Fjernet en del kode)

 

#include <iostream>

#include <string>

#include <cstdlib>

using namespace std;

 

int get_calc_type(int a)

{

    string b;

    if (a == 1) { b = "+"; }

    if (a == 2) { b = "-"; }

    return (b);

}

8786097[/snapback]

 

EDIT: Fjerna det dårlige eksempelet og legger i stedet til denne forklaringen:

 

Du må definere funksjonen til å returnere string og ikke int slik den nå gjør.

Endret av Jaffe
Lenke til kommentar
Og jeg vet heller ikke om det er mulig å bruke char som returtype med resten av koden din, men da må du uansett huske å endre returtypen til string.

8786233[/snapback]

Du mener å gjøre om til string der funksjonen brukes, eller? :hmm:

 

Edit: Det returnerer ASCII koden ja - hvordan gjør jeg det om til string?

Endret av MartinLande
Lenke til kommentar
Og jeg vet heller ikke om det er mulig å bruke char som returtype med resten av koden din, men da må du uansett huske å endre returtypen til string.

8786233[/snapback]

Du mener å gjøre om til string der funksjonen brukes, eller? :hmm:

 

Edit: Det returnerer ASCII koden ja - hvordan gjør jeg det om til string?

8786307[/snapback]

 

Den opprinnelige funksjon din kan ikke returnere en string fordi den er definert til å returnere int.

 

CODE

string get_calc_type(int a)

{

string b;

 

if (a == 1) b = "+";

if (a == 2) b = "-";

return b;

}

 

Slik blir da funksjonen din. Glem det jeg sa om char over.

Lenke til kommentar
Kan noen linke til en liste over hva de forskjellige #include og namespace filene inneholder, og hvilke funksjoner de har?

Har lett på google.

8787795[/snapback]

 

Namespace har ingenting med #include eller filer å gjøre, et namespace er et "område" der et navn på noe er gjeldende. Man kan ha flere forskjellige namespaces der det kan være definert en funksjon eller variabel med samme navn i hvert namespace, uten at det oppstår en konflikt. Når man referer til noe i et namespace bruker man navnet på namespacet etterfulgt av :: og så det man refererer til:

 

std::cout << "Heisann\n";

 

Det nøkkelordet using namespace gjør er å si at "fra nå av er xxxx standardnamespace, så dersom det ikke eksplisitt blir oppgitt et namespace, antas xxxx å være namespacet." Da slipper man å oppgi namespacet foran, så det er derfor using namespace fører til at f.eks. cout kan skrives uten. (Kom gjerne med en bedre forklaring en eller annen)

 

Når det gjelder "#include-filer" antar jeg du mener standardbiblioteket til C++ (og evt. også C). Du finner en oversikt her: http://www.cplusplus.com/reference/ . I menyen til venstre velger du biblioteket du vil se info om (hvilke filer du må inkludere og hvilke funksjoner de har).

Endret av Jaffe
Lenke til kommentar
  • 1 måned senere...

Eg lurar på ein ting; korleis kan eg lese input kontinuerleg, dvs. at om ein tastar inn t.d 9, så skjer det ein ting, utan at ein må trykke enter?

 

No må ein gjere det slik:

int number = 0;
cin >> number;

if (number == 9) {
funksjon();
}

 

 

Eg kunne tenkje meg at ein slapp å trykke enter, at funksjon() vart utløyst når ein trykkjer på 9.

Endret av Arne
Lenke til kommentar
Eg lurar på ein ting; korleis kan eg lese input kontinuerleg, dvs. at om ein tastar inn t.d 9, så skjer det ein ting, utan at ein må trykke enter?

 

No må ein gjere det slik:

int number = 0;
cin >> number;

if (number = 9) {
funksjon();
}

 

 

Eg kunne tenkje meg at ein slapp å trykke enter, at funksjon() vart utløyst når ein trykkjer på 9.

9122248[/snapback]

 

Du kan bruke C-funksjonen getchar til dette. Da må du huske å inkludere cstdio.

 

Forresten, (dette er kanskje en skrivefeil fra din side) du kan ikke bruke tilordningsoperatøren (=) til å sammenligne ting. Du må bruke ==.

 

Frysning: Hvilket API snakker du om? Det er jo lov å være litt mer spesifikk ...

Lenke til kommentar

Hei

 

Lurer på hvordan jeg kan få en løkke til å gå helt til du trykker inn en bokstav.

 

 

while (on != 0) {

cin >> on;

funksjon();
}

 

Her vil den jo stoppe å vente på ett tastetrykk før den fortsetter.

Lurer da på en måte løkka fortsetter å gå helt til noen trykker på noe.

 

takker for svar :)

Endret av Glutar
Lenke til kommentar

Eg lurar på to nye ting som eg håpar at nokon kan gi meg eit nokolunde fornufteg svar på. :)

 

1: Eg har ikkje forstått dette med pointers heilt. Vil denne koden...

int x, *y;
y = &x

...vere det same som:

 

1: Eg lagar ein integer-variabel med namnet x, og eg lagar ein int-pointer med namnet y!

2: y skal ha akkurat den same verdien som x!

 

Vil dette seie at ein pointer er det same som ein slags referanse-nøkkel? Som gir y beskjed at verdien hans til ein kvar tid skal vere den same som x? Hadde vore fint med ein oppklaring her. :)

 

 

2:

Kva skal ein bruke? \n eller endl?

Lenke til kommentar
Eg lurar på to nye ting som eg håpar at nokon kan gi meg eit nokolunde fornufteg svar på. :)

 

1: Eg har ikkje forstått dette med pointers heilt. Vil denne koden...

int x, *y;
y = &x

...vere det same som:

 

1: Eg lagar ein integer-variabel med namnet x, og eg lagar ein int-pointer med namnet y!

2: y skal ha akkurat den same verdien som x!

9129964[/snapback]

 

vel, x og y er ikke to tall men et tall og en peker så de vil ikke kunne ha samme verdi.

 

Kan en bil og et eple ha like mange hestekrefter? (vel ja 0, men ikke tenk på det :))

 

Det er mange måter å prøve å forstå pekere.

Pekere er et tall som int det er som regel 32bit (32bit prosessorer) men kan også ha andre størrelser. Verdien som pekeren har angir hvor i minnet den typen befinner seg.

 

En int peker med verdi 100 betyr at den henviser til en int som starter ved byte 100 i minnet

 

I linje 1 i koden du laget blir x deklarert som int og y som en peker til en int.

I linje 2 sier du at y skal peke til det stedet i minne der x befinner seg.

 

Etter linje 2 vil følgende alltid være sann så lenge du ikke gjøre noe med y.

x==*y

 

Vil dette seie at ein pointer er det same som ein slags referanse-nøkkel? Som gir y beskjed at verdien hans til ein kvar tid skal vere den same som x? Hadde vore fint med ein oppklaring her. :)

9129964[/snapback]

 

En peker sier hvor verdien befinner seg så dataen leser egentlig samme verdi.

 

f. eks.

Olav vil sammenligne bilen sin med Per og ber Kari være dommer

Olav kommer kjørende med bilen sin til Kari, men Per sier at bilen befinner seg samme sted som Olav sin Så bilen er den samme og alle er glade.. untatt Olav :(

 

2:

Kva skal ein bruke? \n eller endl?

9129964[/snapback]

 

Jeg ville brukt \n i C og endl i c++ sine funksjoner.

 

Linker til sider som sikkert forklarer pointere bedre enn meg

Pointers: Beginning to Intermediate

How Pointers Really Work

 

håper det hjalp

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...