apeks
@apeks
Очень серьезный человек

Почему этот код возвращает такой странный ответ?

Вот кусок кода на С
int getMin(int numbers[], int size);

int main(){
    
    int numbers[10] = {0, 2, 4, 6, 1, 3, 8, 7, 9, 5};
    
    int res = getMin(numbers, 10);
    
    printf("%d\n", res);
}

int getMin(int numbers[], int size){
    
    int key;
    int min = numbers[0];
    
    for(int i = 0; i < size; i++){
        
        if(min > numbers[i]){
            min = numbers[i];
            key = i;
        }
        
    }
    
    return key;
}

Почему ответ != 0 ?
  • Вопрос задан
  • 358 просмотров
Решения вопроса 4
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
Учитесь пользоваться отладчиком и сами смотрите что у вас откуда возвращается и откуда такие значения берутся. Ну и смотрите куда ваша программа заходит (или не заходит) и почему.
Правильный ответ

По-тому, что значение key не определено, и при заданном начальном массиве оно не будет изменено. Т.е. ваша функция, если первый элемент массива минимален, будет возвращать условно случайное значение.
Ответ написан
15432
@15432
Системный программист ^_^
Вы не инициализировали key
int key = 0;
Ответ написан
Godless
@Godless
я подозреваю нужно вернуть не key, а min. И вообще зачем key? Или нужен индекс минимального? Тогда инициализацию не забудьте как уже выше указали.

И цикл надо с 1 начинать.
Ответ написан
@sitev_ru
sitev.ru - мой блог ...
int getMin(int numbers[], int size);

int main(){

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

	int res = getMin(numbers, 10);

	printf("%d\n", res);
	getchar();
}

int getMin(int numbers[], int size){

	int key = 0;
	int min = numbers[0];

	for (int i = 1; i < size; i++){

		if (min > numbers[i]){
			min = numbers[i];
			key = i;
		}

	}

	return key;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
BacCM
@BacCM
C++ почти с рождения
Просто без отладчика в уме "выполни" свою программу и увидишь, что никогда не попадаешь в тело if
Ответ написан
@Sh0ttky
if(min > numbers[i]){
            min = numbers[i];
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы