Я написал эту программу для создания числа алмазов. Проблема в том, что, когда я скомпилировать программу, он выдает ошибкуНеопределенная эталонная ошибка для функции, которая фактически определена в C
build2.c:(.text+0x5): undefined reference to `get_input'
collect2: error: ld returned 1 exit status
Я пытался в течение нескольких часов, чтобы выяснить, что именно эта проблема (например, если есть орфографическая ошибка или что-то подобное), но вызов функции выглядит одинаково. Я попытался переименовать его, записать его как прототип и как реализацию, и ничего не работает. Есть ли проблема, которую я не вижу?
//Define prior to main
int is_valid(int);
int get_input(void);
void print_pattern(int);
//Main
int main(void){
int diamond_size;
//diamond_size = get_input();
//value from get imput method used for diamond size
print_pattern(get_input());
return 0;
}
void print_pattern(int size){
int length, num, i, j;
//beginning of new diamond
printf("\n");
//Define each integer to work in layout of diamond
//First for loop fans out
for(i=1; i <= size; i += 2){
length = size-i+1;
num = 1;
printf("%*s", length," ");
for(j = 0; j < i; j++){
printf("%d ", num);
num++;
}
printf("\n");
}
//second for loop fans in
for(i=size-2; i >= 1; i -= 2){
length = size-i+1;
num = 1;
printf("%*s", length," ");
for(j = 0; j < i; j++){
printf("%d ", num);
num++;
}
printf("\n");
}
int is_valid(int value){
int rem;
//uses remainder to determine if it is odd or even; an even number will not have a reaminder in this case
rem = value % 2;
if (rem == 0){
printf("You've entered a even number. Please try again.\n");
return (0);
}
//greater than 9 cnd
if (value > 9){
printf("You have entered a number greater than 9. Please try again.\n");
return (0);
}
//less than 1 cnd
if (value < 1){
printf("You have entered a number less than 1. Please try again.\n");
return (0);
}
return (1);
}
int get_input()
{
int cont, number, valid;
cont = 1;
while (cont = 1)
{
printf("Enter an odd number less than 9 and greater than 0 < ");
scanf("%d", &number);
valid = is_valid(number);
if (valid == 1)
{
cont = 0;
}
}
return number;
}
}
Исправьте свой отступ - вы увидите, что 'print_pattern' не имеет достаточно закрывающих скобок'} ', поэтому другие функции находятся внутри этого. Я удивлен, что он компилируется. –
Проверьте свои {} пары - вы поставили 'get_input' и' is_valid' * внутри * 'print_pattern', они должны быть вне его. - https://repl.it/FrDD/0 – TessellatingHeckler