Witam,
Mam bardzo duży problem z napisaniem programu na zajęcia z programowania. Treść zadania to : napisać program, który pobiera od użytkownika ciąg liczb
dodatnich (wprowadzenie liczby 0 kończy sekwencję danych wejściowych) i wyświetla:
największą liczbę ciągu
najmniejszą liczbę ciągu
wartość średnią wprowadzonych liczb
Czy mógłbym prosić kogoś o pomoc w napisaniu tego pozornie łatwego programu w C ? Jak na razie każdy z moich pomysłów jest bezskuteczny.
Z góry dziękuję
0
2
#include <stdio.h>
#include <stdlib.h>
unsigned max(unsigned *array, size_t size)
{
size_t i = 0;
unsigned result = array[i];
for(; i < size; ++i)
{
if(array[i] > result) result = array[i];
}
return result;
}
double avg(unsigned *array, size_t size)
{
size_t i = 0;
double sum = 0;
for(; i < size; ++i)
{
sum += array[i];
}
return sum / (size - 1);
}
int main()
{
size_t buffer_size = 5;
unsigned *buffer = malloc(buffer_size * sizeof(unsigned));
unsigned number = 0, count = 0;
do
{
scanf("%u", &number);
if(count >= buffer_size)
{
unsigned *temp = realloc(buffer, (buffer_size += 5) * sizeof(unsigned));
if(temp) buffer = temp;
else
{
free(buffer);
buffer = NULL;
break;
}
}
buffer[count++] = number;
}
while(number != 0);
printf("Max: %u\nAvg: %f\n", max(buffer,count), avg(buffer,count));
if(buffer) free(buffer);
return 0;
}
0
Dziękuję bardzo :D
0
Istnieje rzecz jasna piękniejsze (dużo) rozwiązanie tego problemu ale najpierw choć pokaż nam co już masz, co chociaż sam zrobiłeś...