Указатели Си,среднее арифметическое
Почему не работает?Задача состоит в нахождении среднего арифметического с помощью указателей. Выдаёт Segmentation fault (core dumped)
#include <stdio.h>
#include <stdlib.h>
float main() {
float* a ;
float* b ;
float* c ;
float* res;
scanf("%float", a);
scanf("%float", b);
scanf("%float", c);
*res = (float)(*a + *b + *c) / 3;
printf("%f\n", *res);
return 0;
}
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
#include <stdio.h>
#include <stdlib.h>
int main(void) { // int, не float!!
float a, b, c, res;
scanf("%f", &a); // Не %float!
scanf("%f", &b);
scanf("%f", &c);
res = (a + b + c) / 3;
printf("%f\n", res);
}
Ну, держите указатели...
#include <stdio.h>
#include <stdlib.h>
int main(void) { // int, не float!!
float *a = malloc(2*sizeof(float));
*(a+1) = 0;
for(int i = 0; i < 3; ++i)
{
scanf("%f", a); // Не %float!
*(a+1) += *a;
}
printf("%f\n", *(a+1)/3);
free(a);
}
Автор решения: avp
→ Ссылка
Ну, если только указатели...
#include <stdio.h>
#include <stdlib.h>
int
main (int ac, char *av[])
{
float a, b, c,
*pa = &a, *pb = &b, *pc = &c;
if (scanf("%f %f %f", pa, pb, pc) == 3)
printf("%f\n", (*pa + *pb + *pc) / 3);
else
puts("input error");
return puts("End") == EOF;
}
Конечно, память можно было бы и malloc()-м выделить, например, вот так
float *pa = malloc(sizeof(float) * 3),*pb = pa + 1, *pc = pa + 2;
но решил не усложнять пример для новичка