Skocz do zawartości


Zdjęcie

Program [c] liczący macierze


  • Zaloguj się, aby dodać odpowiedź
3 odpowiedzi w tym temacie

#1 lightinside

lightinside

    Początkujący

  • 44 postów

Napisano 07 12 2012 - 16:30

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

int main()
{int z;

printf("jeśli chcesz wyliczyć wyznacznik 2x2 wcisnij 1 dodac macoerze 2 wyliczyc macierz jednostkowa 3");
scanf("%d",&z);
  switch(z)
  {
    case 1:
       { 
int a,b,c,d,e;
        printf("podaj kolejno a,b,c,d\n");
        scanf("%d%d%d%d",&a,&b,&c,&d);
        e=a*d-c*b;
        printf("wyznacznik macierzy jest równy:%d",e);
break;
}


        case 2 :
           { int serduszko[2][2];

             int a, b, c, d, e, f, g,  h, i, j, k, l, m, n, o, p;
             printf("podaj po koleji a,b,c,d pierwszej macierzy");
             scanf("%d%d%d%d",&a,&b,&c,&d);

             printf("podaj po koleji a,b,c,d pierwszej macierzy");
             scanf("%d%d%d%d",&e,&f,&g,&h);
             i=a+e;
             j=b+f;
             k=c+g;
             l=d+h;

         serduszko[0][0]=i;
         serduszko[1][0]=j;
         serduszko[0][1]=k;
         serduszko[1][0]=l;
printf("\niloczyn tych dwóch macierzy  wynosi:\t%s\t%s\t%s\t%s",  serduszko[0][0], serduszko[1][0], serduszko[0][1], serduszko[1][0]);
break;
        }
         /*printf("%d\t%d\n%d\t%d\n",i,j,k,l);}
         break; */  

  system("PAUSE");   
  return 0;
}}


program dobrze liczy obie opcje ale jak w drugim przerzuciłam się na tablice to nie chcę mi wynik wyjść, pomoze ktoś?

  • 0

#2 fernandez

fernandez

    150% normy

  • 1 866 postów

Napisano 08 12 2012 - 18:22

tak na szybko

chyba tutja masz błąd:
serduszko[1][0]=l;
printf("\niloczyn tych dwóch macierzy  wynosi:\t%s\t%s\t%s\t%s",  serduszko[0][0], serduszko[1][0], serduszko[0][1], serduszko[1][0]);

a powinno chyba byc:
serduszko[1][1]=l;
printf("\niloczyn tych dwóch macierzy  wynosi:\t%s\t%s\t%s\t%s",  serduszko[0][0], serduszko[1][0], serduszko[0][1], serduszko[1][1]);


  • 0

#3 lightinside

lightinside

    Początkujący

  • 44 postów

Napisano 31 12 2012 - 13:43

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

int main()
{int z;

printf("jeśli chcesz wyliczyć wyznacznik 2x2 wcisnij 1 dodac macoerze 2 wyliczyc macierz jednostkowa 3");
scanf("%d",&z);
switch(z)
{
	 case 1:
		 {
int a,b,c,d,e;
			 printf("podaj kolejno a,b,c,d\n");
			 scanf("%d%d%d%d",&a,&b,&c,&d);
			 e=a*d-c*b;
			 printf("wyznacznik macierzy jest równy:%d",e);
break;
}


			 case 2 :
				 { int serduszko[2][2];

						 int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p;
						 printf("podaj po koleji a,b,c,d pierwszej macierzy");
						 scanf("%d%d%d%d",&a,&b,&c,&d);

						 printf("podaj po koleji a,b,c,d pierwszej macierzy");
						 scanf("%d%d%d%d",&e,&f,&g,&h);
						 i=a+e;
						 j=b+f;
						 k=c+g;
						 l=d+h;

				 serduszko[0][0]=i;
				 serduszko[1][0]=j;
				 serduszko[0][1]=k;
				 serduszko[1][0]=l;
serduszko[1][1]=l;
printf("\niloczyn tych dwóch macierzy wynosi:\t%s\t%s\t%s\t%s", serduszko[0][0], serduszko[1][0], serduszko[0][1], serduszko[1][1]);


/*printf("%d\t%d\n%d\t%d\n",i,j,k,l);*/}
			
			
				 break;
}
system("PAUSE");
return 0;
}



napisałam teraz tak, a program dalej nie chodzi jak powinnen kompiluje się ale zawiesza sie przy podawaniu macierzy ostatniej tzn nie przechodzi do wyświetlania wyników.

To coś z nawiasami?

Użytkownik lightinside edytował ten post 31 12 2012 - 13:43

  • 0

#4 bipiw

bipiw

    Zaawansowany użytkownik

  • 1 180 postów

Napisano 03 01 2013 - 01:11

serduszko[0][0]=i;
serduszko[1][0]=j;
serduszko[0][1]=k;
serduszko[1][0]=l;
serduszko[1][1]=l;

Jak Ci wszyła macierz 2/2 z pięcioma elementami? :) Pogrubione sie dublują.


switch(z)
{
case 1:
{
int a,b,c,d,e;
printf("podaj kolejno a,b,c,d\n");
scanf("%d%d%d%d",&a,&b,&c,&d);
e=a*d-c*b;
printf("wyznacznik macierzy jest równy:%d",e);
break;
}


case 2 :
{ int serduszko[2][2];

int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p;
printf("podaj po koleji a,b,c,d pierwszej macierzy");
scanf("%d%d%d%d",&a,&b,&c,&d);

printf("podaj po koleji a,b,c,d pierwszej macierzy");
scanf("%d%d%d%d",&e,&f,&g,&h);
i=a+e;
j=b+f;
k=c+g;
l=d+h;

serduszko[0][0]=i;
serduszko[1][0]=j;
serduszko[0][1]=k;
serduszko[1][0]=l;
serduszko[1][1]=l;
printf("\niloczyn tych dwóch macierzy wynosi:\t%s\t%s\t%s\t%s", serduszko[0][0], serduszko[1][0], serduszko[0][1], serduszko[1][1]);


/*printf("%d\t%d\n%d\t%d\n",i,j,k,l);*/}


break;

pogrubione klamerki do wyrzucenia. i w masce wyświetlania-> skoro wczytywane były int i nie było żadnego dzielenia lepiej użyć tego z zakomentowanego printf czyli %d\t%d\n%d\t%d\ bo dlaczego nagle miałyby się wyświetlać jako stringi:)

Użytkownik bipiw edytował ten post 03 01 2013 - 01:14

  • 0

Zobacz więcej tematów z tagiem: macierz jednostkowa język C



Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych