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

Odwołanie się do elementów [0] w tablicy statycznej

+1 głos
1,209 wizyt
pytanie zadane 24 lutego 2021 w C i C++ przez eternal Użytkownik (620 p.)
const int n = 10;
float tab[n];
float suma = 0;
float min, max;
int ujemne = 0, dodatnie = 0, zerowe = 0;

cout << "Wprowadz elementy tablicy " << n << "-elementowej:" << endl;
for (int i = 0; i < n; i++)
{
cout << "tab[" << i << "] = ";
cin >> tab[i];
}

min = tab[0];
max = tab[0];
for (int i = 0; i < n; i++)
{
suma += tab[i];

if (tab[i] < min)
{
min = tab[i];
}

if (tab[i] > max)
{
max = tab[i];
}

if (tab[i] > 0)
{
dodatnie++;
}

if (tab[i] < 0)
{
ujemne++;
}

if (tab[i] == 0)
{
zerowe++;
}
}

cout << endl << "Suma elementow tablicy wynosi: " << suma << endl;
cout << "Srednia elementow tablicy wynosi: " << (suma / n) << endl;
cout << endl << "Najmniejszy element tablicy to: " << min << endl;
cout << "Najwiekszy element tablicy to: " << max << endl;
cout << endl << "W tablicy jest " << dodatnie << " elementow dodatnich." << endl;
cout << "W tablicy jest " << ujemne << " elementow ujemnych." << endl;
cout << "W tablicy jest " << zerowe << " elementow zerowych." << endl;

Zastanawia mnie jedno, mianowicie dlaczego przy odwołaniu min, max autor odwołuje się do [0] elementu w dwóch różnych przypadkach.

min = tab[0];

max = tab[0];

kod się kompiluje więc wszystko jest dobrze ale zastanawia mnie na jakiej zasadzie działa odwołanie w 2 różnych przypadkach do tego samego elementu tablicy i zapisanie tam różnych wartości.

komentarz 24 lutego 2021 przez adrian17 Mentor (355,180 p.)

odwołanie w 2 różnych przypadkach do tego samego elementu tablicy i zapisanie tam różnych wartości

Chyba fundamentalnie nie rozumiesz co robi przypisanie.

Przypisanie nie jest z lewej do prawej, tylko z prawej do lewej. `a = 5` oznacza że do `a` przypisywane jest 5, a nie że 5 staje się `a`. A tutaj, do początkowej wartości `min` jest przypisana wartość pierwszego elementu tablicy, to samo z `max`.

Nie ma tutaj "zapisania różnych wartości".

komentarz 24 lutego 2021 przez Whiskey_Taster Pasjonat (15,610 p.)
Wydaje mi się, że autor wątku pyta dlaczego pierwszy element tablicy jest wartością minimum oraz maksimum. Oczywiście źle rozumie pojęcie odwołania, ale ponadto samą ideę wyboru. Otóż tablice są niepuste, wobec tego na wstępie zarówno minimalnym, jak i maksymalnym elementem będzie pierwszy element tablicy. Dopiero później już na tym działamy.
1
komentarz 24 lutego 2021 przez VBService Ekspert (256,580 p.)

@Whiskey_Taster  smiley

Otóż tablice są niepuste, ...

chyba chodziło Tobie, że tablictab[n] nie jest pusta (nie może być pusta), bo użytkownik "wprowadził" do niej dane ( cin >> tab[i]; )

for (int i = 0; i < n; i++)
{
    cout << "tab[" << i << "] = ";
    cin >> tab[i];
}

 

1
komentarz 25 lutego 2021 przez Whiskey_Taster Pasjonat (15,610 p.)

@VBService, tak, chodziło oczywiście o jedną tablicę laugh 

1 odpowiedź

+2 głosów
odpowiedź 24 lutego 2021 przez VBService Ekspert (256,580 p.)
wybrane 25 lutego 2021 przez eternal
 
Najlepsza

Ten zapis

cout << "Wprowadz elementy tablicy " << n << "-elementowej:" << endl;
for (int i = 0; i < n; i++)
{
    cout << "tab[" << i << "] = ";
    cin >> tab[i];
}

daje użytkownikowi możliwość wprowadzenia liczb w pewnym zakresie, przez niego wybranym, żeby obliczyć min i max, musisz zainicjować je wartościami początkowymi, więc w tym przypadku pierwsza wartość przedziału to tab[0].

np. dla

float tab[n] = { 3, 9, -5, 14, 8, 24, -1.5, 0, 0.75, 1 };

tab[0] ma wartość 3, czyli zainicjujemy min i max liczbą 3

float tab[n] = { -3, -9, -5, -14, -8, -24, -1.5, -10, -0.75, -1 };

a tu mamy, tab[0] ma wartość -3, czyli zainicjujemy min i max liczbą -3

Rozważ takie scenariusze:

min i max - nie posiadają, żadnej wartości początkowej, a użytkownik podał liczby jak poniżej tab[n] = { ... }

float tab[n] = { -3, -9, -5, -14, -8, -24, -1.5, -10, -0.75, -1 };

...

//min = 0;
//min = tab[0];
//max = tab[0];
//max = 0;

pełny kod

#include <iostream>
using namespace std;

int main()
{
const int n = 10;
//float tab[n];
float suma = 0;
float min, max;
int ujemne = 0, dodatnie = 0, zerowe = 0;
 
cout << "Wprowadz elementy tablicy " << n << "-elementowej:" << endl;
//float tab[n] = { 3, 9, -5, 14, 8, 24, -1.5, 0, 0.75, 1 };
//float tab[n] = { 3, 9, 5, 14, 8, 24, 1.5, 10, 0.75, 1 };
float tab[n] = { -3, -9, -5, -14, -8, -24, -1.5, -10, -0.75, -1 };
for (int i = 0; i < n; i++)
{
cout << "tab[" << i << "] = " << tab[i] << endl;
//cin >> tab[i];
}

//min = 0;
//min = tab[0];
//max = tab[0];
//max = 0;

for (int i = 0; i < n; i++)
{
suma += tab[i];
 
if (tab[i] < min)
{
min = tab[i];
}
 
if (tab[i] > max)
{
max = tab[i];
}
 
if (tab[i] > 0)
{
dodatnie++;
}
 
if (tab[i] < 0)
{
ujemne++;
}
 
if (tab[i] == 0)
{
zerowe++;
}
}
 
cout << endl << "Suma elementow tablicy wynosi: " << suma << endl;
cout << "Srednia elementow tablicy wynosi: " << (suma / n) << endl;
cout << endl << "Najmniejszy element tablicy to: " << min << endl;
cout << "Najwiekszy element tablicy to: " << max << endl;
cout << endl << "W tablicy jest " << dodatnie << " elementow dodatnich." << endl;
cout << "W tablicy jest " << ujemne << " elementow ujemnych." << endl;
cout << "W tablicy jest " << zerowe << " elementow zerowych." << endl;

return 0;
}

teraz 

max=0 (przypisane zero na "sztywno"min nie posiada, żadnej wartości początkowej, a użytkownik podał liczby jak poniżej tab[n] = { ... }

float tab[n] = { -3, -9, -5, -14, -8, -24, -1.5, -10, -0.75, -1 };

//min = 0;
//min = tab[0];
//max = tab[0];
max = 0;

min=0 (przypisane zero na "sztywno"max nie posiada, żadnej wartości początkowej, a użytkownik podał liczby jak poniżej tab[n] = { ... }

float tab[n] = { 3, 9, 5, 14, 8, 24, 1.5, 10, 0.75, 1 };

min = 0;
//min = tab[0];
//max = tab[0];
//max = 0;

teraz 

min i max - tab[0], a użytkownik podał liczby jak poniżej tab[n] = { ... }

float tab[n] = { 3, 9, 5, 14, 8, 24, 1.5, 10, 0.75, 1 };

//min = 0;
min = tab[0];
max = tab[0];
//max = 0;

float tab[n] = { -3, -9, -5, -14, -8, -24, -1.5, -10, -0.75, -1 };

//min = 0;
min = tab[0];
max = tab[0];
//max = 0;

i na koniec

#include <iostream>
using namespace std;

int main()
{
    const int n=10;
    float suma=0;
    int ujemne=0, dodatnie=0, zerowe=0;
 
    cout << "Uzytkownik wprowadzil takie dane do tab[n]:\n"
         << "{ 3, 9, -5, 14, 8, 24, -1.5, 0, 0.75, 1 }\n\n";

    float tab[n] = { 3, 9, -5, 14, 8, 24, -1.5, 0, 0.75, 1 };

    float min=tab[0];
    float max=tab[0];
    
    float last_min=min; // do demonstarcji w petli ponizej
    float last_max=max; // do demonstarcji w petli ponizej  

    cout << "min = tab[0]  = " << tab[0] << "\n"
         << "max = tab[0]  = " << tab[0];

    for (int i=1; i<n; i++)
    {
        cout << "\n\nmin = " << min << "; tab[" << i << "] = " << tab[i];
        if (tab[i] > min)
            cout << "\nmin = "  << min << " poniewaz tab[" << i << "] = " << tab[i] << " jest wieksze.";
        else {
            last_min = min;
            min = tab[i];
            cout << "\nmin = " << min << " poniewaz tab[" << i << "] = " << tab[i] << " jest mniejsze od " << last_min;
            
        }
            
        cout << "\nmax = " << max << "; tab[" << i << "] = " << tab[i];    
        if (tab[i] < max)
            cout << "\nmax = " << max << " poniewaz tab[" << i << "] = " << tab[i] << " jest mniejsze.";
        else {
            last_max = max;
            max = tab[i];
            cout << "\nmax = " << max << " poniewaz tab[" << i << "] = " << tab[i] << " jest wieksze od " << last_max;            
        }
    }

    // Zerujemy do obliczen po demonstarcji w petli powyzej
    min=tab[0];
    max=tab[0];

    for (int i=0; i<n; i++)
    {
        suma += tab[i];
 
        if (tab[i]<min)
            min = tab[i];
            
        if (tab[i]>max)
            max = tab[i];
 
        if (tab[i]>0)
            dodatnie++;

        if (tab[i]<0)
            ujemne++;
 
        if (tab[i]==0)
            zerowe++;
    }
 
    cout << "\n\nSuma elementow tablicy wynosi: " << suma
         << "\nSrednia elementow tablicy wynosi: " << (suma / n)
         << "\n\nNajmniejszy element tablicy to: " << min
         << "\nNajwiekszy element tablicy to: " << max
         << "\n\nW tablicy jest " << dodatnie << " elementow dodatnich."
         << "\nW tablicy jest " << ujemne << " elementow ujemnych."
         << "\nW tablicy jest " << zerowe << " elementow zerowych." << endl;
    
    return 0;
}

Podobne pytania

0 głosów
1 odpowiedź 4,095 wizyt
0 głosów
2 odpowiedzi 1,774 wizyt
pytanie zadane 12 sierpnia 2018 w PHP przez Luna Cognita Dyskutant (8,130 p.)
0 głosów
1 odpowiedź 1,583 wizyt

93,731 zapytań

142,669 odpowiedzi

323,286 komentarzy

63,291 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...