error C2440, brak pomysłu na rozwiązanie

0

Witam serdecznie, próbowałem na różne sposoby rozwiązać ten problem ale przy próbie kompilacji wyrzuca błąd, że nie może przekonwertować wskaźnika na zwykłe double.

Błąd: error C2440: 'return' : cannot convert from 'double *' to 'double'

Czy ktoś z Was widzi rozwiązanie? Jeśli tak będe wdzięczny za pomoc.

edit: dodam, że w pętli dodatkowo będzie zapis adresu struktury do tablicy, przeoczyłem to już nie będę dopisywał, ale problem będzie taki sam.

struct struktura{
    int x;
    char c;
    double d;
};

double losowanie()
{
    int i, N;
    printf("Podaj ilosc struktur: ");
    scanf_s("%d", &N);
    double* tablica = new double[N];

    srand(time(NULL));

    for (i = 0; i < N; i++)
    {
        struktura* i = new struktura;
        i->x = rand();
        i->c = rand();
        i->d = 0;
    }

    printf("Adres tablicy: %d \n", tablica);
    
    return(tablica);
}
1

No a jak chcesz zwrócić tablicę, skoro funkcja zwraca double?

return tablica[0] możesz zrobić, albo return tablica[42] na ten przykład.

1

... jak wyżej oraz wpisujesz dane do struktura* i zaś zwracasz tablicę pewnie oczekujesz że w tablice coś będzie?

struktura *losowanie(size_t N)
  {
   static bool once=true;
   if(once)
     {
      once=false;
      srand(time(0));
     }
   struktura *Tb=new struktura[N];
   for(i=0;i<N;++i)
     {
      Tb[i].x=rand();
      Tb[i].c='A'+rand()%26;
      Tb[i].d=0;
     }
   return tablica;
  }

O rozmiar tablicy pytaj w main'ie

0

Chyba trochę źle sprecyzowałem problem, nie chce zwrócić tablicy tylko adres do niej, a w tablicy mają być adresy do zaalokowanych struktur (tablica wskaźników na struktury). W każdym razie bardzo dziękuje za zainteresowanie tematem, jednak to jeszcze nie rozwiązuje mojego problemu

1

Tylko i wyłącznie drobne różnice, zacznij się uczyć bo zaraz będą potrzebne 10 razy większe kody, których za darmo nie dostaniesz.

struktura **losowanie(size_t N)
  {
   static bool once=true;
   if(once)
     {
      once=false;
      srand(time(0));
     }
   struktura **Tb=new struktura*[N];
   for(i=0;i<N;++i)
     {
      Tb[i]=new struktura;
      Tb[i]->x=rand();
      Tb[i]->c='A'+rand()%26;
      Tb[i]->d=0;
     }
   return tablica;
  }
0

Dzięki wielkie ; ) cały czas się ucze, dlatego w sumie założyłem tu konto, nie oczekiwałem gotowca. To fragment dużo większego programu, po prostu z tym miałem problem. Mółbyś mi jeszcze wytłumaczyć dlaczego przy "losowanie" jest wskaźnik na wskaźnik?

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