Avatar billede virtualfriend Nybegynder
09. juli 2001 - 01:19 Der er 4 kommentarer og
1 løsning

Kan du se fejlen?

Hej venner,

Jeg har lavet denne lille algoritme, men den er ikke helt iorden. Kan du se fejlen??

#include <iostream.h>
#include<conio.h>
//---------------------------------------------------------------------------
//Program der soterer de indtastede tal faldne..

void Ombyt(int*,int*);
int main()
{
int Sort[10];

for(int i=0;i<10;i++){
cout<<\"indtast tal \"<<i<<\" \";
cin>>Sort[i];
}

int s=0,f=-1, arraysize=10;

for(int i=0;i<arraysize;i++) {
f++;
for(int i=0;i<arraysize-1;i++) {
if(Sort[f]<Sort[s+1]) Ombyt(&Sort[f],&Sort[s+1]);
s++; if(s>=arraysize-1)s=f; }
}

for(int i=0;i<arraysize;i++) cout<<Sort[i]<<endl;
getch();

}
void Ombyt(int *b,int*a) {
int hold=*a;
*a=*b;
*b=hold;
}
Avatar billede jakoba Nybegynder
09. juli 2001 - 07:54 #1
du har 2 for løkker med samme tællevariabel indeni hinanden;
  for(int i=0;i<arraysize;i++) {
    f++;
    for(int i=0;i<arraysize-1;i++) {  // i er akkerede i brug som tæller
din variabel s får ikke lejlighed til at \'starte forfra\' ved hver ny f-værdi

forslag:

#include <iostream.h>
#include<conio.h>
//---------------------------------------------------------------------------
//Program der soterer de indtastede tal faldne..

void Ombyt(int*,int*);

int main() {
  int arraysize=10;
  int Sort[arraysize];

  for(int i=0; i<arraysize; i++) {      // indlæser Sort[0]..Sort[9]
    cout<<\"indtast tal \"<<i<<\" \";
    cin>>Sort[i];
  }

  for(int f=0; f<arraysize-1; f++) {
    for(int s=f+1; s<arraysize; s++) { // vælg største og læg i Sort[f] *** OK
      if(Sort[f]<Sort[s])
        Ombyt(&Sort[f],&Sort[s]);
  }

  for(int i=0;i<arraysize;i++)  // udskriver sorteret array
    cout<<Sort[i]<<endl;
  getch();
};

void Ombyt(int *b,int *a) {
  int hold=*a;
  *a=*b;
  *b=hold;
}

mvh JakobA
Avatar billede jakoba Nybegynder
09. juli 2001 - 08:03 #2
Ups. jeg mangler en } i for løkkerne:

for(int f=0; f<arraysize-1; f++) {
    for(int s=f+1; s<arraysize; s++) { // vælg største og læg i Sort[f] *** OK
      if(Sort[f]<Sort[s])
        Ombyt(&Sort[f],&Sort[s]);
    }
  }
Avatar billede jakoba Nybegynder
09. juli 2001 - 08:08 #3
og burde main ikke være  void main() {
husker ikke om c++ brokker sig, men for skønhedens skyld ihvertfald.
Avatar billede erikjacobsen Ekspert
09. juli 2001 - 08:28 #4
Det undrede mig også, jakoba. Men hvad er det for en slags sortering
du prøver at implementere, min virtuelle ven?
Avatar billede virtualfriend Nybegynder
09. juli 2001 - 13:09 #5
Du har ret min ven. Jeg havde glemt Return 0, men
som du selv er inde på så betyder det ikke moget.
Du får dine point...
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