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

Przypisanie do zmiennych wartości zwroconej tablicy

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
141 wizyt
pytanie zadane 16 kwietnia 2019 w C i C++ przez KotLuminos Początkujący (270 p.)

Witam :D Pisze program który polega na napisaniu 10 liczb typu float,zmienienie je na inta i sprawdzanie czy są parzyste,nieparzyste,większe od 100 i czy są palindromami. 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 Zwracanie_Palindrow (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* Zwracanie_liczb(int tab[])//Funkcja Dzia³a
{
    int Tablica[3];
	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; // Przypisanie wartości zmienncyh do komorek (szófladek) w tablicy
    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 = Zwracanie_Palindrow(przechowywanie);
    P = Zwracanie_liczb(przechowywanie)[0]; //Przypisanie zmiennej wartości danej komorlki (nie dizała)
    NP = Zwracanie_liczb(przechowywanie)[1];
    W = Zwracanie_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;
}

Ogólnie wszystko działa tylko że w głównej funkcji main chcę przypisać do zmiennych wartości określonych Komórek tablicy,ale...nie dizała (wogole nie wyświetla). Czemu tak jest?

1 odpowiedź

0 głosów
odpowiedź 16 kwietnia 2019 przez criss Mędrzec (172,570 p.)
int* Zwracanie_liczb(int tab[])//Funkcja Dzia³a
{
    int Tablica[3];
    // ...
    return Tablica;
}

Tablica to jest po prostu blok pamięci. Nie możesz sobie lokalnie (na stosie) zaalokować takiego bloku, a potem zwrócić do niego wskaźnik/adres. Po wyjściu z funkcji wszystkie zmienne lokalne tracą ważność najprościej mówiąc, więc nie możesz zwracać adresu takiej zmiennej. 

komentarz 16 kwietnia 2019 przez KotLuminos Początkujący (270 p.)
Dziękuje za odpowiedź :D
komentarz 16 kwietnia 2019 przez KotLuminos Początkujący (270 p.)
Tak dla informacji...dziękuje...poprawiłem program i działa :D

Podobne pytania

0 głosów
0 odpowiedzi 218 wizyt
0 głosów
1 odpowiedź 388 wizyt
pytanie zadane 25 kwietnia 2017 w C i C++ przez Shiro Stary wyjadacz (10,300 p.)
+1 głos
1 odpowiedź 590 wizyt

93,440 zapytań

142,431 odpowiedzi

322,679 komentarzy

62,802 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

...