• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem - Przekazywanie returna z funkcji do funkcji

Object Storage Arubacloud
0 głosów
179 wizyt
pytanie zadane 17 maja 2017 w C i C++ przez Kamil Paradowski Użytkownik (620 p.)

Witam, mam problem z kodem. Pisząc w skrócie: Chciałbym, aby z funkcji a móc wyciągnąć zmienną h, którą mógłbym później podstawić do pętli w funkcji b jak i w funkcji c, jednakże nie wiem jak to mam uczynić. Napisałem taki kod na brudno jak na razie, proszę bardzo o udzielenie odpowiedzi na te pytanie, bo borykam się z tym kodem od 2 dni :D

 

#include <iostream>

int a();
void b();
float c();

int main()
{

    std::cout<<"Witaj! Podaj do 10-ciu ocen golfowych. Wpisanie liczby 0 przerywa program"<<std::endl;
    a();
    b();
    c();
    return 0;
}

int a()
{
    short d=10;
    float e[d];
    char g;
    int h=0;
    int x=0;
    for(int i=0; i<d; i++)
    {
        std::cout<<"Wynik #"<<i+1<<": ";
        std::cin>>e[i];
        std::cout<<"Jeszcze jedna ocena? Wpisz 't' (Tak) lub 'n' (Nie) : ";
        std::cin>>g;
        h=h+1;
        if (g == 'n')
            break;
        else if (g == 't')
            continue;
    }
    return h;
}
void b()
{
    a();
    short d=10;
    float e[d];
    std::cout<<a();
    std::cout<<"Oto wszystkie dane zawarte w tablicy: "<<std::endl;
    for(int i=0; i<a(); i++)
        std::cout<<"Wynik #"<<i+1<<" = "<<e[i]<<" ";
}
float c()
{
    a();
    short d=10;
    float e[d];
    long double f=0;
    for(int i=0; i<a(); i++)
        f=f+e[i];
    return (f=f/a());
}

 

komentarz 17 maja 2017 przez ScriptyChris Mędrzec (190,190 p.)
edycja 17 maja 2017 przez ScriptyChris

Czy próbowałeś wewnątrz main() zapisać po prostu tak?

int hValue = a();
b(hValue);
c(hValue);

W funkcjach b oraz c musisz też określić jakie argumenty przyjmują, czyli:

void b(int hArgument)
{
  /* kod funkcji */

float c(int hArgument)
{
  /* kod funkcji*/

Nie wiem, czy tam jakichś wskaźników/referencji nie trzeba przekazywać (więc traktuj powyższe trochę jak pseudokod), ale z grubsza tak powinno to się dać zrobić.

[edit]

A te pętle nie działają?

for(int i=0; i<a(); i++)

a() powinieneś otrzymywać zmienną h, która zostaje użyta do warunku zakończenia pętli

komentarz 18 maja 2017 przez WilmaOlcho Obywatel (1,740 p.)

Czy nie lepiej byłoby:
 

for (int i=0,arg=a(); i<arg; i++)

Kolejne wywołanie tej funkcji sprawiłoby że program pozwoliłby na pobranie większej ilości ocen golfowych niż na początku, przy czym poprzedniego wyniku by po prostu "zapomniał".
Więc dlaczego stosować ją przy każdym obrocie pętli, skoro można wykorzystać jako warunek początkowy?

1 odpowiedź

+1 głos
odpowiedź 18 maja 2017 przez CjanciK Bywalec (2,970 p.)
Cześć,

Spróbuj może użyć jednej funkcji jako argument drugiej. Wtedy funkcją, która będzie argumentem innej funkcji możesz posterować w ten sposób żeby zwracała na zewnątrz zmienną która Cię interesuje. Jeżeli się mylę to mnie poprawcie :)

Może tutaj znajdziesz coś co Ci pomoże:

https://forum.pasja-informatyki.pl/178888/funkcja-jako-argument-funkcji

Pozdrawiam.

Podobne pytania

0 głosów
1 odpowiedź 513 wizyt
pytanie zadane 10 sierpnia 2015 w C i C++ przez Patrycjerz Mędrzec (192,320 p.)
0 głosów
3 odpowiedzi 1,027 wizyt
pytanie zadane 14 kwietnia 2016 w C i C++ przez TheFeniks Gaduła (4,690 p.)
0 głosów
1 odpowiedź 419 wizyt
pytanie zadane 9 kwietnia 2016 w C i C++ przez TheFeniks Gaduła (4,690 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...