Avatar billede bootlab Nybegynder
18. september 2003 - 14:28 Der er 9 kommentarer og
2 løsninger

do while problem!

Hej :D

Jeg har lavet dette script som checker et heltal og udskriver hvilken grad man har fået:

//------------------------------------------------------
#include<iostream.h> // Inkludere det bibliotek som har "cin>>" & "cout<<".
#include <conio.h> // Bibliotek som bla. har getch().
//------------------------------------------------------

char udregn_grad(int score);
int main()
{
    int point(0); // Deklaration af point variabel.
    char grad; // Deklaration af grad variabel.
    // Indlæs et tal mellem 1 og 100.
    cout<< "Her finder vi din grad udfra hvor mange point du har faaet!\n"
        << "Indtast et tal mellem 1 og 100: ";
    cin>> point;
    // Test om tallet er imellem 1 og 100
    do
    {
        // Indlæs et tal mellem 1 og 100.
        point = 0;
        cout<< "Indtast et tal mellem 1 og 100: ";
        cin>> point;
    } while ((point < 0) && (point > 100));

    grad = udregn_grad(point);
    cout<< "\nMed " << point << " point faar du et: " << grad;
    getch();
}
char udregn_grad(int score)
{
    char bogstav;
    // score større end eller lig med 90.
    if (score >= 90)
    {
        bogstav = 'A';
    }
    // score større end eller lig med 80 og mindre end 90.
    if ((score >= 80)&&(score < 90))
    {
        bogstav = 'B';
    }
    // score større end eller lig med 70 og mindre end 80.
    if ((score >= 70)&&(score < 80))
    {
        bogstav = 'C';
    }
    if (score < 70)
    {
        bogstav = 'D';
    }
    return(bogstav);
}

//------------------------------------------------------

Hvorfor vil den kun 2 gange checke om tallet er mindre end 0 og større end 100, når jeg køre den i en .exe fil?
Avatar billede jpk Nybegynder
18. september 2003 - 14:36 #1
Du skal bruge

while ((point < 0) || (point > 100))
Avatar billede erikjacobsen Ekspert
18. september 2003 - 14:36 #2
Prøv at fjerne de to linier før do

      << "Indtast et tal mellem 1 og 100: ";
    cin>> point;

Du beder faktisk 2 gange om indlæsning.
Avatar billede jpk Nybegynder
18. september 2003 - 14:37 #3
point kan jo ikke både være mindre end 0 OG større end 100..!
Avatar billede jpk Nybegynder
18. september 2003 - 14:38 #4
Og du behøver iøvrigt ikke alle de paranteser...

while(point < 0 || point > 100)
Avatar billede jpk Nybegynder
18. september 2003 - 14:40 #5
Du kan godt lave en &&-konstellation, den skal så være:

while(!(point >= 0 && point <= 100))

men ikke just kønnere...
Avatar billede arne_v Ekspert
18. september 2003 - 14:41 #6
Nu er der mange som betragter det som god skik og brug at sætte
parenteser så alle expressions kan læses uden kendskab til
operator precedence.
Avatar billede bootlab Nybegynder
18. september 2003 - 14:49 #7
Takker drenge!!

Det hjalp :)
jkp> se'fø'li' er det -> while(point < 0 || point > 100)
erikjacobsen> ja for den da.... jeg behøver jo kun:
    cout  << "Indtast et tal mellem 1 og 100: ";
    cin>> point;
i min while statement!!

hvis i skal dele pointene så læg lige et svar erik!!

/boot
Avatar billede bootlab Nybegynder
18. september 2003 - 14:50 #8
okay arne .. så du mener det er godt man skriver:
while ((point < 0) || (point > 100)) ???
Avatar billede arne_v Ekspert
18. september 2003 - 14:56 #9
Begge er helt syntaktisk korrekte. Det er kun et spørgsmål om
kode stil.

Og det er et emne som der findes mange meninger om.

Lad os sige at jeg kan godt forstå argumentet. Og hvis jeg var
udviklings-chef kunne der meget vel blive udstukket en coding standard
som definerede, at sådan skulle man gøre det.

Men det er ikke altid jeg selv husker det.

:-)
Avatar billede erikjacobsen Ekspert
18. september 2003 - 15:04 #10
Et par guruer indenfor IT-verdenen har sagt: "When in doubt, parenthesize"

Når man vælger en "coding standard" skal det jo være for at gøre det
nemmere for mennesker at læse. Maskinerne er ligeglade.
Avatar billede bootlab Nybegynder
18. september 2003 - 15:08 #11
Jeg tror jeg fremover vil bruge løs af paranteser :)
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