2014-11-06 55 views
-2

美好的一天,我遇到了以下C代码的问题。我试图执行这个操作,总和(每个输入的数字必须乘以它生成的数字)。我错过了什么?数组未计算

我得到这个错误:当分配类型'float *'从'float'类型时不兼容的类型。 任何帮助将受到欢迎。

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <conio.h> 
#include <math.h> 

int main(int argc, char *argv[]) 
{ 
application(); 

return 0; 
} 


void application(void) 
{ 
int input = 0; 
float number[10]; 
float total =0; 
float *ptr; 
float generatedNum; 

srand(time(NULL)); 


for(input; input<11; input++) 
{ 
generatedNum = 2 *(float)rand()/(float)RAND_MAX - 1; 


printf("\n\n\t\tEnter number %d : ", input); 
scanf("%f", &number[input]); 
ptr = number * generatedNum; 

printf("\n\t\t\t\t\tMachine Value: %.1f", generatedNum); 

} 

for(input; input<11; input++) 
{ 
total += *ptr; 

ptr++; 

} 
printf("\n\n\n\t\tTHE NEURON IS: %.2f", total); 

} 
+4

'为(输入;输入<11;输入++)' - >'为(输入= 0;输入<10;输入++ )' – BLUEPIXY 2014-11-06 21:10:41

+0

你能否明确解释一下你的意思* – 2014-11-06 21:11:51

+2

'11' - >'10':index不包括10,'input'需要重置。 – BLUEPIXY 2014-11-06 21:13:54

回答

0

一个更简单的方法是简单地把一切都在一个循环。在这种情况下实际上不需要指针,因为没有什么需要它们,请在获取它们时添加值。你也从来不使用generatedNum(虽然也许这是用于进一步开发??)

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <math.h> 

void application(void) 
    { 
    int input = 0; 
    float number[10]; 
    float total =0; 
    float generatedNum; 

    srand(time(NULL)); 


    for(; input<10; input++) 
    { 
     generatedNum = 2 *(float)rand()/(float)RAND_MAX - 1; 


     printf("\n\n\t\tEnter number %d : ", input); 
     scanf("%f", &number[input]); 
     total += number[input]; 

     printf("\n\t\t\t\t\tMachine Value: %.1f", generatedNum); 
    }  
    printf("\n\n\n\t\tTHE NEURON IS: %.2f", total); 
    return; 

} 

int main(int argc, char *argv[]) 
{ 
    application(); 

    return 0; 
} 
+0

如果你不介意,你能帮助我吗?现在我坚持这部分,从你的纠正我已经得到所有输入的数字乘以其生成的数字的总和。 – 2014-11-06 21:43:31

+0

当我在第一个for循环中添加它时,它拒绝它printf(“\ n \ t \ t \ t \ t \ tMachine Value:%.1f”,generatedNum); ptr = number * generatedNum; – 2014-11-06 21:43:54

+0

这听起来像你会想要一个单独的数组来存储生成的值或两个值的乘积。根据不同的方法,你可以把generateNum转换成一个数组(float generatedNum [10])和简单的方法generateNum [input] = 2 *(float)rand()/(float)RAND_MAX - 1;或者可以将产品存储在数组generatedProduct [input] = number [input] * generatedNum中。您采用哪条路线取决于您是否需要在未来的计算中使用生成的数字。 – jdk514 2014-11-06 21:51:13

0
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <math.h> 

void application(void) 
{ 
    int input = 0; 
    float number[10]; 
    float total =0; 
    float *ptr; 
    float generatedNum; 

    srand(time(NULL)); 


    for(; input<10; input++) 
    { 
     generatedNum = 2 *(float)rand()/(float)RAND_MAX - 1; 


     printf("\n\n\t\tEnter number %d : ", input); 
     scanf("%f", &number[input]); 
     ptr = number; 

     printf("\n\t\t\t\t\tMachine Value: %.1f", generatedNum); 

    } 

    for(input = 0; input<10; input++) 
    { 
     total += *ptr; 

     ptr++; 

    } 
    printf("\n\n\n\t\tTHE NEURON IS: %.2f", total); 

} 

int main(int argc, char *argv[]) 
{ 
    application(); 

    return 0; 
} 

你的阵列将摆脱束缚,如果你去< 11,因为它可能包含10个位置,但它从0开始。

另外,在第一循环操纵你的input变量,它是那么高比你的第二个循环的要求条件。 因此,你需要将其设置回0

Working example!

+0

如果你不介意,你能帮助我吗?现在我坚持这部分,从你的纠正我已经得到所有输入的数字乘以其生成的数字的总和。 – 2014-11-06 21:35:28

+0

当我在第一个for循环中添加它时,它会拒绝它\t printf(“\ n \ t \ t \ t \ t \ tMachine Value:%.1f”,generatedNum); \t \t \t \t ptr = number * generatedNum; – 2014-11-06 21:35:47