[C++] Matrica kao argument funkcije

poruka: 8
|
čitano: 11.465
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
offline
[C++] Matrica kao argument funkcije

Evo ovako.. Imam zadatak da izracunam jutarnju prosječnu temp, popodnevnu i večernju....
Temperature se nalaze u matrici koja ima 3 stupca za svako doba dana(jutro, podne, veče), i 7 redova za svaki dan.
Napravio sam upis i ispis svih temp samo me jos muci racunanje prosjeka, tj. imam funkciju koja računa prosjek ali ona neradi kako bi trebala, jer verovatno nesto neradim dobro..

Funkcija izgleda ovako:

float prosjek(float m[][3], int stupac){
      float ukupno = 0;
      for(int i = 0; i  < 7;i++){
      ukupno += m[i][stupac];
      }
      return (ukupno/7);
}

 

Funkciju pozivam ovako:


float temperature [7][3];

//tu popunjavam temparature za svaki dan ali da nekopiram bzvz

float srednja_jutarnja = prosjek(temperature, 0);
float srednja_popodnevna = prosjek(temperature, 1);
float srednja_vecernja = prosjek(temperature, 2);

 

Naravno ima koda jos izmedju temperature i racunanje srednje vrijednosti, ali da nekopiram bzvz zato sto to sve radi kako treba.....

I kada mi ispisuje srednju vrijednost temp dobijem uvijek nesto bzvz kao npr:

 

Srednja vrijednost jutarnje temp:  3.3702e+032

ili

Srednja vrijednost popodnevne temp:  -1.#QNAN

Da li neko zna da li je to do prosljeđivanja matrice funkciji ili do cega, i ako zna kako to ispraviti...

 

P.S. radim u dev c++...

Poruka je uređivana zadnji put ned 19.9.2010 13:59 (slobo14).
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
[C++] Matrica kao argument funkcije

#include <iostream>
#include <stack>
#include <string>
#include <cstdio>
using namespace std;

double prosjek(double mat[7][3],int x)
{
    double uk(0);

    for(int i=0 ; i<7 ;i++)
       uk+=mat[i][x];

    return(uk/7);
}





          int main()
    {
       double temperature[7][3];

          for(int i=0 ; i<7 ; i++)
             for(int j=0 ; j<3 ; j++) cin>>temperature[i][j];

          double jutro,podne,vecer;

          jutro=prosjek(temperature,0);
          podne=prosjek(temperature,1);
          vecer=prosjek(temperature,2);


          cout<<jutro<<endl<<podne<<endl<<vecer<<endl;


system("PAUSE");
return 0;
}

 

Ovo meni normalno radi....Makar bih ja rade matricu temperature inicijalizirao globalno pa bi funkcija prosjek imala samo argument stupca...

optimizam je nedostatak informacija
Moj PC  
0 0 hvala 0
14 godina
offline
RE: [C++] Matrica kao argument funkcije

I meni radi taj tvoj primjer, i sa float i sa double... ali u ovome mom programu neradi ni sa jednim ni sa drugim
Evo tu je source code mog programa pa ga probaj kompajlirat i pokrenuti da vidis sta tu neradi
Link

16 godina
neaktivan
offline
[C++] Matrica kao argument funkcije

Malo si kod unosa i ispisa pobrkao polja, sredi malo ispis kod ovog koda dolje, inače radi točno sada:

 

 

#include <iostream>
#include <string>
#include <iomanip>
#include <time.h>
#define stupci 3
#define redovi 7
using namespace std;

float prosjek(float m[7][3], int red){
      float ukupno = 0;
      for(int i = 0; i  < 7;i++){
      ukupno += m[i][red-1];
      }
      return (ukupno/7.0);
}

int main(){
   
    system("color 3f");
    setlocale(LC_ALL ,"Croatian");
   
    float temperature [7][3];
   
    string dani[7]={"Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota", "Nedelja"};
    string dani_skraceno[7]={"Pon", "Uto", "Sre", "Čet", "Pet", "Sub", "Ned"};
    string doba_dana[3]={"Jutarnja temp [°C]", "Popodnevna temp [°C]", "Večernja temp [°C]"};
   
    for(int red = 0; red < redovi;red++){
            cout << dani[red] << endl;
    for(int stupac = 0; stupac < stupci; stupac++){
            cout << doba_dana[stupac] << ": ";
            cin >> temperature[red][stupac];
                    }
            cout << endl;
            }
           
            //resi prosek
            float srednja_jutarnja = prosjek(temperature, 1);
            float srednja_popodnevna = prosjek(temperature, 2);
            float srednja_vecernja = prosjek(temperature, 3);
           
    cout << "                   ";
            for(int i=0; i<3; i++)
             cout<< doba_dana[i] << "   ";
          cout<< endl;
          for(int i=0; i<redovi; i++) {
             cout<< dani_skraceno[i] << "  ";
             for(int j=0; j<stupci; j++)
                cout<< temperature[i][j] << " ";
             cout<< endl;
          }

           
   
    cout << endl;
    cout << "Srednja vrednost jutarnje temperature je : " << srednja_jutarnja  << endl;
    cout << "Srednja vrednost popodnevne temperature je : " << srednja_popodnevna  << endl;
    cout << "Srednja vrednost vecernje temperature je : " << srednja_vecernja  << endl;
   
    system("PAUSE");
    return 0;
}

 
0 0 hvala 0
13 godina
neaktivan
offline
[C++] Matrica kao argument funkcije

#define stupci 7
#define redovi 3

Swap :P

Cool

 

//Rađ umjesto tih definova jednostavno piši broj ovako se samo zbuniš =D

 

optimizam je nedostatak informacija
Poruka je uređivana zadnji put ned 19.9.2010 16:30 (Pijavica).
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
[C++] Matrica kao argument funkcije

Međutim, pretpostavljam da ti hoćeš dobiti radi praktičnosti razičit način upisa i ispisa matrice jer naravno da je logično da se temperature upisuju po danima, a da se ispis vrši na način da se dani

ispisuju po stupcima, a temperature po recima.

To možeš postići na sljedeći način:

Na ovaj način ćeš npr. utorak jutarnja temperatura koju si vrijednost upisao četvrtu po redu ispisati u stvari drugu po redu - temperatura[1][0]

 

#include<iostream>
using namespace std;
#define red 3
#define stupac 2
int main()
{
    int mat[red][stupac], i, j;
    for(i=0; i<red; i++)
       for(j=0; j<stupac; j++)
          cin>> mat[i][j];

    //Ispis matrice kako je unesena - tri reda i dva stupca
    for(i=0; i<red; i++) {
       for(j=0; j<stupac; j++)
          cout<< mat[i][j] << " ";
       cout<< endl;
    }

    //Ispis iste matrice u dva reda i tri stupca
    for(j=0; j<stupac; j++) {
       for(i=0; i<red; i++)
          cout<< mat[i][j] << " ";
       cout<< endl;
    }
   
         



}

Poruka je uređivana zadnji put ned 19.9.2010 17:41 (Floki).
 
1 0 hvala 0
10 godina
neaktivan
offline
[C++] Matrica kao argument funkcije

Jel mi moze neko uraditi sledeci zadatak molim Vas, (ako moze sve, pod a,b,c,d)

 

Napisati funkcije kojim se za matricu A(NxN) (N<10) izracunava

a) suma svih elemenata;

b) suma dijagonalnih elemenata, tj. suma elemenata sa jednakim indeksima;

c) vrijednost najveceg elementa na sporednoj dijagonali;

d) suma negativnih elemenata matrice.

 
0 1 hvala 0
11 godina
neaktivan
offline
Re: [C++] Matrica kao argument funkcije
djolemarkovic kaže...

Jel mi moze neko uraditi sledeci zadatak molim Vas, (ako moze sve, pod a,b,c,d)

 

Napisati funkcije kojim se za matricu A(NxN) (N<10) izracunava

a) suma svih elemenata;

b) suma dijagonalnih elemenata, tj. suma elemenata sa jednakim indeksima;

c) vrijednost najveceg elementa na sporednoj dijagonali;

d) suma negativnih elemenata matrice.

Ovo nije forum za rješavanje školskih zadaća, probaj sam riješit, a javi se ako zapneš negdje.
Hint:
Zadatak je jednostavan, napravi si dvije petlje (jedna unutar druge) koje idu do N kako bi prolazio kroz svaki element, i zbrajaj sve vrijednosti elemenata, elementi s jednakim indeksima su ti na dijagonali. 

Be the best or die like the rest
Poruka je uređivana zadnji put sri 22.5.2013 19:00 (Lemirent).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice