Rachunek macierzy w C iloczyn dodatnich współrzędnych

beatka-k16
Użytkownik
Użytkownik
Posty: 73
Rejestracja: 24 sie 2007, o 10:20
Płeć: Kobieta
Lokalizacja: Kraków
Podziękował: 30 razy

Rachunek macierzy w C iloczyn dodatnich współrzędnych

Post autor: beatka-k16 »

1. Należy napisać funkcję, której argumentem jest n-elementowy wektor o współrzędnych rzeczywistych typu double i w której należy obliczyć iloczyn jego dodatnich współrzędnych.
2. Należy napisać funkcję, której argumentem jest mxn-elementowa tablica o elementach rzeczywistych typu double i w której należy obliczyć iloczyn jego dodatnich elementów.
3. Program musi zawierać:
-Czytanie macierzy A o wymiarach mxn o elementach rzeczywistych typu double.
-Przedruk wierszami elementów macierzy.
-Wywołanie funkcji dla każdego wiersza macierzy A
-Utworzenie wektora z otrzymanych wyników
-Wywołanie funkcji dla każdej kolumny macierzy A
-Utworzenie wektora z otrzymanych wyników
-Wywołanie funkcji dla obliczeń w całej macierzy A
-Wszystkie wyniki należy wyprowadzić na ekran i do zbioru.

Wie ktoś jak się za to zabrać ?
Poniżej zamieszczam podobny programik, może pomoże ... Z góry dzięki.

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int funkcja1(double* tablica, int numer_wiersza, int n)
{ int i;
int sum = 0;

for(i=0;i<n;++i){
if(tablica[numer_wiersza*n+i]<=1 && tablica[numer_wiersza*n+i]>=0){++sum;}
}
return sum;}

int funkcja2(double* tablica, int wiersze, int kolumny)
{ int i=0,j=0;
int sum = 0;

for(i=0;i<kolumny*wiersze;++i){
if(tablica<=1 && tablica>=0){++sum;}
}
return sum;}


int main()
{
int h=0,i=0;
int a,b;
int wiersz=0,kolumna=0;

printf("podaj liczbe wierszy macierzy A\n");
scanf("%d",&wiersz);
printf("podaj liczbe kolumn macierzy A\n");
scanf("%d",&kolumna);


double *tablica, *trans;
tablica=(double*)malloc(wiersz*kolumna*sizeof*tablica);
trans=(double*)malloc(wiersz*kolumna*sizeof*trans);

int *wek_w,*wek_k;
wek_w=(int*)malloc(wiersz*sizeof*wek_w);
wek_k=(int*)malloc(kolumna*sizeof*wek_k);

for (a=0; a<wiersz;a++)
{
for (b=0; b<kolumna; b++)
{
printf("wyraz macierzy A[%d][%d]=\t", a+1,b+1);
scanf("%lf", &tablica[a*kolumna+b]);
trans[a+wiersz*b]=tablica[a*kolumna+b];
}
}

for (a=0; a<wiersz;a++)
{
printf("\n");
for (b=0; b<kolumna; b++)
{
printf("|%8.3lf ", tablica[a*kolumna+b]);

}
printf("|");
}

printf("\n\nwektor wierszy = ( ");
for(i=0;i<wiersz;i++){wek_w=funkcja1(tablica,i,kolumna);}
for(i=0;i<wiersz;i++)
if(i<wiersz-1){printf("%d, ", *(wek_w+i));}
else{printf("%d)", *(wek_w+i));}
printf("\nwektor kolumn = ( ");
for(i=0;i<kolumna;i++){wek_k=funkcja1(trans,i,wiersz);}
for(i=0;i<kolumna;i++)
if(i<kolumna-1){printf("%d, ", *(wek_k+i));}
else{printf("%d)", *(wek_k+i));}
int x=funkcja2(tablica,wiersz,kolumna);
printf("\n\nilosc wyrazow z przedzialu <0,1> w macierzy A = %d\n\n", x);
printf("\nProgram zgral wyniki do pliku zadanie.txt\n\nAutor: \n\n");


FILE *f;
f=fopen("zadanie.txt", "w");

fprintf(f, "Ilosc wyrazow macierzy A nalezacych do przedzialu <0,1> = %d\n\n",x);
fprintf(f, "wektor utworzony z wierszy = (");
for(i=0;i<wiersz;i++)
if(i<wiersz-1){fprintf(f,"%d, ", *(wek_w+i));}
else{fprintf(f,"%d)", *(wek_w+i));}
fprintf(f, "\nwektor utworzony z kolumn = (");
for(i=0;i<kolumna;i++)
if(i<kolumna-1){fprintf(f,"%d, ", *(wek_k+i));}
else{fprintf(f,"%d)", *(wek_k+i));}
fclose(f);

system("pause");
return 0;

1. napisać funkcję, która dla n'elementowego wektora o współrzędnych typu DOUBLE liczy ilość jego współrzędnych mieszczących się w przedziale <0,1>
2. napisać funkcję, która dla n*m'elementowej macierzy o wyrazach typu DOUBLE liczy ilość jego wyrazów mieszczących się w przedziale <0,1>
3. napisać program który:

* czyta macierz A rozmiaru m*n o wyrazach Double
* przedrukowywuje wierszami elementy macierzy
* wywołuje funkcję 1) dla każdego wiersza macierzy
* tworzy wektor z otrzymanych w poprzednim punkcie wyników
* wywołuje funkcję 1) dla każdej kolumny macierzy
* tworzy wektor z otrzymanych w poprzednim punkcie wyników
* wywołuje funkcję 2) dla całej macierzy A
* wyniki wyświetla na ekranie i zapisuje w osobnym pliku
ODPOWIEDZ