Tablice statyczne, dynamiczne

0

jestem pocatkujacy i mam pewien problem od dluzszego czasu probuje wykonac zadanie:

Napisz funkcję, która jako argumenty wejściowe pobierze tablicę liczb całkowitych oraz jej długość, natomiast zwróci średnią wartość z liczb zawartych w tablicy. Napisz program wykorzystujący tą funkcję.

ale pomimo wielu prob nic mi nie wychodzi, czy moglby mi ktos napisac jak to powinno wygladac ?
dla niektorych to moze wydawac sie banalne ale ja mam z tym problemi nie wiem nawet od czego zaczac, bo jak zaczynam to nic mi nie wychodzi ;/

z gory dzieki ;)

0

Pokaż, co do tej pory udało ci się zrobić.

0

A po co tablica? o_O
Wczytujesz liczby po jednej i je sumujesz a na koniec wynik sumowania dzielisz przez ilość liczb.

0

Musisz zastosować tablicę dynamiczną. Czyli musisz poczytać o wskaźnikach i dynamicznym alokowaniu pamięci. A pierwszy program musisz napisać z tablicą a nie tak jak robiłeś wcześniej (jak radził Ci Shalom.)

//Pisałem ten post do drugiego pytania jac0oll, które znikło.

0
#include <iostream>

using namespace std;
double newtabl (int rozmiar);
int main()
{
    int rozmiar;
    cin >> rozmiar;
    cout << newtabl(rozmiar);
}
/**********************************/
double newtabl (int rozmiar)
{
    double suma = 0;
    int *wsk = new int[rozmiar];
    for (int i = 0; i < rozmiar; i++)
    {
        cout << "Podaj liczbe:\n";
        cin >> wsk[i];
        suma+=wsk[i];
    }
    return suma/rozmiar;
} 
0

W treści zadania nic nie ma o tablicy dynamicznej, zapewne chodzi o taki programik ( pisany z głowy bez kompilatora :)

 
include <stdio.h>

int srednia(int tab[], int ile);

int main(void)
{
  int tablica[] = { 1, 2, 3, 4, 5 };
  int sr;
  int i;

  sr = srednia ( tablica, 5 );
  // sr = srednia ( &tabica[0], 5 ); to samo co powyzej innaczej zapisane
  
  printf ( "Średnia arytmetyczna z liczb: " );
  for ( i = 0; i < 5; i++ )
    printf ( "%d\t", tablica[i] );
  printf ( "wynosi %d\n", sr );
  
  return 0;
}

int srednia(int tab[], int ile);
{
  int i;
  int suma = 0;

  for ( i = 0; i < ile; i++ )
   suma = suma + tab[i];
  
  return ( suma / ile );
}
0

A dlaczego zakładasz, że średnia z liczb całkowitych też jest liczbą całkowitą? Lekka zmiana wartości zwracanej i sposobu jej policzenia i powinno grać:

float srednia(int tab[], int ile) {
    int i;
    int suma = 0;

    for (i = 0; i < ile; i++)
        suma = suma + tab[i];

    return (float)suma / ile;
}

Natomiast co do pytania w stylu: A po co używać tablic? Wystarczy przeczytać treść zadania. Mamy napisać funkcję, która przyjmie jako argument tablicę.... itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1