• 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
172 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 533 wizyt
0 głosów
1 odpowiedź 260 wizyt
pytanie zadane 24 marca 2020 w C i C++ przez Ururka Nowicjusz (230 p.)
0 głosów
1 odpowiedź 884 wizyt
pytanie zadane 13 kwietnia 2019 w Python przez yteicosf Użytkownik (640 p.)

92,453 zapytań

141,262 odpowiedzi

319,087 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...