В моей программе есть пара ошибок, и я не знаю, как их исправить

#c #arrays #loops

#c #массивы #циклы

Вопрос:

Мне нужно отсортировать три введенных пользователем числа в массиве в порядке возрастания. Есть пара ошибок.

A) Я настроил ее так, чтобы запрашивать только три числа, но мне приходится вводить 4, хотя программа сортирует только первые три.

Б) Я получаю предупреждение о том, что моя переменная temp не используется, хотя это явно так.

C) программа сортирует первые два числа, а затем снова печатает второе по величине число вместо самого большого.

Вот код:

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <time.h>

int main(){

    int numbers = 3;
    int NUM_ARRAY[numbers];
    int counter = 0;
    int sort = 0;
    int temp = 0;

                printf("Please enter three integersn");
            for(counter = 0; counter < numbers; counter  ){
                scanf("%d ", amp;NUM_ARRAY[counter]);
            }
                printf("Original Numbersn");
            for(counter = 0; counter < numbers; counter  ){
                printf("%dn", NUM_ARRAY[counter]);
            }

            while(1){
                sort = 0;
                for(counter = 0; counter < numbers-1; counter  ){
                    if(NUM_ARRAY[counter] > NUM_ARRAY[counter 1]){
                        int temp = NUM_ARRAY[counter];
                        NUM_ARRAY[counter] = NUM_ARRAY[counter 1];
                        NUM_ARRAY[counter 1] = NUM_ARRAY[counter];
                        sort = 1;

                    }
            }
            if(sort == 0){
                break;
            }

        }
            printf("Sorted Numbersn");
                for(counter = 0; counter < numbers; counter  ){
                   printf("%dn", NUM_ARRAY[counter]);
                }

    return 0;
}
  

Комментарии:

1. Вы пробовали сначала пройти через отладчик?

Ответ №1:

Вы должны установить temp на NUM_ARRAY[counter 1] вместо NUM_ARRAY[counter]

Попробуйте это:

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <time.h>

int main(){

    int numbers = 3;
    int NUM_ARRAY[numbers];
    int counter = 0;
    int sort = 0;
    int temp = 0;

                printf("Please enter three integersn");
            for(counter = 0; counter < numbers; counter  ){
                scanf(" %d", amp;NUM_ARRAY[counter]); // changed spacing on %d
            }
                printf("Original Numbersn");
            for(counter = 0; counter < numbers; counter  ){
                printf("%dn", NUM_ARRAY[counter]);
            }

            while(1){
                sort = 0;
                for(counter = 0; counter < numbers-1; counter  ){
                    if(NUM_ARRAY[counter] > NUM_ARRAY[counter 1]){
                        int temp = NUM_ARRAY[counter];
                        NUM_ARRAY[counter] = NUM_ARRAY[counter 1];
                        NUM_ARRAY[counter 1] = temp;  <--- /* Since NUM_ARRAY[counter] will be set to next value in the previous step */
                        sort = 1;

                    }
            }
            if(sort == 0){
                break;
            }

        }
            printf("Sorted Numbersn");
                for(counter = 0; counter < numbers; counter  ){
                   printf("%dn", NUM_ARRAY[counter]);
                }

    return 0;
}
  

Комментарии:

1. Спасибо, я не понял, что добавил ненужный шаг

2. @Muhammed Пометьте это как правильное и полезное, чтобы другим тоже было полезно.

3. я очень новичок на этом веб-сайте, как именно вы это делаете?