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

Jak zmienić dane w tablicy i wykonać działania na zmienionych danych?

Object Storage Arubacloud
0 głosów
383 wizyt
pytanie zadane 29 października 2016 w C i C++ przez Ayaka Nowicjusz (170 p.)

Cześć! Mam do napisania program, gdzie mam podaną tablicę z danymi (wyniki firmy w danym miesiącu). Liczę średnią wartości z tablicy, wyszukuję największą i najmniejszą wartość oraz w ilu miesiącach dane były mniejsze od zera i ile tych miesięcy było. Do tego momentu nie ma żadnego problemu, ale później mam zapytać użytkownika, czy chce zmienić jakąś daną i jeśli tak wprowadzić ją i wykonać ponownie obliczenia ze zmienionymi danymi. Nie wiem jak zrobić, żeby program nie korzystał z początkowych danych tylko liczył z tymi nowymi. Kod niestety jest mało czytelny z powodu mnóstwa prób rozwiązania tego problemu. Bardzo proszę o pomoc smiley

#include <iostream>

using namespace std;

void maxmin()
{
    int i, ma, mi,tab[12]={-128,48,72.5,150.5,10,321,134,12,185.9,-54,100,332};

    ma=tab[0];
    mi=tab[0];
    for(i=0; i<12; i++)
    {
        if (mi>tab[i]) mi=tab[i];
        if (ma<tab[i]) ma=tab[i];

    }
    cout<<"min = "<<mi<<" max= "<<ma<<endl;
}

int srednia()
{
    int i, tab[12]={-128,48,72.5,150.5,10,321,134,12,185.9,-54,100,332};

    int suma=0;
    for (i=0; i<12; i++)
    {
        suma+=tab[i];
    }
    float srednia=(suma/12);
    return srednia;
}

void straty()
{
    int i,tab[12]={-128,48,72.5,150.5,-10,321,134,12,185.9,-54,100,332};

    int ile=0;
    cout<<"straty wystapily w miesiacach:"<<endl;
    for(i=0;i<12;i++)
    {
        if(tab[i]<0)
        {ile=ile+1;
        cout<<i+1<<endl;}
    }
cout<<"czyli w "<<ile<<" miesiacach"<<endl;

}


void zmiana(int tab[12])
{

int  x;
 cout<<"Dane z ktorego miesiaca chcesz zmienic?"<<endl;
 cin>>x;

 cout<<"podaj nowa wartosc: "<<endl;
 cin>>tab[x-1];
 cout<<tab[x-1]<<endl;
 for(int i=0; i<12; i++)
 cout<<tab[i]<<endl;
 

}


int main()
{

 int i, s, x, c;
char z;
int tab[12]={-128,48,72.5,150.5,10,321,134,12,185.9,-54,100,332};

maxmin();
cout<<"srednia= "<<srednia()<<endl;
straty();

cout<<"czy chcesz zmienic dane?";
cin>>z;
if(z=='t')
{
zmiana(tab);
}
else

return 0; }


 

1 odpowiedź

0 głosów
odpowiedź 29 października 2016 przez thekibi27 Bywalec (2,110 p.)
Może spróbuj wykonać całą akcję w nieskończonej pętli for(;;), i po zapytaniu o zmianę danych będziesz miał if(z=='t') zmiana(tab), else break;
komentarz 29 października 2016 przez Ayaka Nowicjusz (170 p.)
Niestety to nie rozwiązuje problemu, ponieważ funkcje suma, maxmin i straty cały czas korzystają z początkowych danych i nie zmienia się ich wynik :/
komentarz 29 października 2016 przez thekibi27 Bywalec (2,110 p.)
Podejrzewam, że problem jest w miejscu inicjowania tablicy tab[12]. Po zmianie danych, program potem i tak ponownie przypisze dane początkowe przy inicjowaniu. Wyrzuciłbym zatem inicjowanie tablicy poza pętlę nieskończoną.
komentarz 29 października 2016 przez Ayaka Nowicjusz (170 p.)

Oh racja! Teraz jest dobrze. Dziękuję za pomoc laugh

Podobne pytania

0 głosów
2 odpowiedzi 1,133 wizyt
0 głosów
1 odpowiedź 1,163 wizyt
0 głosów
1 odpowiedź 157 wizyt
pytanie zadane 27 stycznia 2021 w C i C++ przez kacperc317 Początkujący (320 p.)

92,620 zapytań

141,474 odpowiedzi

319,813 komentarzy

62,004 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!

...