Zadanie ze wskaźników. Czy zrobiłem je dobrze?

2017-11-06 00:19

Rejestracja: 3 lata temu

Ostatnio: 1 rok temu

0

Witam. Jestem początkującym i mam do zrobienia takie oto zadanie jak w załączniku ze wskaźników. Jakoś je zrobiłem, ale chciałbym się dowiedzieć czy dobrze użyłem wskaźnika i zrobiłem je zgodnie z treścią? Możecie dla mnie go sprawdzić i doradzić?

#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;

int adres_tab(int roz)
{
int *tab = new int[roz];
  srand (time(NULL));
   if(roz<1)
        return NULL;
    else

for(int i=0;i<roz;i++)
    {
       tab[i] = rand();
        cout<<tab[i]<<endl;
    }

    int sr=0;
    int suma=0;
    for(int i=0;i<roz;i++)
        {
            suma+=tab[i];
        }
        sr=suma/roz;
        cout<<"srednia to: "<<sr<<endl;
        cout<<"adres tablicy to: "<<tab;
        delete[]tab;
}

int main()
{
int roz;
cout<<"podaj ilosc elementow"<<endl;
cin>>roz;
    adres_tab(roz);
    return 0;
}

Pozostało 580 znaków

2017-11-06 00:25
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 3 minuty temu

Lokalizacja: Tuchów

3

Wynikiem funkcji jest adres utworzonej tablicy […]

Masz napisać funkcję, która tworzy tablicę, wypełnia ją randomowymi liczbami i zwraca jej adres. Jeśli ta funkcja zwróci adres inny niż null to w dalszej części programu, masz obliczyć średnią arytmetyczną liczb w niej znajdujących się.

Ty natomiast napisałeś funkcję, która robi wszystko na kupę, a jej rezultat nie jest w ogóle używany.


Dla zwiększenia czytelności, możesz cały ten kod podzielić na więcej funkcji – jedna do pobierania rozmiaru od użytkownika, druga do tworzenia tablicy i zwracania jej adresu, trzecia do jej zwalniania z pamięci i czwarta do liczenia średniej.

ProTip: formatuj swój kod, bo w obecnej postaci jest nieczytelny.


edytowany 4x, ostatnio: furious programming, 2017-11-06 00:29

Pozostało 580 znaków

2017-11-06 10:18

Rejestracja: 3 lata temu

Ostatnio: 1 rok temu

0

Dzięki, ale jak w takim razie użyć tutaj właściwie rezultat tej funkcji? Mógłbyś naprowadzić trochę bardziej szczegółowo?

Pozostało 580 znaków

2017-11-06 13:35

Rejestracja: 6 lat temu

Ostatnio: 10 miesięcy temu

2

Tak na szybko:

#include<iostream>
#include<ctime>
using namespace std;

int* initialize(size_t length)
{
    if (length < 1) return nullptr;
    int* array = new int[length];
    for (size_t i = 0; i < length; ++i)
    {
        array[i] = rand() % 10 + 1;
    }
    return array;
}

void destroy(const int* array)
{
    if (array)
    {
        delete[] array;
    }
}

void print(const int* array, size_t length)
{
    cout << "Numbers:\n";
    for (size_t i = 0; i < length; ++i)
    {
        cout << array[i] << "\n";
    }
}

double avg(const int* array, size_t length)
{
    int sum = 0;
    for (size_t i = 0; i < length; ++i)
    {
        sum += array[i];
    }
    return sum / (double)length;
}

int main()
{
    srand((unsigned int)time(NULL));
    size_t length = 5;
    int* array = initialize(length);
    if (array)
    {
        print(array, length);
        cout << "\nAvg: " << avg(array, length) << "\n";
        destroy(array);
    }
    return 0;
}

Rand po staremu, bo po nowemu mi się nie chce. Jakoś w C++11 strasznie to udziwnili.

edytowany 1x, ostatnio: grzesiek51114, 2017-11-06 13:36
Pokaż pozostałe 4 komentarze
No tak, ale przecież dokładnie to samo osiągasz z moją templatką - kq 2017-11-06 19:13
Aaaaa no ale wiesz... templatkę to trzeba sobie napisać i spoko, ok. Tylko, że ja chcę mieć to w standardzie i używać jak człowiek będąc np. początkującym, a nie się zastanawiać jak to napisać. - grzesiek51114 2017-11-06 19:14
Dlatego wrzuciłem gotową do posta ;​) Też chcę w standardzie, wiele rzeczy chcę w standardzie :​/ - kq 2017-11-06 19:15
@kq np. piwo w standardzie :) - grzesiek51114 2017-11-06 19:15
@kq ja to się tak zastanawiam czasami: że ja jeszcze w ogóle potrafię dobry kod w C++ napisać hehe Może z tym jest jak z jazdą na rowerze...? :) PS: i to jeszcze w języku, którego tak szczerze nienawidziłem na studiach za te wszystkie gwiazdki. No ale cóż... później pokochałem go właśnie za gwiazdki więc wychodzi bądź co bądź na zero. :) - grzesiek51114 2017-11-06 19:16

Pozostało 580 znaków

2017-11-06 16:09

Rejestracja: 4 lata temu

Ostatnio: 4 minuty temu

0
grzesiek51114 napisał(a):

Tak na szybko:

Rand po staremu, bo po nowemu mi się nie chce. Jakoś w C++11 strasznie to udziwnili.

tzn? O to chodzi? http://en.cppreference.com/w/cpp/numeric/random

edytowany 2x, ostatnio: WeiXiao, 2017-11-06 16:25

Pozostało 580 znaków

2017-11-06 17:02

Rejestracja: 6 lat temu

Ostatnio: 10 miesięcy temu

0

Nom. Popatrz jak to się prosto robi w językach high level. :)

edytowany 1x, ostatnio: grzesiek51114, 2017-11-06 17:03

Pozostało 580 znaków

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