Avatar billede intel4ever Nybegynder
13. november 2003 - 09:16 Der er 9 kommentarer og
2 løsninger

Gentagelse med while

Jeg skal lave et lille program som kan gentages hvis brugeren ønsker det, der må ikke bruges goto og kun y/n tasterne skal være aktive, her er den nuværende kildetext.




(kopier texten til et program, så den bedere kan læses!)

#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;

int main()

{
    float computer = 0;
    float skearm = 0;
    float printer = 0;
    float spris = 0;
    int rabatt = 0;
    float rabat = 0;
    float sprisrabat =0;
    float moms = 0;
    float ialt = 0;
    float protildec = 0;
    char i = 'y';
   
        //Info
    cout << "Program til at beregne et standart computerkoeb." << endl
        << "Udviklet af FreeX Studio."
        << endl << endl;

    do
    {
        //Indtastninger
        printf("Indtast prisen paa Computeren: ");
        scanf("%f", &computer);

        printf("Indtast prisen paa Skeamen: ");
        scanf("%f", &skearm);

        printf("Indtast prisen paa Printeren: ");
        scanf("%f", &printer);

        printf("indtast rabatten i %: ");
        scanf("%d", &rabatt);

        //Udregninger
        spris = computer + skearm + printer;
        protildec = rabatt / 100.0;
        rabat = spris * protildec;
        sprisrabat = spris - rabat;
        moms = sprisrabat * 0.25;
        ialt = sprisrabat + moms;

        //visning på skærm
        printf("\n\n\n\nUdstyret vil koste foelgende:\n\n ");
        printf("Computer =                %15.2f kr.\n ", computer);
        printf("Skearm =                  %15.2f kr.\n ", skearm);
        printf("Printer =                  %15.2f kr.\n ", printer);
        printf("Samlet pris =              %15.2f kr.\n ", spris);
        printf("Rabat %d procent =        %15.2f kr.\n ", rabatt, rabat);
        printf("Samlet pris inkl. Rabat =  %15.2f kr.\n ", sprisrabat);
        printf("Moms 25 procent =          %15.2f kr.\n ", moms);
        printf("Pris ialt =                %15.2f kr.\n ", ialt);
         

        //løkken
        printf("\nVil du lave en ny udregning (y/n)\n");
        i = getch();
        printf("\n\n");
   
    }
  while(i == 'y');
       

       
        return 0;
}
Avatar billede arne_v Ekspert
13. november 2003 - 09:33 #1
Og det virker ikke ?
Avatar billede arne_v Ekspert
13. november 2003 - 09:35 #2
Det virker hos mig !
Avatar billede segmose Nybegynder
13. november 2003 - 10:10 #3
while(i == 'y');

skulle muligvis ændres til

while(i != 'n' && i != 'N');

Så man kun hopper ud vis man aktivt gør noget, i er heller ikke noget sigende navn.
Avatar billede intel4ever Nybegynder
13. november 2003 - 10:20 #4
Jo det virker skam fint, men det som der mangler er at lige nu ville programmet kun gentages hvis man taster y. jeg vil gerne lave det sådan at der ikke sker noget hvis man fx. trykker noget andet, fx hvis man trykker k vil programmet jo også afslutte. kan det ikke lade sig gøre at lave de sådan at det kun er y og n der er aktive, ikke andre taster.
Avatar billede segmose Nybegynder
13. november 2003 - 10:47 #5
Ja, det vil mit forslag herover gøre, så man skal trykke n eller N for at komme ud.
Avatar billede segmose Nybegynder
13. november 2003 - 10:50 #6
evt. kan du lave følgende følgende extra løkke.
  do {
        //løkken
        printf("\nVil du lave en ny udregning (y/n)\n");
        i = getch();
        printf("\n\n");
  }  while (i != 'n' && i != 'N' && i != 'y' && i != 'Y');

Så man er tvunget til at vælg ja eller nej.
Avatar billede squashguy Nybegynder
13. november 2003 - 11:20 #7
..
  printf("\nVil du lave en ny udregning (y/n)\n");
  printf("\n\n");
  do{
    i = getch();
    if(i => 'a') i -= 32; //uppercase
  }while(i != 'Y' && i != 'N');
}while(i == 'Y');
Avatar billede squashguy Nybegynder
13. november 2003 - 11:22 #8
tja den løsning er vel næsten identisk med segmoses, når jeg nu kigger nærmere efter..
Avatar billede arne_v Ekspert
13. november 2003 - 11:29 #9
ctype.h har en nydelig funktion toupper som jeg nok synes ville vær epænere.
Avatar billede intel4ever Nybegynder
13. november 2003 - 13:58 #10
Tak for hjælpen...fik det til at virke..
Avatar billede squashguy Nybegynder
13. november 2003 - 14:37 #11
arne>jeg kan godt lide at gøre tingene på den gove måde :p
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester