Co mam zle w tym programie

0

Witam!

Chcialbym sie dowiedziec, czemu wyswietla mi macierz 0 + 0 a nie o normalnych elementach. gdzies zrobilem glupi blad a niewiem gdzie


#include <iostream>
#include <math.h>
using namespace std;

const int mmax = 100;
const int nmax = 100;

struct zespolona
{
	float re,im;
};

void wczytaj_macierz (int wiersze, int kolumny, zespolona macierz[][nmax])
{
	int i,j;
	
	for(i=0;i<wiersze;i++)
	for(j=0;j<kolumny; j++)
	{
		cout << "Podaj element ["<< i+1 << "][" << j+1 << "]:" << endl;
		cout << "Podaj Re:" << endl;
		cin >> macierz[i][j].re;
		cout << "Podaj Im:" << endl;
		cin >> macierz[i][j].im;
	}
}

void wypisz_macierz (int wiersze, int kolumny, zespolona macierz[][nmax])
{
		
	int i,j;
	
	for(i=0;i<wiersze;i++)
	{for(j=0;j<kolumny;j++);
		cout << macierz[i][j].re << " + " << macierz[i][j].im << "  ";
		cout << endl;
	}
	
}

float modul_wiersza (int rozmiar, zespolona wektor[])
{
	float suma;
	suma = 0;
	
	int i;
	
	for(i=0;i<rozmiar;i++)
	{
		
		suma = suma + sqrt(wektor[i].re * wektor[i].re + wektor[i].im * wektor[i].im);
		
	}
	
	return suma;
}


void srednie (int rozmiar, float *rzeczywiste, float & urojone, zespolona wektor[])
{
	
	int i;
	int ilosc = 0;
	
	for(i=0;i<rozmiar;i++)
	{
		*rzeczywiste = *rzeczywiste + wektor[i].re;
		urojone = urojone + wektor[i].im;
	}
	
	*rzeczywiste = *rzeczywiste/ilosc;
	urojone = urojone/ilosc;
	
	
}

int main()
{
zespolona A[mmax][nmax];
int m,n;
cout<<"podaj wiersze"<<endl;
cin>>m;
cout<<"podaj kolumny"<<endl;
cin>>n;

if(m<=mmax&&n<=nmax&&m>0&&n>0)
{
	cout<<"macierzA"<<endl<<endl;
	wczytaj_macierz(m,n,A);
	cout<<"twoja macierz ma postac"<<endl;
	wypisz_macierz(m,n,A);
	
	zespolona B[nmax];
	int i;
	for(i=0;i<m;i++)
	{B[i]=A[i][n-2];}
	float suma2=0;
	suma2=modul_wiersza(m,B);
	cout<<"Suma modulu przedostatniej kolumny macierzy A ="<<endl;
	cout<<suma2;
	
	float sumare = 0;
	float sumaim = 0;
	
	srednie(n,&sumare,sumaim,A[1]);
	cout<<"srednia liczb rzeczywistych 2 wiersza macierzy"<<endl;
	cout<<sumare;
	cout<<"srednia liczb urojonych 2 wiersza macierzy"<<endl;
	cout<<sumaim;
	
}
else
cout<<"podano zly rozmiar macierzy"<<endl;
return 0;
}



0

W Twoim kodzie jest jeden średnik za dużo :P dokładnie w pętli która wyświetla elementy tablicy

0

no wiedzialem, ze jakas [CIACH!] sie wdarła :D

a co mam źle, ze nie dzialaja dwie ostatnie funckje? w sensie srednia re i srednia im? :D

0
void srednie (int rozmiar, float *rzeczywiste, float & urojone, zespolona wektor[])
{
 
        int i;
        int ilosc = 0;
 
        for(i=0;i<rozmiar;i++)
        {
                *rzeczywiste = *rzeczywiste + wektor[i].re;
                urojone = urojone + wektor[i].im;
        }
 
        *rzeczywiste = *rzeczywiste/ilosc;
        urojone = urojone/ilosc;
 
 
}

ilosc jest zawsze równe zero, więc masz dzielenie przez zero.

1 użytkowników online, w tym zalogowanych: 0, gości: 1