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

question-closed Problem z funkcją w funkcji

Object Storage Arubacloud
0 głosów
182 wizyt
pytanie zadane 17 marca 2020 w C i C++ przez Ururka Nowicjusz (230 p.)
zamknięte 20 marca 2020 przez Ururka

Hej.

Mam problem w tym kodzie w miejscu:
    getRatio (tuple <double, double>);

w main. Wyskakuje mi błąd: error: expected primary-expression before ')' token. Czyli po prostu mam tu coś źle napisane. Próbowałam wiele różnych opcji, ale przyznam, że niezbyt łapię używanie jednych funkcji w drugich, więc nic więcej nie wymyślę i proszę Was o pomoc.

#include <iostream>
#include <tuple>

using namespace std;

tuple <double, double>  Input(double &a, double &b){
    cout << "Podaj a.";
    cin >> a;
    do{
        cout << "Podaj b." << endl;
        cin >> b;
    } while (b==0);

    return tuple<double, double>(a, b);
}

double getRatio (tuple <double, double>){
    double a = 1;
    double b = 1;
    Input(a, b);
    double wynik = a/b;
    return wynik;
    }


int main (){
    double a;
    double b;
    Input(a, b);
    getRatio (tuple <double, double>);
    cout <<" Using do-while loop." << std :: endl;
    double wynik = wynik;
    cout <<" Iloraz wynosi:" << wynik << std :: endl ;
    
return 0;
}

 

komentarz zamknięcia: Pojawiła się odpowiedź.
komentarz 17 marca 2020 przez tkz Nałogowiec (42,000 p.)
Dlaczego tuple dla dwóch zmiennych?
komentarz 19 marca 2020 przez Ururka Nowicjusz (230 p.)
Potrzebuję dwóch liczb do działania, a treść zadania wymaga umieszczenia obu w tym tuple.

2 odpowiedzi

+1 głos
odpowiedź 18 marca 2020 przez j23 Mędrzec (194,920 p.)
wybrane 20 marca 2020 przez Ururka
 
Najlepsza

Kod strasznie chaotyczny, jakbyś nie mógł się zdecydować, czy chcesz użyć std::tuple, czy przekazywać argumenty tradycyjnie.

std::tuple<double, double> Input() 
{
  double a, b;

  std::cout << "Podaj a: ";
  std::cin >> a;
  
  while (std::cout << "Podaj b: ", std::cin >> b && b == 0) {}
  return {a, b};
}

double getRatio(const std::tuple <double, double> &v) {
  return std::get < 0 > (v) / std::get < 1 > (v);
}

int main()
{
    std::cout << " Using do-while loop.\n";
    double wynik = getRatio(Input());
    std::cout << " Iloraz wynosi:" << wynik << std::endl;
    return 0;
}

 

komentarz 19 marca 2020 przez Ururka Nowicjusz (230 p.)
edycja 19 marca 2020 przez Ururka

Po prostu nie wiem co innego zrobić, żeby każda kolejna funkcja wiedziała, co to za argumenty.

Dziękuję za kod, sam niestety nie działa (pamiętałam o dodaniu początku), ale kilka rozwiązań się sprawdziło... Niestety zawsze zostawał co najmniej jeden błąd.

 

Aktualnie stoję na tym i nie czyta w main a i b.

 


#include <iostream>
#include <tuple>
 
using namespace std;
 
tuple <double, double>  Input(double a, double b){
    cout << "Podaj a.";
    cin >> a;
    do{
        cout << "Podaj b." << endl;
        cin >> b;
    } while (b==0);
 
    return tuple<double, double>{a, b};
}
 
double getRatio (double a, double b){
    return a/b;
    }
 
 
int main (){
    tuple <double, double>  Input(double a, double b);
    double getRatio (double a, double b);
    double wynik = getRatio (a, b);
    cout <<" Using do-while loop." << std :: endl;
    cout <<" Iloraz wynosi:" << wynik << std :: endl ;
     
return 0;
}

 

komentarz 19 marca 2020 przez j23 Mędrzec (194,920 p.)

Dziękuję za kod, sam niestety nie działa (pamiętałam o dodaniu początku)

A co tam może nie działać? Nie dałem oczywiście części z nagłówkami, bo to są rzeczy, których można się domyślić, ale kod jest na bank poprawny.

komentarz 19 marca 2020 przez tkz Nałogowiec (42,000 p.)

@j23, 9 linia jest dostępna od c++ 17, dlatego "nie działa". Niech autor pytania włączy owy standard. 

komentarz 20 marca 2020 przez Ururka Nowicjusz (230 p.)
Zmiana standardu pomogła :D

Dziękuję Wam!
0 głosów
odpowiedź 17 marca 2020 przez Michałełe Nałogowiec (25,600 p.)

Hmm, przydałaby się nazwa dla argumentu

double getRatio (tuple <double, double>){

 

Podobne pytania

+2 głosów
2 odpowiedzi 550 wizyt
0 głosów
1 odpowiedź 275 wizyt
pytanie zadane 24 marca 2020 w C i C++ przez Ururka Nowicjusz (230 p.)
0 głosów
1 odpowiedź 916 wizyt
pytanie zadane 13 kwietnia 2019 w Python przez yteicosf Użytkownik (640 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,962 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!

...