Ich habe Probleme beim Lesen der Benutzereingaben von Terminal in meinem Array.scanf() zu 1D-Array in C
Das Array 'a' hat eine dynamische Größe. Das Polynom, das vom Benutzer eingegeben wird, bestimmt die Größe des Arrays.
einmal kompiliert und ausgeführt:
Enter the order number:
3
Enter your constant:
-90
Enter coefficient # 0
8
Enter coefficient # 1
4
Enter coefficient # 2
35
Enter coefficient # 3
54
0 8.000000
1 4.000000
2 0.000000
3 0.000000
Auf den Debug-Linien Ich berichte nur das Array zurück zum Benutzer. Aus einigen Gründen gibt es für die zweite Hälfte des Arrays Null zurück. Ich kann nicht herausfinden, was das Problem sein könnte. Jede Hilfe würde sehr geschätzt werden.
PS. Ignoriere die Eval-Funktion.
hier der Code arbeite ich an:
//import required libraries
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// function prptotype
double eval(double a[], double x, int n); //n is max degree
//global variables
int N = 0;//N is the polynomial order
double *a;//array
double x; // constant
//main function
int main()
{
printf("%s\n", "Enter the order number:");
scanf("%d", &N); // user input for the order numbers
while (N < 1) //input debuger
{
printf("%d %s\n%s\n", N,"is NOT a positive and non-zero number", "Enter a positive and non-zero integer:");
scanf("%d", &N); // user input for the order numbers
}
a = malloc ((N + 1) * sizeof(int));// assigning the array size in respect with user input
printf("%s\n", "Enter your constant:");
scanf("%lf", &x);// user input for "x" constant
for (int i = 0; i < N + 1; ++i)
{
printf("Enter coefficient # %d\n", i);
scanf ("%lf", &a[i]);
}
/* Debug */
for (int i = 0; i < N + 1; ++i)
{
//a[i] = 0;
printf("%3d%13lf\n", i, a[i]);
}
}
//eval function
double eval(double a[], double x, int n)
{
}
Für 'printf','% f' oder '% lf' kann verwendet werden, es gibt keinen Unterschied. – dreamlax
@dreamlax C89 unterstützt '% lf' in' printf' nicht. –
@CoolGuy: C89 ist auch 27 Jahre alt. POSIX, C99 und C11 erlauben dies alles. Kein Grund, C89 zu benutzen, es sei denn, du musst es unbedingt tun. – dreamlax