Program na macierzach

Programowanie w języku C i językach pochodnych, jak C++, C#
anka0501
Posty: 2
Rejestracja: 22 sty 2011, 16:39

Program na macierzach

Post autor: anka0501 » 22 sty 2011, 17:06

Witam, jestem nowa w programowaniu i niezbyt sie znam, dlatego zwracam sie o pomoc, prosze o wytlumaczenie mi pare procedur, co ozn po co sa i dlaczego akurat tak. Mam tu program, to przy czym widnieje znaczek W, prosze o szczegolne wytlumaczenie. Oto ten program:
#include <stdio.h>
#include <conio.h> (W)
#define N 10 (W)

int main()
{
int wybor;
while(wybor!=6) (W)
{
printf("Dzialania:\n1-dodawanie macierzy\n2-odejmowanie macierzy\n3-mnozenie macierzy przez skalar\n4-mnozenie macierzy\n5-macierz transponowana\n6-zakoncz\nWybor: ");
scanf("%d",&wybor);

if(wybor==1)
{
int n,a[N][N],b[N][N],c[N][N]; (W)

printf("podaj n:\n");
scanf("%d",&n);

if(n<N+1) (W)
{
for(int j=0;j<n;j=j+1) (W)
for(int i=0;i<n;i=i+1) (W)
{
printf("podaj liczbe [%d, %d] dla pierwszej macierzy:\n",i,j); (W)
scanf("%d",&a[j]);
}

for(int j=0;j<n;j=j+1)
for(int i=0;i<n;i=i+1)
{
printf("podaj liczbe [%d, %d] dla drugiej macierzy:\n",i,j);
scanf("%d",&b[j]);
}

for(int j=0;j<n;j=j+1)
for(int i=0;i<n;i=i+1)
{
c[j]=a[j]+b[j];
}

printf("oto wynik:\n");
for(int j=0;j<n;j=j+1)
{
for(int i=0;i<n;i=i+1)
printf("%d\t",c[j]);
printf("\n");
}
}
}
else if(wybor==2)
{
int n,a[N][N],b[N][N],c[N][N];

printf("podaj n:\n");
scanf("%d",&n);

if(n<N+1)
{
for(int j=0;j<n;j=j+1)
for(int i=0;i<n;i=i+1)
{
printf("podaj liczbe [%d, %d] dla pierwszej macierzy:\n",i,j);
scanf("%d",&a[j]);
}

for(int j=0;j<n;j=j+1)
for(int i=0;i<n;i=i+1)
{
printf("podaj liczbe [%d, %d] dla drugiej macierzy:\n",i,j);
scanf("%d",&b[j]);
}

for(int j=0;j<n;j=j+1)
for(int i=0;i<n;i=i+1)
{
c[j]=a[j]-b[i][j];
}

printf("oto wynik:\n");
for(int j=0;j<n;j=j+1)
{
for(int i=0;i<n;i=i+1)
printf("%d\t",c[i][j]);
printf("\n");
}
}
}
else if(wybor==3)
{
int n,s,a[N][N];

printf("podaj n:\n");
scanf("%d",&n);
printf("podaj s:\n");
scanf("%d",&s);

if(n<N+1)
{
for(int j=0;j<n;j=j+1)
for(int i=0;i<n;i=i+1)
{
printf("podaj liczbe [%d, %d] dla macierzy:\n",i,j);
scanf("%d",&a[i][j]);
}

for(int j=0;j<n;j=j+1)
for(int i=0;i<n;i=i+1)
{
a[i][j]=a[i][j]*s;
}

printf("oto wynik:\n");
for(int j=0;j<n;j=j+1)
{
for(int i=0;i<n;i=i+1)
printf("%d\t",a[i][j]);
printf("\n");
}
}
}
else if(wybor==4)
{
int n,a[N][N],b[N][N],c[N][N];

printf("podaj n:\n");
scanf("%d",&n);

if(n<N+1)
{
for(int j=0;j<n;j=j+1)
for(int i=0;i<n;i=i+1)
{
printf("podaj liczbe [%d, %d] dla pierwszej macierzy:\n",i,j);
scanf("%d",&a[i][j]);
}

for(int j=0;j<n;j=j+1)
for(int i=0;i<n;i=i+1)
{
printf("podaj liczbe [%d, %d] dla drugiej macierzy:\n",i,j);
scanf("%d",&b[i][j]);
}

for(int j=0;j<n;j=j+1)
for(int i=0;i<n;i=i+1)
{
c[i][j]=0; (W)
for(int k=0;k<n;k=k+1) (W)
c[i][j]=c[i][j]+(a[k][j]*b[i][k]); (W)
}

printf("oto wynik:\n");
for(int j=0;j<n;j=j+1)
{
for(int i=0;i<n;i=i+1)
printf("%d\t",c[i][j]);
printf("\n");
}
}
}
else if(wybor==5)
{
int n,a[N][N],b[N][N];

printf("podaj n:\n");
scanf("%d",&n);

if(n<N+1)
{
for(int j=0;j<n;j=j+1) (W)
for(int i=0;i<n;i=i+1) (W)
{
printf("podaj liczbe [%d, %d] dla macierzy:\n",i,j);
scanf("%d",&a[i][j]);
}
for(int j=0;j<n;j=j+1) (W)
for(int i=0;i<n;i=i+1) (W)
{
b[j][i]=a[i][j]; (W)
}
printf("oto wynik:\n");
for(int j=0;j<n;j=j+1)
{
for(int i=0;i<n;i=i+1)
printf("%d\t",b[i][j]);
printf("\n");
}
}
}
}
}

kikoks
Posty: 11
Rejestracja: 20 sty 2011, 14:38

Re: Program na macierzach

Post autor: kikoks » 22 sty 2011, 20:13

while(wybor!=6) (W) oznacza to że pętla while zacznie się gdy wybor będzie inny niż 6. Czyli zacznie się gdy wpiszemy byle jaką liczbę, oprócz 6

for(int j=0;j<n;j=j+1) (W) tu jest tak samo z każdym for. Pętla następuje dla j równemu 0, j mniejszego od n i j równego j+1. Ja to tak zawsze rozumiem ;]

int n,a[N][N],b[N][N],c[N][N]; (W) w tym i temu podobnym, rozumiem tylko że występują tu liczby całkowite (int) n, a, b i c. Nie wiem co znaczą te [] :p

anka0501
Posty: 2
Rejestracja: 22 sty 2011, 16:39

Re: Program na macierzach

Post autor: anka0501 » 22 sty 2011, 20:54

A co ma oznaczac to j,i i dlaczego na samym koncu pojawia sie k (przy mnozeniu macierzy) ?

ODPOWIEDZ