Ir ao conteúdo
  • Cadastre-se
mrsmeenster

C Como resolver este problema em c?

Recommended Posts

Elabore um programa na linguagem C para classificar o alimento
correspondente ao código digitado quanto à sua origem, e sua sensibilidade às alterações ou
ao seu teor de água livre (Aa).
Observações:
a) O A saída do programa deve, além da classificação, exibir o nome do alimento
classificado correspondente ao código.
b) Quando o código digitado não corresponder a nenhum dos códigos previstos no trecho
de programa abaixo, emitir uma mensagem.
c) O programa deve ser executado tantas vezes quanto o usuário desejar fazê-lo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@mrsmeenster      use vetores para armazenar os dados e use um laço de repetição que pode ser o do / while e dentro dele use o comando scanf para pegar os dados , o código , a origem , a sensibilidade e as alterações , e colocar no vetor   e use o comando if para fazer a classificação e para isso você precisa de uma tabela de referencia para saber qual a classificação do alimento ,  mas não posso te dar o código pronto pois é contra as regras do fórum , então faça seu código e poste aqui para podermos ver como está e em que podemos ajudar  .

Compartilhar este post


Link para o post
Compartilhar em outros sites

No do - while tu define a saída do laço. Ex:

int x=0;

do{

}while(x!=1);
//enquanto o x nao for 1 ele fica repetindo

 

sobre o switch. Você coloca a variável a ser usada. Ex

int num;

printf("1:Arroz");
printf("2:Batata");
do{
switch(num){
	
	case 1:printf("informações sobre arroz");
      break;

	case 2:
			printf("informações sobre Batata");
		break;
	default:
     //Escolher qualquer opção que nao esteja no switch entra em default e termina o programa
}while(num !=0);
  //coloque uma opção de saída para o usuário

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@mrsmeenster    o scanf você coloca logo depois do menu de opções , e o switch é depois de pegar a opção ,  e o do / while é para repetir enquanto o usuário quiser ver as informações ,  então seu código está bom , então acrescentado alguns comandos seu código pode ser assim   :

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
int main(){
    int cod;
    char op;
    do{
        system("cls");
        printf(" 1 - açucar\n");
        printf(" 2 - arroz\n");
        printf(" 3 - batata\n");
        printf(" 4 - beterraba\n");
        printf(" 5 - carnes\n");
        printf(" 6 - farinha\n");
        printf(" 7 - feijão\n");
        printf(" 8 - frutas\n");
        printf(" 9 - hortaliças\n");
        printf("10 - leite\n");
        printf("11 - pescados\n");
        printf("\n");
        printf("digite o codigo do alimento ");
        fflush(stdin);
        scanf("%d",&cod);
        printf("\n");
        switch(cod){
        case 1:
            printf("====  Açucar ====\n\n");
            printf("Origem ----------> Vegetal\n");
            printf("Classificacao ---> nao periveis\n");
            break;
        case 2:
            printf("==== Arroz ====\n\n");
            printf("Origem ----------> Vegetal\n");
            printf("Classificacao ---> nao pereciveis\n");
           break;
        case 3: 
            printf("==== Batata ====\n\n");
            printf("Origem ----------> Vegetal\n");
            printf("Classificacao ---> nao pereciveis\n");
            break;
        case 4:
            printf("==== Beterraba ====\n\n");
            printf("Origem ----------> Vegetal\n");
            printf("Classificacao ---> semi-pereciveis\n");
            break;
        case 5:
            printf("==== Carnes ====\n\n");
            printf("Origem ----------> Vegetal\n");
            printf("Classificacao ---> pereciveis\n");
            break;
        case 6:
            printf("==== Farinha ====\n\n");
            printf("Origem ----------> Vegetal\n");
            printf("Classificacao ---> nao pereciveis\n");
            break;
        case 7:
            printf("==== Feijao ====\n\n");
            printf("Origem ----------> Vegetal\n");
            printf("Classificacao ---> nao pereciveis\n");
            break;
        case 8:
            printf("==== Frutas ====\n\n");
            printf("Origem ----------> Vegetal\n");
            printf("Classificacao ---> semi-pereciveis\n");
            break;
        case 9:
            printf("==== Hortaliças ====\n\n");
            printf("Origem ----------> Vegetal\n");
            printf("Classificacao ---> semi-pereciveis\n");
            break;
        case 10:
            printf("==== Leite ====\n\n");
            printf("Origem ----------> Vegetal\n");
            printf("Classificacao ---> pereciveis\n");
            break;
        case 11:
            printf("==== Pescados ====\n\n");
            printf("Origem ----------> Vegetal\n");
            printf("Classificacao ---> pereciveis\n");
            break;
        default:
            printf("Opcao Invalida !\n");
        }
        printf("\nVer Outro Alimento S/N ");
        fflush(stdin);
        scanf("%c",&op);
    }while(toupper(op) != 'N');
    return 0;    
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você poderia me ajudar com este código? Está dando erro mas não consigo encontrá-lo. O codigo está anexado em pdf. Mas o enunciado da questão é esse: 

Elabore um programa para ler dois vetores Xn e Yn (n ≤ 20) de elementos inteiros e, de acordo com a opção do usuário (use um menu de opções e o comando switch), calcule:

1 – A união de X com Y

2 – A diferença entre X e Y

3 – O produto escalar de X e Y

4 – A interseção de X e Y

 

CODIGO pd.pdf

adicionado 3 minutos depois

@devair1010

adicionado 4 minutos depois
4 minutos atrás, mrsmeenster disse:

Você poderia me ajudar com este código? Está dando erro mas não consigo encontrá-lo. O codigo está anexado em pdf. Mas o enunciado da questão é esse: 

Elabore um programa para ler dois vetores Xn e Yn (n ≤ 20) de elementos inteiros e, de acordo com a opção do usuário (use um menu de opções e o comando switch), calcule:

1 – A união de X com Y

2 – A diferença entre X e Y

3 – O produto escalar de X e Y

4 – A interseção de X e Y

 

CODIGO pd.pdf

adicionado 3 minutos depois

@devair1010

@devair1010

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@mrsmeenster     esse link passado não está funcionado , melhor você postar o código aqui no fórum mesmo, use o botão  <>  que está lá na barra de ferramentas da janela de postar .

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, devair1010 disse:

@mrsmeenster     esse link passado não está funcionado , melhor você postar o código aqui no fórum mesmo, use o botão  <>  que está lá na barra de ferramentas da janela de postar .

@devair1010 @devair1010 @devair1010

#include <stdio.h> 
#define N 5 
int main() { 
int x[N], y[N], soma[N], prod[N], uniao[2*N], inter[N], dif_xy[N]; 
char ja_consta; 
int i, j, n_inter=0, n_dif_xy=0, n_uniao=0, aux; 
for (i=0; i<N; i++) { 
printf("Informe X[%d]: ", i); 
scanf(" %d", &x[i]); 
do { 
ja_consta = 'N'; 
for (j=0; j<i; j++) 
if (x[i] == x[j]) 
ja_consta = 'S'; 
if (ja_consta == 'S') { 
printf("%d já existe no conjunto. Reinforme X[%d]: ", x[i], i); 
scanf(" %d", &x[i]); 
} 
} while (ja_consta == 'S'); 
} 
for (i=0; i<N; i++) { 
printf("Informe Y[%d]: ", i); 
scanf(" %d", &y[i]); 
do { 
ja_consta = 'N'; 
for (j=0; j<i; j++) 
if (y[i] == y[j]) 
ja_consta = 'S'; 
if (ja_consta == 'S') { 
printf("%d já existe no conjunto. Reinforme Y[%d]: ", y[i], i); 
scanf(" %d", &y[i]); 
} 
} while (ja_consta == 'S'); 
} 

printf("\nX:\n"); 
for (i=0; i<N; i++) 
printf("\t%d", x[i]); 
printf("\nY:\n"); 
for (i=0; i<N; i++) 
printf("\t%d", y[i]); 

/* Soma */ 
for (i=0; i<N; i++) 
soma[i] = x[i] + y[i]; 
printf("\nSoma:\n"); 
for (i=0; i<N; i++) 
printf("\t%d", soma[i]); 

/* Produto */ 
for (i=0; i<N; i++) 
prod[i] = x[i] * y[i]; 
printf("\nProduto:\n"); 
for (i=0; i<N; i++) 
printf("\t%d", prod[i]); 

/* União */ 
for (i=0; i<N; i++) 
uniao[n_uniao++] = x[i]; 
for (i=0; i<N; i++) { 
for (j=0; j<i, y[i] != uniao[j]; j++) 
; 
if (j >= i) 
uniao[n_uniao++] = y[i]; 
} 
printf("\nUnião:\n"); 
for (i=0; i<n_uniao; i++) 
printf("\t%d", uniao[i]); 

/* Diferença X - Y*/ 
for (i=0; i<N; i++) { 
ja_consta = 'N'; 
for (j=0; j<N; j++) 
if (x[i] == y[j]) 
ja_consta = 'S'; 
if (ja_consta == 'N') 
dif[n_dif_xy++] = x[i]; 
} 
printf("\nDiferença X - Y:\n"); 
for (i=0; i<n_dif_xy; i++) 
printf("\t%d", dif_xy[i]); 

/* Intersecção */ 
for (i=0; i<N; i++) 
for (j=0; j<N; j++) 
if (x[i] == y[j]) { 
ja_consta = 'N'; 
for (k=0; k<n_inter; k++) 
if (x[i] == inter[k]) 
ja_consta = 'S'; 
if (ja_consta == 'N') 
inter[n_inter++] = x[i]; 
} 
printf("\nIntersecção:\n"); 
for (i=0; i<n_inter; i++) 
printf("\t%d", inter[i]); 

printf("\n"); 
return 0; 
}




 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@mrsmeenster     seu código está bom , mas na hora de comparar ele compara com o mesmo número ,  e também se digitar algum caractere que não é número ele dá erro ,  então apenas ajeitei essa parte ,  e não sei o que é a interseção , mas seu código poderia ser assim  :

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <windows.h>
/*#include <locale.h>*/
#define N 5
/*             0     1    2     3   4      5      6      7         8  */
typedef enum{BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY,   /* nome das cores */
LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE} COLORS;
/*  9         10         11        12        13         14    15 */

static int __BACKGROUND = 1/*BLACK*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = LIGHTGRAY;

void textcolor (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}
int main(){
    /*printf("%s\n", setlocale(LC_ALL,"")); getch();*/
    int x[N], y[N], soma[N], prod[N];
    int inter[N], dif_xy[N*2],uniao[2*N];
    char ja_consta,str[30];
    int i,k,j,n_inter=0, n_dif_xy=0,flag;
    /*setlocale(LC_ALL,"portuguese-brazilian");*/
    for(i=0; i<N; i++)
        do{
            textcolor(11,0);
            printf("Informe X[%d]: ",i);
            textcolor(14,0);
            scanf("%s",str);           /* para não aceitar letras */
            flag=0;
            ja_consta = 'N';
            for(k=0;k<strlen(str);k++){
                if( ! isdigit(str[k])){/* testa se é número */
                    flag=1;
                    ja_consta='S';
                    break;
                }
            }
            if( flag )printf("Digitou Caracteres Que n%co S%co N%cmeros !\n",132,132,163);
            else{
                x[i]= atoi(str);
                for(j=0; j<i; j++)
                    if(x[i] == x[j] && j != i )
                        ja_consta = 'S';
                if(ja_consta == 'S' )
                    printf("%d j%c existe no conjunto.\n",atoi(str),160);
            }

        }while(ja_consta == 'S');

    for(i=0; i<N; i++)
        do{
            textcolor(11,0);
            printf("Informe y[%d]: ",i);
            textcolor(14,0);
            scanf("%s",str);           /* para não aceitar letras */
            flag=0;
            ja_consta = 'N';
            for(k=0;k<strlen(str);k++){
                if( ! isdigit(str[k])){/* testa se é número */
                    flag=1;
                    ja_consta='S';
                    break;
                }
            }
            if( flag )printf("Digitou Caracteres Que n%co S%co N%cmeros !\n",132,132,163);
            else{
                y[i]= atoi(str);
                for(j=0; j<i; j++)
                    if(y[i] == y[j] && j != i )
                        ja_consta = 'S';
                if(ja_consta == 'S' )
                    printf("%d j%c existe no conjunto.\n",atoi(str),160);
            }
        }while(ja_consta == 'S');
    textcolor(11,0);
    printf("\n\nX ---------------> ");
    textcolor(14,0);
    for(i=0; i<N; i++)
        printf("%3d",x[i]);
    textcolor(11,0);
    printf("\n\nY ---------------> ");
    textcolor(14,0);
    for (i=0; i<N; i++)
        printf("%3d", y[i]);

    /* Soma */
    for(i=0; i<N; i++)
        soma[i] = x[i] + y[i];
    textcolor(11,0);
    printf("\n\nSoma ------------> ");
    textcolor(14,0);
    for(i=0; i<N; i++)
        printf("%3d",soma[i]);

    /* Produto */
    for(i=0; i<N; i++)
        prod[i] = x[i] * y[i];
    textcolor(11,0);
    printf("\n\nProduto ---------> ");
    textcolor(14,0);
    for(i=0; i<N; i++)
        printf("%3d",prod[i]);

    /* União */
    for(i=0; i<N; i++){
        uniao[i] = x[i];
        uniao[i+N] = y[i];
    }
    textcolor(11,0);
    printf("\n\nUni%co -----------> ",132);
    textcolor(14,0);
    for(i=0; i<N*2; i++)
        printf("%3d",uniao[i]);

    /* Diferença X - Y*/
    for(i=0; i<N; i++){
        ja_consta = 'N';
        for(j=0; j<N; j++)
            if(x[i] == y[j])
                ja_consta = 'S';
        if(ja_consta == 'N'){
            dif_xy[n_dif_xy  ] = x[i];
            dif_xy[n_dif_xy+N] = y[i];
            n_dif_xy++;
        }
    }
    textcolor(11,0);
    printf("\n\nDiferença X - Y -> ");
    textcolor(14,0);
    for (i=0; i<N*2; i++)
        printf("%3d",dif_xy[i]);

    /* Intersecção *//* eesa parte aqui não precisava pois não haverá números repetidos */
    for(i=0; i<N; i++)
        for(j=0; j<N; j++)
            if(x[i] == y[j]){
                ja_consta = 'N';
                for(k=0; k<n_inter; k++)
                    if(x[i] == inter[k])
                        ja_consta = 'S';
                if(ja_consta == 'N')
                    inter[n_inter++] = x[i];
            }
    textcolor(11,0);
    printf("\n\nIntersec%c%co -----> ",135,132);
    textcolor(14,0);
    flag=0;
    for(i=0; i<n_inter; i++)
        if(inter[i]!= 0){
            printf("%3d",inter[i]);
            flag=1;
        }
    if( ! flag )printf("Nao Teve Interse%c%co !",135,132);
    printf("\n\n");
    textcolor(7,0);
    getch();
    return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 03/11/2018 às 21:02, mrsmeenster disse:

Preciso de ajuda com um ultimo programa em C sobre matrizes que fiz porém não sei como termina-lo (onde tá as partes sem o código) O programa em C deve possuir a


// Programa
#include <stdio.h>
#include <stdlib.h>
#include<locale.h>
int main ()
{
 setlocale(LC_ALL, "Portuguese");
 /* Declaração de variáveis*/
 int opcao;
 
system(“cls”);
printf(“**************************** ******************\n”);
printf(“********* M E N U D E O P C O E S ***********\n”);
printf(“**************************** ******************\n”);
do
 {
printf(“Escolha uma das opções de 1 a 4 ”);
printf(“Digite [1] para calcular a transposta de uma matriz A”);
printf(“Digite [2] para verificar se A uma matriz é simétrica ”);
printf(“Digite [3] para calcular o produto de duas matrizes A e B ”);
printf(“Digite [4] para terminar ”);
scanf(“%d”, &opcao);
if ((opcao <= 1) || (opcao >4)
 printf(“voce digitou uma opcao e invalida, escolha novamente por favor”);
 } while ((OPCAO <= 1) || (OPCAO >4)) // Teste de consistência
 if(opcao ! = 4)
 {
 switch (opcao)
 {
 case 1:
 //escrever o código necessário para realizar esta operação
 ...
   2:
 //escrever o código necessário para realizar esta operação
 ...
 break;
 case 3:
 //escrever o código necessário para realizar esta operação
 ...
 break;
 ...

 }
 }

...
}

Interface com o usuário (o formato das solicitações de entrada de dados e a impressão dos resultados)

@devair1010

adicionado 32 minutos depois

@devair1010

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@mrsmeenster      seu código está bom , mas precisa de uma melhor identação , e a matriz transposta seria pegar os elementos das linha da matriz e colocar nas colunas da matriz transposta , então essa parte do código poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
#include<locale.h>
void transposta();
void simetrica();
void produto();
int main(){
    setlocale(LC_ALL,"");
    int opcao;
    system("cls");
    do{
        printf("**************************** ******************  \n");
        printf("********* M E N U D E O P C O E S *************  \n");
        printf("**************************** ******************\n\n");
        printf("Digite [1] para calcular a transposta de uma matriz A\n");
        printf("Digite [2] para verificar se A uma matriz é simétrica\n");
        printf("Digite [3] para calcular o produto de duas matrizes A e B\n");
        printf("Digite [4] para terminar");
        printf("Escolha uma das opções de 1 a 4 ");
        scanf("%d",&opcao);
        switch(opcao){
        case 1 :
            //escrever o código necessário para realizar esta operação
            transposta();
            break;
        case 2 :
        //escrever o código necessário para realizar esta operação
            simetrica();
            break;
        case 3 :
            //escrever o código necessário para realizar esta operação
            produto();
            break;
        case 4 :
            printf("\nSaindo do programa !\n\n");
            break;
        default :
            printf("OPcao invalida !\n");
        }
    }while(opcao != 4 ); // Teste de consistência
}
void transposta(){
    int j,w,L,c,op,matriz[100][100];
    int matriz_transp[100][100];
    printf("quantidade de linhas da matriz ");
    scanf("%d",&L);
    printf("quantidade de colunas da matriz ");
    scanf("%d",&c);
    printf("Informe os numeros da matriz\n");
    for(j=0; j<L; j++){
        for(w=0; w<c; w++){
            printf("numero da linha %d e coluna %d ",j,w);
            scanf("%d",&matriz[j][w]);
        }
    }
    printf("\nA matriz informada\n");
    for(j=0;j<L;j++){
        for(w=0;w<c;w++)
            printf("% 3d",matriz[j][w]);
        printf("\n");
    }
    for(w=0;w<c;w++){
        for(j=0;j<L;j++){
            matriz_transp[w][j] = matriz[j][w];/* preenchendo a matriz transposta */
        }
    }
    printf("\nA matriz transposta\n");
    for(w=0;w<c;w++){
        for(j=0;j<L;j++)
            printf("%3d",matriz_transp[w][j]);
        printf("\n");
    }
    printf("\n");
}
void simetrica(){

}
void produto(){

}

faça as outras duas opções e poste aqui para vermos como está e em que podemos ajudar   .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz as duas outras opções mas está dando erro e não consigo arruma-lo! Poderia me ajudar? O codigo segue abaixo. 

#include <stdio.h>
#include <stdlib.h>
#include<locale.h>
void transposta();
void simetrica();
void produto();
int main(){
    setlocale(LC_ALL,"");
    int opcao;
    system("cls");
    do{
        printf("**************************** ******************  \n");
        printf("********* M E N U D E O P C O E S *************  \n");
        printf("**************************** ******************\n\n");
        printf("Digite [1] para calcular a transposta de uma matriz A\n");
        printf("Digite [2] para verificar se A uma matriz é simétrica\n");
        printf("Digite [3] para calcular o produto de duas matrizes A e B\n");
        printf("Digite [4] para terminar");
        printf("Escolha uma das opções de 1 a 4 ");
        scanf("%d",&opcao);
        switch(opcao){
        case 1 :
            //escrever o código necessário para realizar esta operação
            transposta();
            break;
        case 2 :
        //escrever o código necessário para realizar esta operação
            simetrica();
            break;
        case 3 :
            //escrever o código necessário para realizar esta operação
            produto();
            break;
        case 4 :
            printf("\nSaindo do programa !\n\n");
            break;
        default :
            printf("OPcao invalida !\n");
        }
    }while(opcao != 4 ); // Teste de consistência
}
void transposta(){
    int j,w,L,c,op,matriz[100][100];
    int matriz_transp[100][100];
    printf("quantidade de linhas da matriz ");
    scanf("%d",&L);
    printf("quantidade de colunas da matriz ");
    scanf("%d",&c);
    printf("Informe os numeros da matriz\n");
    for(j=0; j<L; j++){
        for(w=0; w<c; w++){
            printf("numero da linha %d e coluna %d ",j,w);
            scanf("%d",&matriz[j][w]);
        }
    }
    printf("\nA matriz informada\n");
    for(j=0;j<L;j++){
        for(w=0;w<c;w++)
            printf("% 3d",matriz[j][w]);
        printf("\n");
    }
    for(w=0;w<c;w++){
        for(j=0;j<L;j++){
            matriz_transp[w][j] = matriz[j][w];/* preenchendo a matriz transposta */
        }
    }
    printf("\nA matriz transposta\n");
    for(w=0;w<c;w++){
        for(j=0;j<L;j++)
            printf("%3d",matriz_transp[w][j]);
        printf("\n");
    }
    printf("\n");
}
void simetrica()
    {
    srand (time(NULL));
    int ordem=0;
    printf ("\nDigite a ordem da matriz simetrica:");
    while (ordem<=0)
    {
         fflush(stdin);
         scanf ("%i", &ordem);
         if (ordem<=0)
         {
                     printf ("/n\t ERRO!! ORDEM DEVE SER MAIOR QUE ZERO!!");
                     printf ("\nDigite a ordem da matriz simetrica:");
         }
    }
    int mat[ordem][ordem],i,j;
    for (i=0; i<ordem;i++)
    {
        for (j=i;j<ordem;j++)
        {
               if (i!=j)
               {
                  mat[i][j] = rand()%101;
                  mat[j][i] = mat[i][j];
               }
               else
                  mat[i][j] = rand()%101;
        }
    }
    printf ("\n\n MATRIZ SIMETRICA GERADA:\n\n");
    for (i=0;i<ordem;i++)
    {
        for (j=0;j<ordem;j++)
          printf ("\t%i", mat[i][j]);
        printf ("\n\n");
    }
    getch();
    return 0;


}
void produto(){
{

int j,w,L,c,op, matrizA[5][5],matrizB[5][5],matrizC[5][5],X,Aux=0;

printf("\n Informe a quantidade de linhas da matriz A : ");

scanf("%d",&j);

printf("\n Informe a quantidade de colunas da matriz A : ");

scanf("%d",&w);

printf("\n Informe a quntidade de linhas da matriz B : ");

scanf("%d",&L);

printf("\n Informe a quantidade de colunas da matriz B : ");

scanf("%d",&c);

if(l==c)

{

for(i=0; j<w; i++)

{

for(j=0; j<c; j++)

{

printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da Matriz A: ", i+1, 167, j+1, 167);

scanf("%d", &matrizA[i][j]);

}

printf("\n");

}

for(i=0; i<p; i++)

{

for(j=0; j<q; j++)

{

printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ", i+1, 167, j+1, 167, 167);

scanf("%d", &matrizB[i][j]);

}

printf("\n");

}

for(i=0; i<m; i++)

{

for(j=0; j<q; j++)

{

matrizC[i][j]=0;

for(X=0; X<p; X++)

{

Aux += matrizA[i][X] * matrizB[X][j];

}

matrizC[i][j]=Aux;

Aux=0;

}

}

printf("\n\n");

printf("***** Matriz \"A\" Gerada *****\n\n");

for(i=0; i<m; i++)

{

for(j=0; j<n; j++)

{

printf("%d\t", matrizA[i][j]);

}

printf("\n\n");

}

printf("***** Matriz \"B\" Gerada *****\n\n");

for(i=0; i<p; i++)

{

for(j=0; j<q; j++)

{

printf("%d\t", matrizB[i][j]);

}

printf("\n\n");

}

printf(" Matriz Multiplicada\n\n");

for(i=0; i<m; i++)

{

for(j=0; j<q; j++)

{

printf("%d\t", matrizC[i][j]);

}

printf("\n\n");

}

printf("\n\n");

}

else

{

printf("\n\n Nao ha com multiplicar as matrizes dadas ");

}

system("pause");
}

 

adicionado 3 minutos depois

 

2 horas atrás, devair1010 disse:

@mrsmeenster      seu código está bom , mas precisa de uma melhor identação , e a matriz transposta seria pegar os elementos das linha da matriz e colocar nas colunas da matriz transposta , então essa parte do código poderia ser assim  :


#include <stdio.h>
#include <stdlib.h>
#include<locale.h>
void transposta();
void simetrica();
void produto();
int main(){
    setlocale(LC_ALL,"");
    int opcao;
    system("cls");
    do{
        printf("**************************** ******************  \n");
        printf("********* M E N U D E O P C O E S *************  \n");
        printf("**************************** ******************\n\n");
        printf("Digite [1] para calcular a transposta de uma matriz A\n");
        printf("Digite [2] para verificar se A uma matriz é simétrica\n");
        printf("Digite [3] para calcular o produto de duas matrizes A e B\n");
        printf("Digite [4] para terminar");
        printf("Escolha uma das opções de 1 a 4 ");
        scanf("%d",&opcao);
        switch(opcao){
        case 1 :
            //escrever o código necessário para realizar esta operação
            transposta();
            break;
        case 2 :
        //escrever o código necessário para realizar esta operação
            simetrica();
            break;
        case 3 :
            //escrever o código necessário para realizar esta operação
            produto();
            break;
        case 4 :
            printf("\nSaindo do programa !\n\n");
            break;
        default :
            printf("OPcao invalida !\n");
        }
    }while(opcao != 4 ); // Teste de consistência
}
void transposta(){
    int j,w,L,c,op,matriz[100][100];
    int matriz_transp[100][100];
    printf("quantidade de linhas da matriz ");
    scanf("%d",&L);
    printf("quantidade de colunas da matriz ");
    scanf("%d",&c);
    printf("Informe os numeros da matriz\n");
    for(j=0; j<L; j++){
        for(w=0; w<c; w++){
            printf("numero da linha %d e coluna %d ",j,w);
            scanf("%d",&matriz[j][w]);
        }
    }
    printf("\nA matriz informada\n");
    for(j=0;j<L;j++){
        for(w=0;w<c;w++)
            printf("% 3d",matriz[j][w]);
        printf("\n");
    }
    for(w=0;w<c;w++){
        for(j=0;j<L;j++){
            matriz_transp[w][j] = matriz[j][w];/* preenchendo a matriz transposta */
        }
    }
    printf("\nA matriz transposta\n");
    for(w=0;w<c;w++){
        for(j=0;j<L;j++)
            printf("%3d",matriz_transp[w][j]);
        printf("\n");
    }
    printf("\n");
}
void simetrica(){

}
void produto(){

}

faça as outras duas opções e poste aqui para vermos como está e em que podemos ajudar   .

@devair1010

 eu fiz o resto do código, porém está dando erro e não consigo arruma-lo. poderia me ajudar com isto? segue abaixo o codigo.

#include <stdio.h>
#include <stdlib.h>
#include<locale.h>
void transposta();
void simetrica();
void produto();
int main(){
    setlocale(LC_ALL,"");
    int opcao;
    system("cls");
    do{
        printf("**************************** ******************  \n");
        printf("********* M E N U D E O P C O E S *************  \n");
        printf("**************************** ******************\n\n");
        printf("Digite [1] para calcular a transposta de uma matriz A\n");
        printf("Digite [2] para verificar se A uma matriz é simétrica\n");
        printf("Digite [3] para calcular o produto de duas matrizes A e B\n");
        printf("Digite [4] para terminar");
        printf("Escolha uma das opções de 1 a 4 ");
        scanf("%d",&opcao);
        switch(opcao){
        case 1 :
            //escrever o código necessário para realizar esta operação
            transposta();
            break;
        case 2 :
        //escrever o código necessário para realizar esta operação
            simetrica();
            break;
        case 3 :
            //escrever o código necessário para realizar esta operação
            produto();
            break;
        case 4 :
            printf("\nSaindo do programa !\n\n");
            break;
        default :
            printf("OPcao invalida !\n");
        }
    }while(opcao != 4 ); // Teste de consistência
}
void transposta(){
    int j,w,L,c,op,matriz[100][100];
    int matriz_transp[100][100];
    printf("quantidade de linhas da matriz ");
    scanf("%d",&L);
    printf("quantidade de colunas da matriz ");
    scanf("%d",&c);
    printf("Informe os numeros da matriz\n");
    for(j=0; j<L; j++){
        for(w=0; w<c; w++){
            printf("numero da linha %d e coluna %d ",j,w);
            scanf("%d",&matriz[j][w]);
        }
    }
    printf("\nA matriz informada\n");
    for(j=0;j<L;j++){
        for(w=0;w<c;w++)
            printf("% 3d",matriz[j][w]);
        printf("\n");
    }
    for(w=0;w<c;w++){
        for(j=0;j<L;j++){
            matriz_transp[w][j] = matriz[j][w];/* preenchendo a matriz transposta */
        }
    }
    printf("\nA matriz transposta\n");
    for(w=0;w<c;w++){
        for(j=0;j<L;j++)
            printf("%3d",matriz_transp[w][j]);
        printf("\n");
    }
    printf("\n");
}
void simetrica()
    {
    srand (time(NULL));
    int ordem=0;
    printf ("\nDigite a ordem da matriz simetrica:");
    while (ordem<=0)
    {
         fflush(stdin);
         scanf ("%i", &ordem);
         if (ordem<=0)
         {
                     printf ("/n\t ERRO!! ORDEM DEVE SER MAIOR QUE ZERO!!");
                     printf ("\nDigite a ordem da matriz simetrica:");
         }
    }
    int mat[ordem][ordem],i,j;
    for (i=0; i<ordem;i++)
    {
        for (j=i;j<ordem;j++)
        {
               if (i!=j)
               {
                  mat[i][j] = rand()%101;
                  mat[j][i] = mat[i][j];
               }
               else
                  mat[i][j] = rand()%101;
        }
    }
    printf ("\n\n MATRIZ SIMETRICA GERADA:\n\n");
    for (i=0;i<ordem;i++)
    {
        for (j=0;j<ordem;j++)
          printf ("\t%i", mat[i][j]);
        printf ("\n\n");
    }
    getch();
    return 0;


}
void produto(){
{

int j,w,L,c,op, matrizA[5][5],matrizB[5][5],matrizC[5][5],X,Aux=0;

printf("\n Informe a quantidade de linhas da matriz A : ");

scanf("%d",&j);

printf("\n Informe a quantidade de colunas da matriz A : ");

scanf("%d",&w);

printf("\n Informe a quntidade de linhas da matriz B : ");

scanf("%d",&L);

printf("\n Informe a quantidade de colunas da matriz B : ");

scanf("%d",&c);

if(l==c)

{

for(i=0; j<w; i++)

{

for(j=0; j<c; j++)

{

printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da Matriz A: ", i+1, 167, j+1, 167);

scanf("%d", &matrizA[i][j]);

}

printf("\n");

}

for(i=0; i<p; i++)

{

for(j=0; j<q; j++)

{

printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ", i+1, 167, j+1, 167, 167);

scanf("%d", &matrizB[i][j]);

}

printf("\n");

}

for(i=0; i<m; i++)

{

for(j=0; j<q; j++)

{

matrizC[i][j]=0;

for(X=0; X<p; X++)

{

Aux += matrizA[i][X] * matrizB[X][j];

}

matrizC[i][j]=Aux;

Aux=0;

}

}

printf("\n\n");

printf("***** Matriz \"A\" Gerada *****\n\n");

for(i=0; i<m; i++)

{

for(j=0; j<n; j++)

{

printf("%d\t", matrizA[i][j]);

}

printf("\n\n");

}

printf("***** Matriz \"B\" Gerada *****\n\n");

for(i=0; i<p; i++)

{

for(j=0; j<q; j++)

{

printf("%d\t", matrizB[i][j]);

}

printf("\n\n");

}

printf(" Matriz Multiplicada\n\n");

for(i=0; i<m; i++)

{

for(j=0; j<q; j++)

{

printf("%d\t", matrizC[i][j]);

}

printf("\n\n");

}

printf("\n\n");

}

else

{

printf("\n\n Nao ha com multiplicar as matrizes dadas ");

}

system("pause");
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@mrsmeenster     seu código com algumas modificações :

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include<locale.h>
#include <time.h>
void transposta();
int simetrica();
void produto();
int matriz[100][100],L,c;
int main(){
    setlocale(LC_ALL,"");
    int opcao;
    system("cls");
    do{
        printf("\n**************************** ******************    \n");
        printf("********* M E N U D E O P C O E S *************      \n");
        printf("**************************** ******************    \n\n");
        printf("Digite [1] para calcular a transposta de uma matriz A\n");
        printf("Digite [2] para verificar se A uma matriz é simétrica\n");
        printf("Digite [3] para calcular o produto de duas matrizes A e B\n");
        printf("Digite [4] para terminar\n");
        printf("Escolha uma das opções de 1 a 4\n\n");
        printf("opcao -> ");
        scanf("%d",&opcao);
        switch(opcao){
        case 1 :
            //escrever o código necessário para realizar esta operação
            transposta();
            break;
        case 2 :
        //escrever o código necessário para realizar esta operação
            simetrica();
            break;
        case 3 :
            //escrever o código necessário para realizar esta operação
            produto();
            break;
        case 4 :
            printf("\nSaindo do programa !\n\n");
            break;
        default :
            printf("OPcao invalida !\n");
        }
    }while(opcao != 4 ); // Teste de consistência
}
void transposta(){
    int j,w,op;
    int matriz_transp[100][100];
    printf("quantidade de linhas da matriz ");
    scanf("%d",&L);
    printf("quantidade de colunas da matriz ");
    scanf("%d",&c);
    printf("Informe os numeros da matriz\n");
    for(j=0; j<L; j++){
        for(w=0; w<c; w++){
            printf("numero da linha %d e coluna %d ",j,w);
            scanf("%d",&matriz[j][w]);
            matriz_transp[w][j] = matriz[j][w];/* faz a transposta da matriz */
        }
    }
    printf("\nA matriz informada\n");
    for(j=0;j<L;j++){
        for(w=0;w<c;w++)
            printf("% 4d",matriz[j][w]);
        printf("\n");
    }
    printf("\nA matriz transposta\n");
    for(w=0; w<c; w++){
        for(j=0; j<L; j++)
            printf("%4d",matriz_transp[w][j]);
        printf("\n");
    }
    printf("\n");
}
int simetrica(){
    srand (time(NULL));
    int ordem=0,flag=0;
    int j,i;
    char op;
    printf("\nQuer usar a matriz gerada na opcao 1 S/N\n");
    fflush(stdin);
    scanf("%c",&op);
    if(toupper(op)!='S'){
        while (ordem<=0){
            printf ("\nDigite a ordem da matriz simetrica : ");
            fflush(stdin);
            scanf ("%i", &ordem);
            if (ordem<=0)
                printf ("\n ERRO!! ORDEM DEVE SER MAIOR QUE ZERO!!");
        }
    }
    else{
        if(c != L ){
            printf("essa matriz nao eh quadrada !\n");
            return 0;
        }
        ordem = c;
        flag=1;
    }
    int mat[ordem][ordem];
    int mat_transp[ordem][ordem];
    printf ("\n\n MATRIZ GERADA:\n\n");
    for (i=0; i<ordem;i++){
        for (j=0;j<ordem;j++){
            if( ! flag ){mat[i][j] = rand()%100+1;}/* pega números de 1 até 100 */
            else {mat[i][j] = matriz[i][j];}
            mat_transp[j][i] = mat[i][j];          /* faz a transposta da matriz */
            printf ("%4i", mat[i][j]);
        }
        printf("\n");
    }
    printf ("\n\n MATRIZ TRANSPOSTA:\n\n");
    flag=0;
    for(i=0;i<ordem;i++){
        for(j=0;j<ordem;j++){
            if(mat[i][j]!= mat_transp[i][j]){  /* verifica se elementos são diferentes */
                flag=1;
            }
            printf("%4d",mat_transp[i][j]);    /* imprime a matriz transposta      */
        }
        printf("\n");
    }
    if( flag )                                 /* se tiver elementos diferentes        */
        printf("Essa Matriz Nao eh Simetrica !\n\n");
    else
        printf("Essa Matriz eh Simetrica !\n\n");
    printf("     Tecle !");
    getch();
}
void produto(){
    int j,x,w,L,c,op,i,r,matrizA[115][115],matrizB[115][115],matrizC[115][115],X,aux=0;
    printf("Informe a quantidade de linhas da matriz A : ");
    scanf("%d",&r);
    printf("Informe a quantidade de colunas da matriz A : ");
    scanf("%d",&w);
    printf("Informe a quntidade de linhas da matriz B : ");
    scanf("%d",&L);
    printf("Informe a quantidade de colunas da matriz B : ");
    scanf("%d",&c);
    if(L==c){
        for(i=0; i<r; i++){
            for(j=0; j<w; j++){
                printf("valor da %d%c Linha e da %d%c Coluna da Matriz A: ",i+1,167,j+1,167);
                scanf("%d", &matrizA[i][j]);
            }
        }
        for(i=0; i<L; i++){
            for(j=0; j<c; j++){
                printf("nvalor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ",
                       i+1, 167, j+1, 167, 167);
                scanf("%d", &matrizB[i][j]);
            }
        }
        printf("o produto da matriz\n\n");
        for(i=0; i<r; i++){
            for(j=0; j<c; j++){
                aux=0;
                for(x=0; x<w; x++){
                    aux = aux + matrizA[i][x]*matrizB[x][j];
                }
                matrizC[i][j] = aux;
                printf("%4d",matrizC[i][j]);
            }
            printf("\n");
        }
    }
    else{
        printf("\n\n mastriz nao eh quadrada , Nao ha com multiplicar as matrizes dadas ");
    }
    system("pause");
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×