Jump to content
Hashira do Vento

Exercício com Matriz de linha específica

Recommended Posts

O exercício pede o que eu faça um código com uma matriz, onde eu peça uma linha qualquer ao usuário, e nela será feito a soma ou média dos elementos contidos.

O problema é na hora da decisão do usuário na hora de escolher entre média ou soma, escrevendo a letra inicial de uma dessa palavras em maiúsculo. O "If" simplesmente não funciona, e eu acho que seja essa minha dificuldade, pois quando tirei o if, a soma funcionou normalmente (com o código atual a soma fica igual a zero no printf final). E sim, eu pesquisei a fundo sobre o tipo char, mas mesmo assim não consegui resposta alguma para a solução do meu problema :/

Segue o código:

Obs: Claramente, o meu código não está terminado (ainda falta pôr a parte da média), a partir do momento em que eu solucionar esse problema principal, creio que conseguirei finalizá-lo sem mais contratempos.

 

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


int main (void){

setlocale (LC_ALL, "Portuguese");

float M [2][2], media;
int lin, x, soma1, soma2;
char op[5];

printf ("Preencha a matriz: \n"); 							
	for (int l = 0; l<2; l++) { //linha							
		for (int c = 0; c<2; c++ ) { //coluna
		scanf ("%f", &M[l][c]);
		
		}
	}
	printf ("Que operação você quer? S ou M?\n"); //Entrada do char, escolha da operação
	scanf ("%s", op);
	printf ("Em qual linha da matriz a operação deve ser realizada?\n");
	scanf ("%d", &x);
	
	for (int l = x; l==x; l++) {
		for (int c = 0; c<2; c++ ){
		printf ("%f \n", M[l][c]);//só mostrando os numeros da linha (ignore)
		
		if (op=="S") //tenho quase certeza que o problema se encontra aqui
		soma1= M[l][c]+soma1;

		
		
		}

	}
printf ("O resultado da soma deu %d", soma1); //e na hora de mostrar a soma, ela sempre aparece como zero

}

Share this post


Link to post
Share on other sites

declara op como char mesmo,  sem ser vetor;

antes do scanf que você entra o op da o comando: 

__fpurge(stdin); se você tiver em linux ou  fflush(stdin) se você tiver em windows; isso limpa o buffer do teclado
 
if (op=="S") troca por if(strcomp("S", &op));

você tem que dar 

#include <string.h>

 

aí nesse if você incrementa soma1

 

ainda, soma1 e a matriz talvez devam ser ambas int ou ambas float, nao diferentes

 

aqui funcionou, tenta ai e avisa qualquer coisa

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By pachecok
      Estou iniciando em programação e tenho um trabalho em C que devo:
       
      Construir um programa que leia uma matriz 7x7 de inteiros.
      Após a leitura, calcular o somatório apenas dos elementos abaixo destacados da matriz lida.
      Mostre, os elementos destacados e o somatório.
       
      A soma deve ser entre as posições da matriz refentes a imagem em anexo. 
      É esta a dificuldade que eu encontrei, não sei os passos para realizar esta soma em específico então provavelmente a minha tentativa abaixo foi bizarra. 
       
      Alguém poderia me ajudar? Agradeço desde já. 
       
      #include<stdio.h> #include<conio.h> #define linha 7 #define coluna 7 int main (void ) { int i, j, matriz[linha][coluna], result, soma; printf ("\nDigite valor para os elementos da matriz\n\n"); for ( i=0; i<linha; i++ ){ for ( j=0; j<coluna; j++ ){ printf ("\nElemento[%d][%d] = ", i, j); scanf ("%d", &matriz[ i ][ j ]); } } for ( i=0; i<linha; i++ ){ for ( j=0; j<coluna; j++ ){ printf ("%i", matriz[i][j]); } printf("\n"); } for ( i=0; i<linha; i++ ){ for ( j=0; j<coluna; j++ ){ result=result+matriz[i][j]; } } for ( i=0; i<linha; i++ ){ for ( j=0; j<coluna; j++ ){ soma=soma+matriz[3][3]+matriz[4][2]+matriz[4][3]+matriz[4][4]+matriz[5][1]+matriz[5][2]+matriz[5][3]+matriz[5][4]+matriz[5][5]+matriz[6][0]+matriz[6][1]+matriz[6][2]+matriz[6][3]+matriz[6][4]+matriz[6][5]+matriz[6][6]; } } printf("\n\nA soma de todos valores da matriz: %d\n", result); printf("\n\nA soma dos valores solicitados: %d\n", soma); }  

    • By JoaoV-26
      olá,
       
      Eu preciso fazer uma matriz 7x7 que imprima caractere 'x' e 'o' porém o x precisar ser nas duas diagonais, fazer a matriz e imprimir o x em uma diagonal eu consegui porém não estou conseguindo de jeito nenhum imprimir na outra diagonal, a matriz precisa sair assim: 
       
      x o o o o o x
      o x o o o x o
      o o x o x o o 
      o o o x o o o
      o o x o x o o
      o x o o o x o
      x o o o o o x
       
      a minha está saindo assim (foto em anexo)
       
      Meu código:

       
      #include<stdio.h> int main(){          int i, j;     char str[2]="x", str1[2]="o";                for(i=1; i<=7; i++){         for(j=1;j<=7; j++)              if(i+j == 7+1){                      printf("%s", str);                      }else                      printf("%s", str1);                      printf("\n");          }      } Alguém pode me ajudar, como faço para outra diagonal sair 'x' também ?????

    • By eliezertradutor
      Pessoal estou com problemas ao fazer um programa para calcular a media de duas notas. Segue o codigo:

      int main(int argc, char *argv[]) {
          float nota1,nota2, media;
          printf ("Digite a primeira nota");
          scanf ("%d", &nota1);
          do {
              printf ("digite 1 como nota\n");
              scanf ("%d", &nota1);
          } while (nota1==0);
          if (nota1 !=0)
          {
              printf ("digite a nota 2\n");
              scanf ("%d", &nota2);
              
          }
              media=(nota1+nota2)/2;
              printf ("a media eh %d.2\n ",media);
          return 0;
          
          
          
      }
      Ele compila legal e roda. Só que aparece a mensgem "Digite 1 como nota que só deveria aparecer quando o usuário digitasse 0 (Zero).
        a ideia é que o usuario nunca possa registrar zero como nota, no minimo 1.
    • By JurisCode
      Eu tenho um problema de CSS que está me queimando a pestana.
       
      Peguei uma template com um CSS que é verdadeiro ninho de rato, mas de boa, decidi colocar todos os tributos css na própria tag do form. Deu certo em parte porque os campos ficaram do tamanho, cor e outros atributos, mas essas duas caixinhas, nem com todo o espaço do mundo eu consegui colocar elas na mesma linha:
      <div style="display: visible; color: #FFFFFF; border: none; background: #3C3C3C; width: 100%; white-space:nowrap;"> <center>     <input type="text" style="width:120px; height: 20px; padding:1px 1px; background:#DDDDDD; color:#3C3C3C; margin: 0px 0px 0px 0px;"> <input type="password" style="width:120px; height: 20px; padding:1px 1px; background:#DDDDDD; color:#3C3C3C; margin: 0px 0px 0px 0px;"> </center>  </div> nada de mais, em qqr outra página fica em uma única linha, mas nesta página não. Como que anula isso. Nem o nowrap deu jeito.
    • By mpcarvalho
      Possuo pouco conhecimento em JS, então gostaria de solicitar uma ajuda com um script que montei para resgatar imagens de produtos de um determinado site/ecommerce utilizando o EAN do produto.
       
      No código abaixo eu passo via form alguns parametros como a URL do site onde quero pesquisar a imagem com "/" e na sequência o campo EAN com todos os códigos de barra que quero pesquisar separados por "," e por ultimo a extensão do arquivo de acordo com a extensão que o site em questão utiliza, jpg ou png. No final tudo será exibido na div dl_imgs e ai então eu posso dar um ctrl + s no meu navegador e salvar todas as imagens de uma vez. 
       
      O objetivo do FOR é retornar imagem por imagem utilizando os parametros URL + EAN + EXT. Ex: "ecommerce.com.br/imagens/000030201.png".
       
      O que acontece é que preencho o campo EAN com todos os códigos de barras que preciso separados por virgula, mas o script não consegue montar o array e me retorna algo parecido com isso: https://cdn-*******.*******.com.br/products/7896003703863,7897005100223,7897005101589,7896360210097,7896003703863,7897005100223,7897005101589
       
      Como podem ver me trás apenas uma imagem que não existe pois não separou os códigos de barra na matriz. Porem se eu copiar esses mesmos códigos e colocar direto na VAR MATRIZ, o script funciona. 
       
      Segue abaixo o script utilizado. Desde já agradeço!
       
      <script>
              function loadImgs(){
                /*--- Dados do formulário ---*/
                var dataform = document.forms[0] || document.forms['dados'];
                //var t = dataform.imgtotal.value;
                var url = dataform.url.value;
                var ext = dataform.ext.value;
                var ean = dataform.ean.value;
                dataform.buscar.disabled = true;
                  
                /*--- Gerar IMGS ---*/
                var div = document.getElementById('dl_imgs') || document.dl_imgs;
                div.innerHTML = "";

                novoArray = ean.split(',');
                var matriz = [novoArray];
                  
               for(var i=0; i<matriz.length; i++) {
                     div.innerHTML += '<img src="'+url+""+matriz+''+ext+'" />';
               }
      }
      </script>
       
      PS: Para melhorar ainda mais essa extração, eu gostaria de fazer isso fazendo um UPLOAD de um arquivo XLS contendo 2 colunas EAN e Nome produto, e no final exibir a imagem e abaixo o nome do produto, se alguém puder me dar uma luz de como fazer isso agradeço. Att;
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.