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

Program spoj (c++) - przeciążenie funckji

Object Storage Arubacloud
0 głosów
194 wizyt
pytanie zadane 14 marca 2018 w C i C++ przez Sic Dyskutant (8,510 p.)

Cześć !

Pisałem program z jednego z zadań spoj (nie zależy mi na tym, żeby został tam zaakceptowany) wydaję mi się, że kod powinien być poprawny. Mam jednak problem ponieważ przeciążyłem funkcje moje pytanie polega jak? Skoro parametry struktury są różne.

#include <iostream>
#include <string>

char tab[12];
int liczby[11] = {1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 1};

inline void pesel (int wywolanie);
inline void pesel (int k, int a=0, int b=0);

int main()
{
        int spoj;
        pesel(spoj);
        return 0;
}

inline void pesel (int k, int a, int b)
{
        for(int i=0; i<11; i++)
        {
                a = (tab[i] - '0') * liczby[i];
                b += a;
        }
        k = b %10;
        (k ==0) ? "D" : "N";
}
inline void pesel (int wywolanie)
{
        int c, d, p;
        std::cin >> wywolanie;
        for(int i=0; i<wywolanie; i++)
        {
                std::cin >> tab;
                pesel(p, c, d);
        }
}

 

1 odpowiedź

+1 głos
odpowiedź 14 marca 2018 przez Bondrusiek Maniak (61,370 p.)
wybrane 14 marca 2018 przez Sic
 
Najlepsza

Witam,

zauważ, że te dwie funkcje są takie same dla jednego argumentu

inline void pesel (int wywolanie);
inline void pesel (int k, int a=0, int b=0);

W funkcji main wywołujesz

int main()
{
        int spoj;
        pesel(spoj);

Kompilator nie może zgadnąć o jaką funkcję Ci chodzi. Czy o void pesel (int wywolanie) czy o void pesel (int wywolanie, int a=0, int b=0) bo przecież te dwie funkcje można wykonać tylko z jednym parametrem.

komentarz 14 marca 2018 przez Sic Dyskutant (8,510 p.)
Dobra dziękuję.
komentarz 14 marca 2018 przez Sic Dyskutant (8,510 p.)

A teraz mam drugie pytanie dlaczego wyrażenie warunkowe:

(k ==0) ? "D" : "N";

Nic nie pokazuje ? gdzie tutaj jest błąd ?

komentarz 14 marca 2018 przez Bondrusiek Maniak (61,370 p.)

A co ma pokazywać.

Przeczytaj definicje tego wyrażenia: jeśli k == 0 to "D" jeśli nie to "N"

Należy dodać jakiś np. strumień, który to obsłuży

std::cout << (k ==0) ? "D" : "N";

 

komentarz 14 marca 2018 przez Sic Dyskutant (8,510 p.)
Sprawdzałem nie przeszło. Pokazuje 0.
1
komentarz 14 marca 2018 przez Bondrusiek Maniak (61,370 p.)

dodaj nawiasy () aby zobaczyć wartość wyrażenia ("D" lub "N")

std::cout << ((k ==0) ? "D" : "N" );

 

komentarz 14 marca 2018 przez Sic Dyskutant (8,510 p.)
Dziękuję to pomogło.

Podobne pytania

0 głosów
1 odpowiedź 741 wizyt
pytanie zadane 5 sierpnia 2018 w C i C++ przez Sic Dyskutant (8,510 p.)
0 głosów
1 odpowiedź 241 wizyt
0 głosów
1 odpowiedź 642 wizyt
pytanie zadane 3 listopada 2018 w C i C++ przez Sic Dyskutant (8,510 p.)

92,617 zapytań

141,466 odpowiedzi

319,783 komentarzy

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

...