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");
}
}
}
}
}
Program na macierzach
Re: Program na macierzach
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
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
Re: Program na macierzach
A co ma oznaczac to j,i i dlaczego na samym koncu pojawia sie k (przy mnozeniu macierzy) ?