Avatar billede tast Nybegynder
29. august 1999 - 00:33 Der er 5 kommentarer og
2 løsninger

cin>>

Når man kører dette program så springer programmet den første cin>> komando over!!!!
Hvis man fjerner cin>> og bare skriver Feks stor=2; så springer den ikke noget over!

Hvad gør jeg galt?

Dette sker:
Person nr: 0s data://denne linie springer den over, så man ikke kan skrive noget!!!! det vil jeg ikke have
Person nr: 1s data://Her fortsætter den, og her kan man skrive.......

Her er programmet:

# include <iostream>
# include <cstdio>
using namespace std;

int main(){

    int stor,a;
    char data[10][20];
   
    cout<<"Hvor mange personer er der: ";
                cin>>stor;
    cout<<"\n\n";
                cout<<"Skriv de data de forskaellige personer skal indeholde.\n\n";
   
    for (a=0;a<=stor;a++){
        cout<<"Person nr: "<<a<<"s data: ";
        gets(data[a]);
        cout<<"\n";
    }

    return 0;
}

Tast
Avatar billede butthead Nybegynder
29. august 1999 - 01:04 #1
Jeg har prøvet Compile det i BC++ 5.01 og den kunne ikke lide "#include <cstdio>" og heller ikke "using namespace std;"

Det med "cstdio", ved jeg godt hvor for !! men hvad er det du bruger til at udvikle i ??

Jeg kan få programmet til at køre til "Hvor mange personer er der:" også vil den ikke mere !! Kan ikke skrive noget som helst

Har måske en løsning !!
for (a=0;a<=stor;)
{
  cout<<"person nr: "<<a<<"s data: ";
  ....
  cout<<"\n";
  a++;
}

Dette skulle virke da du så venter med at forøge "a" til du er færdig med at bruge den !!

Butthead.
Avatar billede butthead Nybegynder
29. august 1999 - 01:16 #2
Jeg har fået den til at køre !! både med og uden ændringer !! Og her er der ikke nogen forskel om jeg gør det på den ene eller anden måde !! Men jeg kan se at For løkken tælle en for meget med !!! Du kunne ændre løkken til dette :  "for(a=0;a<stor;)" eller "for(a=1;a<=stor;)" hvor ved den kun vil køre løkken det antal gange som bruger siger det skal !!

Butthead.
Avatar billede soepro Nybegynder
30. august 1999 - 09:35 #3
Jeg kan ligesom butthead, også kun se den ene deciderede fejl med 'for' løkken. Husk på at i C er alle arrays 0-indekserede, dvs. det første element i tabellen har nummer 0. Hvis du derfor gør som butthead foreslår, får du ikke noget i tabellens første element.

MEN ... hvad med validering af 'stor' variablen ? Hvis nogen indtaster mere end 10 her, går dit program på røv og albuer - du har jo kun lavet tabellen på 10 elementer ! Jeg ville lægge følgende ind omkring læsningen af 'stor' for at undgå at programmet dumper:

cout<<"Hvor mange personer er der: ";
stor = 0;
do
{
  cin>>stor;
  if (stor > 10)
    cout << "Max. 10 - prøv igen.\n";
} while stor > 10;

Værdien 0 for stor - som jo også er ugyldig, kunne så være den værdi du brugte hvis du ville afbryde programmet allerede der:

if (stor < 1)
  return 1; /* Aborted. */
Avatar billede tast Nybegynder
14. september 1999 - 21:06 #4
Ok.....
Avatar billede bjarke Nybegynder
07. oktober 1999 - 08:31 #5
tast >> Kunne du ikke tage og acceptere, hvis du har fået et svar du kan bruge - ellers skriv igen!
Avatar billede tast Nybegynder
07. oktober 1999 - 18:07 #6
Sorry, jeg troede at jeg havde accepteret,- min fejl.

Tast
Avatar billede bjarke Nybegynder
08. oktober 1999 - 08:56 #7
Alt i orden - det er bare lidt irriterende med dem der stiller et spørgsmål og så aldrig vender tilbage ;-)
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