У меня есть массив с числами.Три вида числа (float
, double
и т. Д.), И когда я ищу конкретное число, оно должно возвращать / показывать местоположение в массиве этого числа.
Так что идея в том, что ямог бы поместить числа как -3, 1.25 в массив, не определяя определенно тип массива, так как мне нужно получить любое число.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define finder(find_num, array,type,format)\
void find_num(type array[], type ,int size)\
{\
int location = 0, i;\
for (i = 0; i < size; i++)\
{\
location++;\
if (array[i] == num)\
break;\
}\
if (location != arry[0]\
printf("Location of the number is at %d place\n", result);\
else\
printf("Location of number not found\n");\
}
finder(funcfind, int array[], int %d\t, int %d\t);
finder(funcfind, int array[] ,double %f, int %d\t)
int main()
{
int array[] = { 5,6,7,88,12,3,20 }, result = 0, num = 0, size = 0;
size = sizeof(array);
scanf("%d", &num);
funcfind(array, num, size);
}
Мне нужно использовать макросы для этого упражнения, но я получаюзастрял на функции finder
и funcfind
, откуда происходит большинство моих ошибок.
** ОБНОВЛЕНИЕ:
#include <stdio.h>
#include <stdlib.h>
#define finder(find_num, array ,type ,format)\
void find_num(type array[], type num,int size)\
{\
int location = 0, i;\
for (i = 0; i < size; i++)\
{\
location++;\
if (array[i] == num)\
break;\
}\
if (location != array[0])\
printf("Location of the number is at %d place\n", location);\
else\
printf("Location of number not found\n");\
}
finder(funcfind, array, double, int %d\t);
finder(funcfind, array, int, int %d\t);
finder(funcfind, array, float, int %d\t);
int main()
{
int array[] = { 5,6,7,-3,1.5,3,20 }, num = 0, size = 0;
size = sizeof(array) / sizeof(array[0]);
scanf("%d", &num);
funcfind(array, num, size);
}
Работает, но некоторые числа, такие как -3 и 1,5,не работает