C error

Programovacie jazyky, rady, poradňa...
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

C error

Príspevok od používateľa xadman »

Zdravím,
Prejdem rovno k veci. Mám 3 polia + 1 integer, ktorý odosielam funkcii bubbleSort, ktorá ma tie 3 polia vytriediť podľa druhého poľa od najmenšieho po najväčšie, a potom 1. a 2. pole zoradiť a poslať roztriedené naspäť do main funkcie.

Funkciu volám takto.

Kód: Vybrať všetko

bubbleSort(&cisla, &plochy, &pracoviska, pocetkanc);
Kód bubble sortu:

Kód: Vybrať všetko

void bubbleSort(int *cisla[], int *plochy[], int *pracoviska[], int array_size){
  int i, j, temp, tempCislo, tempPracoviska, b;
 
  for (i = (array_size - 1); i > 0; i--){
    for (j = 1; j <= i; j++){
      if (plochy[j-1] > plochy[j]){
        temp = *cisla[j-1];
        *cisla[j-1] = *cisla[j];
        *cisla[j] = temp;
        
        tempCislo = *plochy[j-1];
        *plochy[j-1] = *plochy[j];
        *plochy[j] = tempCislo;
        
        tempPracoviska = *pracoviska[j-1];
        *pracoviska[j-1] = *pracoviska[j];
        *pracoviska[j] = tempPracoviska;
      }
    }
  }
}
Kompilátor vyhlási chybu:
Line 60: cannot convert `int (*)[((unsigned int)((int)pocetkanc))]' to `int**' for argument `1' to `void bubbleSort(int**, int**, int**, int)'
Line: 63expected `)' before ';' token

Doteraz neviem vyskúmať, kde môže byť chyba.
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: C error

Príspevok od používateľa c-ice »

trocha presmernikovane nezda sa ti ?
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: C error

Príspevok od používateľa BX »

Očividne nemáš páru, čo je to pole a ako je v C reprezentované. Skús sa na to pozrieť a urob s tým kódom niečo.
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: C error

Príspevok od používateľa xadman »

Práve preto sa vás to pýtam. So smerníkmi robím po prvý krát a potrebujem aby mi tá funkcia bubbleSort prehodila hodnoty.
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: C error

Príspevok od používateľa c-ice »

Kód: Vybrať všetko

//main
....
int cisla[5], plochy[5], pracoviska[5];
int array_size = 5;
...
bublujSortuj(cisla, plochy, pracoviska, array_size); //wtf naco tolko ?
...

void bublujSortuj(int *cisla, int *plochy, int *pracoviska, int size) {
  for (i = (size - 1); i > 0; i--){ 
    for (j = 0; j < i; j++){ 
      if (plochy[j] > plochy[j+1]){
         int temp = plochy[j];
         plochy[j] = plochy[j+1];
         plochy[j+1] = temp;
        //.....
      }
    }
  }
}
hovori ti nieco Struct ?
byt tebou by som si spravil strukturu ... ktora by obsahovala tie polozky usetril by si si par riadkov kodu ale hlavne bz to bolo prehladnejsie
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: C error

Príspevok od používateľa xadman »

Veľmi pekne ďakujem.

A so structom som ešte nerobil, ale čítal som si o tom v knižke od Anina Belana. Volakedy to musím spraviť cez ten struct.
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: C error

Príspevok od používateľa c-ice »

j od Structu nemas daleko ku Classe ... a to sme potom uz pri OOP :)

Kód: Vybrať všetko

        typedef struct {
               int cislo;
               int plocha;
               int pracovisko;
        } Kancl;

Kód: Vybrať všetko

Kancl kancelarie[5];
kancelarie[0].cislo = 1;
//....
void BubbleSort(Kancl* kancle){
   int size = sizeof(kancle)/sizeof(Kancl); //niesom isty ale takto nejak by som to mohol ziskat velkost
   for (i = (size - 1); i > 0; i--){
    for (j = 0; j < i; j++){
      if (kancle[j].plocha > kancle[j+1].plocha){
         Kancl temp = Kancl[j];
         kancle[j] = kancle[j+1];
         kancle[j+1] = temp;
         //a tu si usetril 6 riadkov ktore si rucne prekopiroval takto to mas pekne zapuzdrene ...
      }
     }
    }
   
}
Napísať odpoveď