| 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)
 
 [/b] 	  | 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;
 }
 
 | 
 |  | 
	
		| 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 |  | 
	
		|  | 
	   
	
		|  |