#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. я очень новичок на этом веб-сайте, как именно вы это делаете?