私はこのプログラムを作成して数字のダイヤモンドを作成しました。問題は、私はプログラムをコンパイルするとき、それは私がまさに問題が何であるかを把握する時間試した実際に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'に十分な閉じ括弧'} 'がないので、他の関数がその中に入っていることがわかります。私はそれがコンパイルされて驚いています。 –
あなたの{}ペアをチェックする - あなたは 'print_pattern'の中に' get_input'と 'is_valid' *を入れました。 - https://repl.it/FrDD/0 – TessellatingHeckler