• 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

VPS Starter Arubacloud
0 głosów
197 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,020 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 (195,220 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 (195,220 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,020 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 618 wizyt
0 głosów
1 odpowiedź 311 wizyt
pytanie zadane 24 marca 2020 w C i C++ przez Ururka Nowicjusz (230 p.)
0 głosów
1 odpowiedź 999 wizyt
pytanie zadane 13 kwietnia 2019 w Python przez yteicosf Użytkownik (640 p.)

92,843 zapytań

141,782 odpowiedzi

320,858 komentarzy

62,174 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...