#c #algorithm #data-structures
#c #алгоритм #структуры данных
Вопрос:
Здесь мне нужна помощь, я хочу исправить этот код, чтобы он печатал (цель найдена по адресу:) только в том случае, если он нашел цель, вместо того, чтобы печатать слово, даже если оно не нашло цель
например, если пользователь хочет найти число 3 в массиве {1, 2, 3, 4, 3} он должен напечатать
, что цель найдена по индексу: 2, 4
но если пользователь хочет, чтобы exmaple нашел 2 в массиве {1, 3, 4, 5}, он должен напечатать
Not Found
#include <stdio.h>
void search(int array[], int n, int k);
#define MAX 100
int main(void)
{
int array[MAX];
int n;
int k;
scanf("%d", amp;n);
scanf("%d", amp;k);
for (int i = 0; i < n; i )
{
scanf("%d", amp;array[i]);
}
printf("Initial array:n");
for (int i = 0; i < n; i )
{
printf("%d ", array[i]);
}
printf("n");
printf("Target element: %dn", k);
printf("Target is found at: ");
search(array, n, k);
//(result == -1) ? printf("No targetn") : printf("Target is found at: %dn", result);
}
void search(int array[], int n, int k)
{
for (int i = 0; i < n; i )
if (k == array[i])
printf("%d ", i);
printf("n");
}
Комментарии:
1. В чем разница между тем, что вы хотите, чтобы эта программа делала, и тем, что она делает в настоящее время?
Ответ №1:
удалите строку, в которой вы печатаете это сообщение:
printf("Target is found at: ");
и если вы найдете значение…
printf("Target is found at: %dn", i);
вы также можете добавить оператор return внутри if и сообщение о том, что значение не было найдено за пределами for:
void search(int array[], int n, int k)
{
for (int i = 0; i < n; i )
if (k == array[i])
{
printf("Target is found at: %dn", i);
return;
}
printf("value not foundn");
}
Комментарии:
1. Это не приведет к получению желаемого «Цель найдена по индексу: 2, 4», упомянутого в вопросе.