Улучшение следующего кода для ассемблера MIPS - PullRequest
0 голосов
/ 15 апреля 2019

Целью моей программы является сортировка чисел на основе ввода пользователя.Все работает отлично, пока пользователь не захочет ввести более 6 данных (inp = 5), и я не уверен, почему это происходит.Можете ли вы просмотреть его и сообщить мне причину этого?

#include <stdio.h>
#include <stdlib.h>

int size =0;

void ascSort(int *a, int size, int temp) {
  for(int i=1; i< size; i++){
      for(int j=i; j>0; j--){
        if(a[j-1]>a[j]){
          temp = a[j-1];
          a[j-1] = a[j];
          a[j] = temp;
        }
      }
    }
}

void descSort(int *a, int size, int temp) {
  for(int i=1; i< size; i++){
      for(int j=i; j>0; j--){
        if(a[j-1]<a[j]){
          temp = a[j-1];
          a[j-1] = a[j];
          a[j] = temp;
        }
      }
    }
}
int main(){
  char inpChar, isContinue='y';
  int inp, temp=0;
  int * a = malloc(0 * sizeof(*a));

  do {
    printf("How many numbers would you like to sort?\n");
    fflush(stdin);
    scanf("%d", &inp);
    size = inp;

    printf("%d\n", size);

    a = realloc(a, size * sizeof(*a));

    for(int i=0; i<size; i++){
      //Below, I am printing 'size' for debugging purposes
        printf("Type %d more numbers to sort ---- '%d'\n", inp, size);
        fflush(stdin);
        scanf("%d", &a[i]);
        inp--;
    }
    printf("Please input a for ascending order and d for descending order\n");
    fflush(stdin);
    scanf(" %c", &inpChar);

    switch (inpChar) {
      case 'a':
        ascSort(a, size, temp);
        break;
      case 'd':
        descSort(a, size, temp);
        break;
      default: printf("Invalid character\n");
    }

    printf("Sorted Array: \n" );
    for(int i=0; i<size; i++){
      printf("%d\n", a[i]);
    }
    printf("Do you want to repeat? Type y/n\n");
    fflush(stdin);
    scanf(" %c", &isContinue);
  } while(isContinue != 'n');

}

После того, как значение "inp" увеличится до 6, значение "inp" покажет значение мусора, которое совсем не ожидается.

Примечание Код обновлен и работает сейчас.Теперь мой вопрос: как улучшить этот код, чтобы я мог преобразовать этот код в язык ассемблера MIPS?Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...