Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Giwer
Sado-Elektro - wiecie gdzie ma lutownice
Dołączył: 17 Paź 2006
Posty: 540
Przeczytał: 0 tematów
Skąd: Rybnik
|
Wysłany: Pon 20:49, 12 Mar 2007 Temat postu: Macierze - mnożenie i dodawanie - macie i sie cieszcie |
|
|
Kod na dodawanie i mnożenie macierzy (+transpozycja) (mnozenie tylko na macierzach tylesamo wymiarowych, kwadratowych, nie wiem czy działa na innych - nie chcialo mi się już sprawdzać. Program robiony do tablic 3x3. Wszedzie w pętlach i deklaracjach tablic zmieniacie wartości dla innej wielkości tablic).
Najpierw należy podać wartości do 2. tablic 3x3, program potem je wyświetla, wyświetla ich sume i ich mnożenie, jak coś jeszcze napisze ciekawego to zEdytkuje
EDIT: Dodana transpozycja
(pisane w dev)
Kod: | #include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, k, w=0, tab[3][3], tab2[3][3], tab3[3][3];
for (i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("\n Podaj wartosc do komorki TAB[%d][%d] ",i,j);
scanf("%d",&tab[i][j]);
}
}
for (i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("\n Podaj wartosc do komorki TAB2[%d][%d] ",i,j);
scanf("%d",&tab2[i][j]);
}
}
for (i=0;i<3;i++)
{
printf("\n");
for(j=0;j<3;j++)
{
printf(" %d ",tab[i][j] );
}
}
printf("\n\n\n");
for (i=0;i<3;i++)
{
printf("\n");
for(j=0;j<3;j++)
{
printf(" %d ",tab2[i][j] );
}
}
// ==SUMOWANIE MACIERZY==
printf("\n\n suma:");
for (i=0; i<3;i++)
{
printf("\n");
for(j=0; j<3; j++)
{
w=tab[i][j]+tab2[i][j];
printf(" %d ",w);
}
}
// ==MNOZENIE MACIERZY==
printf("\n\n TAB*TAB2=TAB3: \n");
for (k=0; k<3; k++)
{
for (i=0; i<3; i++)
{
w=0;
for (j=0; j<3; j++)
{
w=w+tab[k][j]*tab2[j][i];
}
tab3[k][i]=w;
}
}
for (i=0;i<3;i++)
{
printf("\n");
for(j=0;j<3;j++)
{
printf(" %d ",tab3[i][j] );
}
}
// ==TRANSPOZYCJA==
printf("\n\n Transpozycja pierwszej tablicy");
for (i=0; i<3; i++)
{
printf("\n");
for (j=i+1; j<3; j++)
{
w=tab[i][j];
tab[i][j]=tab[j][i];
tab[j][i]=w;
}
}
for (i=0;i<3;i++)
{
printf("\n");
for(j=0;j<3;j++)
{
printf(" %d ",tab[i][j] );
}
}
getchar();
getchar();
return 0;
}
| [/b]
|
|
Powrót do góry |
|
 |
|
 |
misio666
Tłuste zero
Dołączył: 07 Mar 2007
Posty: 45
Przeczytał: 0 tematów
Skąd: Bielsko/E5
|
Wysłany: Pon 21:31, 12 Mar 2007 Temat postu: |
|
|
A wie kto może jak zrobić na macierzach ten przykład co go podali na instrukcjach.. Przykład 2b) chodzi o zrobienie macierzy która po prinft będzie wyglądała mniej więcej tak:
1 1 1 1 1 1 1
1 0 0 0 0 0 1
1 0 1 1 1 0 1
1 0 1 0 1 0 1
1 0 1 1 1 0 1
1 0 0 0 0 0 1
1 1 1 1 1 1 1
Gupie to jest...
|
|
Powrót do góry |
|
 |
Giwer
Sado-Elektro - wiecie gdzie ma lutownice
Dołączył: 17 Paź 2006
Posty: 540
Przeczytał: 0 tematów
Skąd: Rybnik
|
Wysłany: Pon 21:37, 12 Mar 2007 Temat postu: |
|
|
Nie widzę innej możliwości jak dać
if ((i=0) lub (j=0) lub (i=2) lub (j=2) lub( i=4) lub(l=4) lub(i=6) lub(l=6))
tab[i][j]=1
else tab[j][i]=0
a "lub" nie pamiętam jak było, jakieś || czy coś w ten deseń
EDIT: ew. uniwersalnie zrobić na parzystą/nieparzystą (+0). Jak sprawdzić warunek parzystości to już chyba wpadniesz
|
|
Powrót do góry |
|
 |
misio666
Tłuste zero
Dołączył: 07 Mar 2007
Posty: 45
Przeczytał: 0 tematów
Skąd: Bielsko/E5
|
Wysłany: Pon 21:45, 12 Mar 2007 Temat postu: |
|
|
Mhm.. Na pewno to trzeba zrobić z parzystością i nieparzystością, ale chyba nie do końca tak jak piszesz.. Po prostu nie mogę wpaść jak ten warunek do ifa szczelić żeby działało.. Wrrrrr...
|
|
Powrót do góry |
|
 |
gorush
Sado-Elektro - wiecie gdzie ma lutownice
Dołączył: 12 Paź 2006
Posty: 644
Przeczytał: 0 tematów
Skąd: Żory/RE
|
Wysłany: Pon 22:11, 12 Mar 2007 Temat postu: |
|
|
dzieki ;D
|
|
Powrót do góry |
|
 |
Ice
ELEKTRONIK - on już ciągnie druty
Dołączył: 03 Lis 2006
Posty: 301
Przeczytał: 0 tematów
Skąd: Świętochłowice
|
Wysłany: Pon 23:18, 12 Mar 2007 Temat postu: |
|
|
Chcialem tylko napisac ze jezeli chcemy tylko wypisac te transpozycje to po zdefiniowaniu macierzy wystarczy ze wypiszemy to tak ( w przypadku tego przykładu):
for (i=0;i<3;i++)
{
printf("\n");
for(j=0;j<3;j++)
{
printf(" %d ",tab[j][i] );
}
}
zamienimy i z j ;]
|
|
Powrót do góry |
|
 |
Giwer
Sado-Elektro - wiecie gdzie ma lutownice
Dołączył: 17 Paź 2006
Posty: 540
Przeczytał: 0 tematów
Skąd: Rybnik
|
Wysłany: Pon 23:26, 12 Mar 2007 Temat postu: |
|
|
Jak najbardziej, do WYPISANIA to wystarczy
Co do zad 3b jednak jest to jakaś trudniejsza zależność nie potrafię wpaść jaka :/
|
|
Powrót do góry |
|
 |
gradzik
Tłuste zero
Dołączył: 09 Paź 2006
Posty: 69
Przeczytał: 0 tematów
Skąd: Cieszyn
|
Wysłany: Wto 17:31, 13 Mar 2007 Temat postu: |
|
|
misio666 napisał: | A wie kto może jak zrobić na macierzach ten przykład co go podali na instrukcjach.. Przykład 2b) chodzi o zrobienie macierzy która po prinft będzie wyglądała mniej więcej tak:
1 1 1 1 1 1 1
1 0 0 0 0 0 1
1 0 1 1 1 0 1
1 0 1 0 1 0 1
1 0 1 1 1 0 1
1 0 0 0 0 0 1
1 1 1 1 1 1 1
Gupie to jest... |
ja do tego wymyśliłem coś takiego
for(b=0;b<(a/2)+1;b++)
{
if(i%2==0&&i==j)
{
for(i=0;i<(a-2*b);i++)
for(j=0;j<(a-2*b);j++)
tab[i+b][j+b]=1;
}
else
{
for(i=0;i<(a-2*b);i++)
for(j=0;j<(a-2*b);j++)
tab[i+b][j+b]=0;
}
i=b+1,j=b+1;
}
tablica to tab[a][a], mozna wpisać z klawiatury
pewnie da się to zrobić krócej, ale nie chciało mi się już kombinować
|
|
Powrót do góry |
|
 |
GrzeKrass
ELEKTRONIK - on już ciągnie druty
Dołączył: 22 Paź 2006
Posty: 426
Przeczytał: 0 tematów
Skąd: Żory
|
Wysłany: Wto 21:13, 13 Mar 2007 Temat postu: |
|
|
misio666 napisał: | A wie kto może jak zrobić na macierzach ten przykład co go podali na instrukcjach.. Przykład 2b) chodzi o zrobienie macierzy która po prinft będzie wyglądała mniej więcej tak:
1 1 1 1 1 1 1
1 0 0 0 0 0 1
1 0 1 1 1 0 1
1 0 1 0 1 0 1
1 0 1 1 1 0 1
1 0 0 0 0 0 1
1 1 1 1 1 1 1
Gupie to jest... |
#include <stdio.h>
#define N 13
int main()
{
int tab4 [N][N],i,j,k;
for(k=0;k<N;k++)
for(i=k;i<N-k;i++)
for(j=k;j<N-k;j++)
tab4[i][j]=(k+1)%2;
for (i=0;i<N;i++)
{
for (j=0;j<N;j++)
{
printf("%d ",tab4[i][j]);
}
printf("\n");
}
getchar();
return 0;
}
kolega wymyślił ... i twierdzi, że jest za długie )
|
|
Powrót do góry |
|
 |
|