Avatar billede kar Nybegynder
19. september 2002 - 14:06 Der er 4 kommentarer og
1 løsning

Template og ombygning

Hej!
nu sidder jeg her igen og har et program som jeg synes burde virke, men det gør det bare ikke - så er der igen nogle som vil være så søde at hjælpe mig - evt. skrive lidt om hvad jeg har gjort forkert.

Programmet skal kunne indlæse f.eks en række tal og derefter sætte dem i størrelses orden og derfor nogle navne der skal i alfabetisk størrelses orden.

På forhånd tak for svaret Hilsner Karina


#include <iostream.h>
#include <conio.h>
//#include "sort.h"

template <class T>
void exchange(T& a,T& b)
{ T temp =a;
a = b;
b = temp;
}


template <class T>
void selectionSort(T arr[], int n)
{
int smallindex;
int pass, j;

for(pass =0; pass <n-1; pass++)
{
smallindex = pass;
for(j=pass+1; j<n; j++)
if(arr[j] < arr[smallindex]);
smallindex = j;
exchange(arr[pass], arr[smallindex]);
}
}



template <class T>
void writeList(const T a[], int n);

int main()
{
  int List[10] = {5,9,1,3,4,8,2,0,7,6};
    string words[6] = {"John", "Rebecca", "Sara",
                      "Jack", "bob", "joe"};

    cout<< "Sorting integer array: ";
    selectionSort(List,10);
    writeList(List,10);
    cout <<endl;
  cout<<"sorting array of strings ";
    selectionSort(words,6);
    writeList(words,6);
    cout<<endl;
 
    getch();
      return 0;

}

template <class T>
void writeList(const T a[], int n)
{
int i;
for(i=0; i< n; i++)
cout <<a[i]<< "  ";
cout <<endl;
}
Avatar billede jpk Nybegynder
19. september 2002 - 14:13 #1
Kan det ikke kompileres eller virker det ikke efter hensigten?
Avatar billede kar Nybegynder
19. september 2002 - 14:17 #2
Den skriver 6749736 (hvor den så end får det tal fra? ) og derefter 5 9 13 4 8 2 0 6 8altså det jeg har sat ind uden at sorterer det)
Avatar billede chries Nybegynder
19. september 2002 - 14:18 #3
; i din for løkke:
for(pass =0; pass <n-1; pass++)
{
  smallindex = pass;
 
  for(j=pass+1; j<n; j++)
    if(arr[j] < arr[smallindex]);
      smallindex = j;

  exchange(arr[pass], arr[smallindex]);
}

->>

for(pass =0; pass <n-1; pass++)
{
  smallindex = pass;

  for(j=pass+1; j<n; j++)
    if(arr[j] < arr[smallindex])
      smallindex = j;

  exchange(arr[pass], arr[smallindex]);
}
Avatar billede jpk Nybegynder
19. september 2002 - 14:20 #4
I din selectionSort har du en ';' på din if-sætning!

if(arr[j] < arr[smallindex]);

Er det med vilje..?
Avatar billede kar Nybegynder
19. september 2002 - 14:25 #5
Hej!
if(arr[j] < arr[smallindex]);
Der skulle selvfølgelig ikke have været et ;
så nu virker det  - tak fordi I alle har gidet at svare.
Hilsner Karina
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