Zwracanie tablicy z wartościami trzech zmiennych

Odpowiedz Nowy wątek
2019-04-15 13:29
0

Witam :D Pisze program który polega podaniu 10 liczb typu float,zamianie ich na int i sprawdzanie czy liczba jest parzysta,nieparzysta,większa od 100 i czy jest palindromem.Oto kod:

#include <iostream>

using namespace std;
void Podawanie_liczb (float liczba,int tab[])//Funkcja Działa
{
    cout << "Podaj dziesiec liczb:" << endl;
    for (int i = 1; i <= 10; i++)
    {
        cout << i << ".";
        cin >> liczba;
        int liczbabez = (int)liczba;
        tab[i] = liczbabez;
    }
}
int Palindromy (int tab[])//Funkcja Działa
{
    int x,y,Palindrom = 0;
    for (int i = 1; i <= 10; i++)
    {
        y = tab[i] % 10;
        x = tab[i] /10;
        if (x >= 10)
            {
                x = x/10;
            }
        if (x == y)
        {
            Palindrom++;
        }
    }
    return Palindrom;
}
int* Pokazywanie_liczb(int tab[])//Funkcja Działa
{
    int Parzyste,NieParzyste,Wieksze = 0;
    for (int i = 1; i <= 10; i++)
    {
        if (tab[i] > 100)
        {
            Wieksze++;
        }
        else if (tab[i]%2 == 0)
        {
            Parzyste++;
        }
        else
        {
            NieParzyste++;
        }
    }
    Tablica[0] = Parzyste;
    Tablica[1] = NieParzyste;
    Tablica[2] = Wieksze;
    return Tablica;
}

int main()
{
    float liczbaz = 0;
    int Palindromy1 = 0;
    int P,NP,W = 0;
    int przechowywanie[10];
    Podawanie_liczb(liczbaz,przechowywanie);
    Palindromy1 = Palindromy(przechowywanie);
    P = Pokazywanie_liczb(przechowywanie)[0]; //<<
    NP = Pokazywanie_liczb(przechowywanie)[1];//<< Te algorytmy nie działają
    W = Pokazywanie_liczb(przechowywanie)[2];//<<
    cout <<"Ilosc liczb ktore sa parzyste:"  <<  P << endl;
    cout <<"Ilosc liczb ktore sa nieparzyste:"  <<  NP << endl;
    cout <<"Ilosc liczb ktore sa wieksze od 100:"  <<  W << endl;
    cout <<"Ilosc liczb ktore sa palindromami:"  <<  Palindromy1 << endl;
    return 0;
}

Z góry dziękuje ":D

edytowany 1x, ostatnio: kq, 2019-04-15 13:31

Pozostało 580 znaków

2019-04-15 13:37
kq
0

Ten kod się nie kompiluje.

int* Pokazywanie_liczb(int tab[])//Funkcja Działa
// ...
    P = Pokazywanie_liczb(przechowywanie)[0]; //<<
    NP = Pokazywanie_liczb(przechowywanie)[1];//<< Te algorytmy nie działają
    W = Pokazywanie_liczb(przechowywanie)[2];//<<

Zdecyduj się.

int Palindromy (int tab[])//Funkcja Działa
int* Pokazywanie_liczb(int tab[])//Funkcja Działa

Okropnie nazywasz funkcje. O ile nazwa pierwszej po prostu nie mówi absolutnie nic na temat tego, co ta funkcja robi, to druga nazwa to po prostu kłamstwo. Przecież tam żadnego pokazywania nie ma. Nie ma też zmiennej Tablica, więc nie wiadomo czy kod jest niepoprawny tylko logicznie, czy też formalnie.

Jeśli funkcja Palindromy miała zwracać liczbę palindromów w tablicy, to jest błędna.

Dodatkowa uwaga:

int P,NP,W = 0;
int x,y,Palindrom = 0;

W obu definicjach tylko jedna z trzech zmiennych jest zainicjalizowana na zero. Pozostałe mają niezdefiniowane wartości.


+ wychodzenie poza zakres tablicy w Podawanie_liczb ;) - tajny_agent 2019-04-15 13:52
Ano fakt. - kq 2019-04-15 14:00

Pozostało 580 znaków

2019-04-15 14:22
0

Dziękuje Za Odpowiedź :D Zmeiniłem nazwy Funkcji:

Zwracanie_Palindrow (int tab[])//Funkcja Działa
int* Zwracanie_liczb(int tab[])//Funkcja Działa

Ale nie rozumiem jak zrobić żeby to:

P = Zwracanie_liczb(przechowywanie)[0]; //<<
 NP = Zwracanie_liczb(przechowywanie)[1];//<< Te algorytmy nie działają
    W = Zwracanie_liczb(przechowywanie)[2];//<<

się kompilowało.Ogólnie chem żeby zmienne dostały wartości tablicy.Czyli żeby zmienna P miała wartość zmiennej Tablica[0] itd;
Z góry dziękuje za odpowiedź :D
PS.Zmienna tablica była tylko zapomniałem wysłałem musiałem poprawić i zapomniałem wpisać

Pozostało 580 znaków

2019-04-19 14:13
0
std::tuple<int,int,int> ExtractInformation( const std::vector<int>& container )
{
    int even {0};
    int greaterThan100 {0};

    for( const auto& element : container )
    {
        if( element > 100  ) greaterThan100++;
        if( element%2 == 0 ) even++;
    }

    return std::make_tuple(even, container.size()-even, greaterThan100);
}

Reszta do obczajenia :)

Pozostało 580 znaków

2019-04-20 18:03
0

Dziękuje za odpowiedź :D

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0