[C++] średnia arytmetyczna i tablica dwuwymiarowa - sugestie

iksigrek123
Użytkownik
Użytkownik
Posty: 12
Rejestracja: 30 sie 2011, o 19:08
Płeć: Mężczyzna
Lokalizacja: ŁDZ

[C++] średnia arytmetyczna i tablica dwuwymiarowa - sugestie

Post autor: iksigrek123 »

Witam!

Napisałem kod, który oblicza srednia arytmetyczna wartości pobranych z wiersza, który wybiera sobie użytkownik. Program działa dość dobrze (tak mi się przynajmniej wydaje). Prosiłbym o jakiekolwiek sugestie aby program uprościć (szczególnie mile widziane sugestie osób już zaawansowanych w programowaniu).

Oto kod:

Kod: Zaznacz cały

//Program oblicza średnią arytmetyczną z wartości podanych
//do tabeli o nazwie TABLICA2D. Uzytkownik ma mozliwość wyboru
//wiersza z którego chce sprawdzić średnią arytmetyczną.


#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int c,i,j,k,w;
    cout << "Podaj ilosc wierszy TABLICA2D: w=";
    cin >> w;
    cout << endl;
    cout << "Podaj ilosc kolumn TABLICA2D: k=";
    cin >> k;
    int tablica[w][k];
    int srednia[w];
    
        for(i=0; i<w; i++){
                 c=0;
                 for(j=0; j<k; j++){
                          cout << endl;
                          cout << "Wprowadz wartosc dla TABLICA2D["<<i<<"]["<<j<<"] = ";
                          cin >> tablica[i][j];
                          c = (tablica[i][j])+c;
                          cout << endl;
                          cout << "Suma wartosci kolumn wynosi: ";
                          cout << c <<"
";
                          }
                 cout << endl << endl;
                 cout << "Dzielnik (liczba wartosci kolumn) dla sredniej z wiersza "<<i<<"" 
                         " wynosi j="<<j<<"

";                          
                 srednia[i]=c/j;}
        cout << endl;
        cout << "Dla ktorego wiersza chcesz sprawdzic srednia arytmetyczna? 
"
                "Podaj i=";
        cin >> i;
        cout << endl;
        cout << "Srednia arytmetyczna dla wiersza "<<i<<" w tablicy TABLICA2D wynosi: ";
        cout << srednia[i]<<"
";
        cout << "Srednia podana zostala jako wynik dzielenia calkowitych czesci
";
        cout << "podanych wartosci.";
        cout << endl;
        
    system("PAUSE");
    return EXIT_SUCCESS;
}

Próbowałem dopisać do kodu instrukcję warunkową if tak aby "Suma wartości kolumn wynosiła sumę minmalnie dla dwóch wartości w tablicy tj. aby nie była liczona suma z jednej wartości.
np.
if(j>0){
cout << endl;
cout << "Suma wartosci kolumn wynosi: ";}

Niestety nie udaje mi się to i wtedy program nie działa tak jak powinien.

Pozdrawiam i z góry dziękuję za podpowiedzi.
Ostatnio zmieniony 26 lis 2011, o 11:31 przez ares41, łącznie zmieniany 2 razy.
Powód: Stosuj tagi [code][/code]. Taguj tematy - zapoznaj się z http://www.matematyka.pl/273220.htm
bolok
Użytkownik
Użytkownik
Posty: 39
Rejestracja: 13 maja 2007, o 15:18
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 14 razy

[C++] średnia arytmetyczna i tablica dwuwymiarowa - sugestie

Post autor: bolok »

Nie wiem czy dobrze zrozumiałem ale chodzi o coś takiego? Jeśli nie to pisz postaram się pomóc.

Kod: Zaznacz cały

#include <iostream>
#include <conio.h>


using namespace std;

int main(int argc, char *argv[])
{
    int c,i,j,k,w;
    cout << "Podaj ilosc wierszy TABLICA2D: w=";
    cin >> w;
    cout << endl;
    cout << "Podaj ilosc kolumn TABLICA2D: k=";
    cin >> k;
    int tablica[w][k];
    int srednia[w];

        for(i=0; i<w; i++){
                 c=0;
                 for(j=0; j<k; j++){
                          cout << endl << "Wprowadz wartosc dla TABLICA2D["<<i<<"]["<<j<<"] = ";
                          cin >> tablica[i][j];
                          c += (tablica[i][j]);
                          if(j==0)
                             continue;
                          cout << endl<< "Suma wartosci kolumn wynosi: " << c <<"
";
                          }
                 cout << endl << endl;
                 cout << "Dzielnik (liczba wartosci kolumn) dla sredniej z wiersza "<<i<<""
                         " wynosi j="<<j<<"

";
                 srednia[i]=c/j;}
        cout << endl;
        cout << "Dla ktorego wiersza chcesz sprawdzic srednia arytmetyczna? 
"
                "Podaj i=";
        cin >> i;
        cout << endl;
        cout << "Srednia arytmetyczna dla wiersza "<<i<<" w tablicy TABLICA2D wynosi: ";
        cout << srednia[i]<<"
";
        cout << "Srednia podana zostala jako wynik dzielenia calkowitych czesci
";
        cout << "podanych wartosci.";
        cout << endl;

    getch();
}
Kod jest tak krótki, że nie ma tu bradzo co upraszczać. c = tablica[j]+c można zapisać tak c += (tablica[j]) i taki zapis się częściej stosuje (choć Twój też jest dobry). Zamiast:

Kod: Zaznacz cały

cout << "podanych wartosci.";
        cout << endl;
Lepiej napisać wszystko w jendnej linii, bo jest to czytelniejsze:

Kod: Zaznacz cały

cout << "podanych wartosci."<< endl;
Xitami

[C++] średnia arytmetyczna i tablica dwuwymiarowa - sugestie

Post autor: Xitami »

jeżeli liczysz na bieżąco, to na grzyba ci potrzebna tablica[][] ?
iksigrek123
Użytkownik
Użytkownik
Posty: 12
Rejestracja: 30 sie 2011, o 19:08
Płeć: Mężczyzna
Lokalizacja: ŁDZ

[C++] średnia arytmetyczna i tablica dwuwymiarowa - sugestie

Post autor: iksigrek123 »

Kod jest tak krótki, że nie ma tu bradzo co upraszczać. c = tablica[j]+c można zapisać tak c += (tablica[j]) i taki zapis się częściej stosuje (choć Twój też jest dobry). Zamiast:

Kod: Zaznacz cały

cout << "podanych wartosci.";
        cout << endl;
Lepiej napisać wszystko w jendnej linii, bo jest to czytelniejsze:

Kod: Zaznacz cały

cout << "podanych wartosci."<< endl;
[/quote]
------------------------------------------------
ok. dokładnie o to mi chodziło. jedna kolumna jest wtedy pomijana.
thx
Xitami

[C++] średnia arytmetyczna i tablica dwuwymiarowa - sugestie

Post autor: Xitami »

srednia = c/j
wszystko typu int
czyli nie będzie to średnia, a część całkowita średniej!!!
ODPOWIEDZ