C проблема с пузырем - PullRequest
0 голосов
/ 25 января 2020

У меня возникла проблема с созданием пузыря в C. Я пытаюсь просто заставить его выплевывать массив до, во время и после сортировки, и у меня возникают проблемы. Стоит упомянуть, что это будет моя первая программа в C. Вот то, над чем я работаю:

#include <stdio.h>
#define MAX 9
void printValues();
void sort();
void swap(int*, int*);

int values[] = {7, 3, 9, 4, 6, 1, 2, 8, 5};

int main(void){
        printf("Before: \n");
        printValues();
        sort();
        printf("After: \n");
        printValues();

        return(0);
}

void printValues(){
        int i;
        printf(" List before arranging: \n[");
        for (i = 0; i < 9; ++i){
                printf(" %d "values[i]);
        }
        printf("]\n");
}

void sort(){
        int i, j;
        for (i = 0; i < 9; i++){
                for (j = 0; j< 9-i; j++){
                        if (values[j] < values[j+1]){
                                swap((values + j), (values + j +1));
                        }
                }
        }
}


void swap(int x, int y){
        int temp = *x;
        *x = *y;
        *y = temp;
}

Конечно, я запускал его до этого и устранял некоторые ошибки, которые я понял из моего времени в python3. Тем не менее, теперь я получаю их.

bubble.c:29:16: error: expected ‘)’ before ‘values’
   printf(" %d "values[i]);
                ^
bubble.c: In function ‘sort’:
bubble.c:39:20: error: expected expression before ‘,’ token
     swap(values[j]*, values[j+1]*);
                    ^
bubble.c:39:34: error: expected expression before ‘)’ token
     swap(values[j]*, values[j+1]*);
                                  ^
bubble.c: At top level:
bubble.c:45:6: error: conflicting types for ‘swap’
 void swap(int x, int y){
      ^
bubble.c:11:6: note: previous declaration of ‘swap’ was here
 void swap(int*, int*);
      ^
bubble.c: In function ‘swap’:
bubble.c:46:13: error: invalid type argument of unary ‘*’ (have ‘int’)
  int temp = *x;
             ^
bubble.c:47:2: error: invalid type argument of unary ‘*’ (have ‘int’)
  *x = *y;
  ^
bubble.c:47:7: error: invalid type argument of unary ‘*’ (have ‘int’)
  *x = *y;
       ^
bubble.c:48:2: error: invalid type argument of unary ‘*’ (have ‘int’)
  *y = temp;
  ^

Я пытаюсь освоить указатели и не могу найти помощь для этого, что я оставил. Любая помощь?

1 Ответ

1 голос
/ 25 января 2020

Я думаю, что вы смешали массивы и указатель вместе, потому что вы записали значения [j] * вместо (values ​​+ j) и передали целое число вместо указателя inn

...