Ir ao conteúdo

Posts recomendados

Postado

Preciso criar um algoritmo que preencha uma matriz 2 x 4 com números inteiros, calcule e mostre:

·       A quantidade de elementos entre 10 e 20 em cada linha;

·       A média dos elementos pares da matriz.

Postado

@Moraes_27   matrizes são formadas por dois pares de  colchetes ,  e para preencher você pode usar dois loop's  para percorrer todas as colunas e linhas da matriz , faça comparações com if's , e depois que você fizer um código sobre esse exercício , poste ele aqui para ajudarmos  , caso precise de alguma correção .

Postado
6 minutos atrás, Moraes_27 disse:

A parte de montar a matriz eu ja entendi como fazer, mas a parte de mostrar os elementos de cada linha eu ja nao sei o que fazer

 

Você já escreveu algum programa? 

 

Ao montar a matriz vai ter que passar por todos os elementos, claro. Então deve ser o momento de somar os caras em uma variável e contar quantos estão entre 10 e 20. Depois você divide a soma por OITO e terá a popular média, e terá assim os 2 resultados

Postado

Oiih!

 

15 horas atrás, Moraes_27 disse:

Preciso criar um algoritmo [...].

 

Faltou o MAS, ... e depois as perguntas.

 

 

O que você Quer?

15 horas atrás, Moraes_27 disse:

Preciso criar um algoritmo que preencha uma matriz 2 x 4 com números inteiros, calcule e mostre:

·       A quantidade de elementos entre 10 e 20 em cada linha;

·       A média dos elementos pares da matriz.

 

Seu post é de um problema fácil, e para começar dê atenção aos verbos...: preencher, calcular e mostrar, que se relacionam com as operações básicas de um computador, ou fundamentos da computação: entrada, procedimento e saída

 

Um exemplo disso e a Função preencher(); A entrada é uma matriz e suas dimensões, e a saída é ela completa de inteiros. Para isso, é preciso saber o que é uma matriz? O que é número inteiro? E como digitar um inteiro no programa, uma ou mais vezes?

 

Qual parte do enunciado não consegue programar, qual a dúvida?

 

 

 

 

1 hora atrás, Moraes_27 disse:

a parte de montar a matriz eu ja entendi como fazer, mas a parte de mostrar os elementos de cada linha eu ja nao sei o que fazer

 

Mostrar a quantidade de elementos em cada linha e no intervalo é usa a decisão IF com operadores (<, >) para os intervalos, e determinar quais elementos estão dentro incrementando o vetor linha de quantidades. 

 

Sabe o que é IF? Loop? Vetor? Operador Relacional maior que é menor que...? Operador Lógicos (E, OU)? 

  • Curtir 1
Postado

Não sei onde estou errando. Os resultados ficam zerados quando dou a ordem de imprimir.

 

#include <stdio.h>
#include <stdlib.h>
int main() {
    char i, j, m[2][4];
    float media_pares;
    int soma=0, count=0, numeros_pares=0;
    int qntd_linha_1=0, qntd_linha_2=0;

    for (i = 0; i < 2; i++) {
        for (j = 0; j < 4; j++) {
            printf("Elemento[%d][%d] = ", i, j);
                      scanf("%d", &m[i][j]);
         }
     }
     for (i=0; i<2; i++) {
            for (j=0; j<4; j++){
         if(m[0][j] > 10 && m[0][j] <20);
            count++;
     }
    }printf("A quantidade de elementos entre 10 e 20 na linha 1 e:%d\n",qntd_linha_1);

        for (i=0; i<2; i++) {
            for (j=0; j<4; j++){
         if(m[1][j] > 10 && m[1][j] <20);
            count++;
     }
    }printf("A quantidade de elementos entre 10 e 20 na linha 2 e:%d\n",qntd_linha_2);

    for (i = 0; i < 2; i++) {
        for (j = 0; j < 4; j++) {
                numeros_pares= m[i][j]%2;
        }
    }
    printf("A media dos elementos pares e:%f\n",numeros_pares);
}

 

Postado

Cada linha tem j (de 0 até 3) colunas, são esses elementos que precisamos verificar se estão no intervalo e contar, depois que terminar uma linha, pode mostrar quantos estão no intervalo e começar tudo outra vez para a próxima linha.

 

São dois loops: uma Para as linhas outro Para as colunas. E uma decisão para verificar o intervalo e uma variável para contar.

for (i=0; i<2; i++) {
        for (j=0; j<4; j++){
                if(m[i][j] > 10 && m[i][j] < 20){
                        count++;
                }
        }
  //<< mostrar contar >>
}

 

  ****Não é somente na primeira linha ([0][j]) é em cada linha.

A média dos elementos pares também necessita percorrer toda a matriz, poderia até reaproveitar essa lógica que já existe, simplesmente acrescentando outra decisão abaixo para verificar os elementos pares e soma-los.

 

Decisão me refiro a instrução IF.

 

Com fim dessa estrutura tem mostrado todas as quantidades por linha, e já sai dela com a soma dos pares.

 

A verificação de par segue esta lógica:

if( numero % 2 == 0 ){
       // é par?
}

 

 

 

  • Curtir 1
  • Membro VIP
Postado

@Moraes_27, alguns pontos:

1# Sempre mantenha o código identado

Suma importância!

Essa identação pode ser feita a medida que vai criando o código... Não deve existir desculpas, simplesmente mantenha o código identado. Sempre!

Como sugestão de apoio, utilize um identador online qualquer, exemplo:

https://codebeautify.org/c-formatter-beautifier

Por padrão está 2 espaços, aí você muda para quanto quiser... como com "3 indent"...

 

Algumas IDEs também tem um recuros. Por exemplo o DevC++:

image.png

 


Aqui, também ajusta como quiser:


image.png

 

Por aí vai...importante que mantenha identado.

 


 

2# Se atente à semântica da coisa
A ideia básica aqui seria dar nomes sugestíveis a funcionalidade da coisa..

 

O caminho seria esse mesmo:

 

2 horas atrás, Moraes_27 disse:

    } printf("A quantidade de elementos entre 10 e 20 na linha 1 e:%d\n", qntd_linha_1);

 

 

 

Mas veja que na hora de contar você utilizou cont:

 

2 horas atrás, Moraes_27 disse:

   for (i = 0; i < 2; i++) {
      for (j = 0; j < 4; j++) {
         printf("Elemento[%d][%d] = ", i, j);
         scanf("%d", &m[i][j]);
      }
   }
   for (i=0; i<2; i++) {
      for (j=0; j<4; j++) {
         if(m[0][j] > 10 && m[0][j] <20);
         count++;
      }
   }

 


Consegue ver a estranheza da coisa?
 

Então, só de bater o olho (com o código identado) já veria que tem um problema aqui... Fica mais fácil associar as coisas. (Exibição x Contagem.)

 

Como poderá simplificar (vai ter um for dentro do outro, em vez de um monte de for separados), vai ter apenas uma variável... explicado abaixo.

 

Adendo: se for exibir a mensagem logo após contar, também só precisaria de uma variável, concorda? Se for exibir lá no final, aí sim.. precisaria de uma variável para cada contagem OU criaria um vetor ;)

 

 

 

3# Você pode fazer todo de uma vez só

Como sugerido pelo @mauro_b, num só loop já pode ir verificando cada linha. Segue um código baseado no dele:
 

for (i=0; i<2; i++) {
       qtd_entre_20_e_30 = 0;
  
       for (j=0; j<4; j++){
                if(m[i][j] > 10 && m[i][j] < 20){
                        qtd_entre_20_e_30++;
                }
        }
        //<< mostrar contar >>
}


 

Observe que a "mostração dos dados" está dentro do primeiro for, daí, para cada loop vai exibir as informações da linha i.
Adendo: você poderia descobrir testando, mas já adiantei que vai precisar zerar o contador a cada loop... (experimente não zerar)

 

 

4# Extra

A base da sua lógica de contagem de certo modo estaria boa, ou seja: poderia criar um for para cada linha, mas como é fácil perceber, é meio "pobre"... principalmente pois deixaria de aproveitar as facilidades do uso dessa matriz... pois fazendo assim, seria como se tivesse "3 vetores", em vez uma matriz só com 3 linhas. Oras! se posso acessar "cada linha" de uma vez só, para que separar?


Se fosse para fazer separado, teria apenas um for. Algo como:
 

count = 0;
for (j=0; j<4; j++) {
   if (m[0][j] > 10 && m[0][j] < 20)
      count++;
}
//<< mostrar contar >>

count = 0;
for (j=0; j<4; j++) {
   if(m[1][j] > 10 && m[1][j] < 20)
      count++;
}
//<< mostrar contar >>


ADENDO: não tem ";" depois do if...

Percebe como ficou ficou repetitivo? Seria só fazer algo como está no 3#.

 

  • Curtir 2
Postado

@Moraes_27     o resultado na hora de escrever está  saindo zerado por que você usou a variável qntd_linha_1 , quando seria o count ,  e essa parte ode verifica se estão  entre 10 e 20 , poderia ser assim  :

#define _CRT_SECURE_NO_WARNINGS  // para usar scanf e outras funções no visual studio
#include <stdio.h>
#include <stdlib.h>
int main() 
{
    int m[2][4];  // matriz de inteiro
    float media_pares;
    int soma = 0, count = 0, numeros_pares = 0;
    int qntd_linha_1 = 0, qntd_linha_2 = 0;

    for (int i = 0; i < 2; i++) 
    {
        for (int j = 0; j < 4; j++)
        {
            printf("Elemento[%d][%d] = ", i+1, j+1);
            scanf("%d", &m[i][j]); // está certo , usou as duas variaveis do loop
        }
    }
    for (int i = 0; i < 2; i++)
    {
        qntd_linha_1 = 0;
        for (int j = 0; j < 4; j++)
        {
            if (m[i][j] > 10 && m[0][j] < 20) // estava errado , usou apenas a variavel referente as colunas
            {                                 // e somando sempre na linha zero
                count++;
                qntd_linha_1++;
            }
        }
        printf("A quantidade de elementos entre 10 e 20 na linha %d eh : %d\n",i+1, qntd_linha_1); // o para ver a qtd em cada linha
    }                                                                                              // mas nao eh pedido no enunciado
    printf("\nA quantidade de elementos entre 10 e 20 na Matriz eh : %d\n", count);// escreve o total entre 10 e 20
    return 0;
}

 

Postado

A média dos elementos pares esta dando erro. Nao sei onde errei

 

#include <stdio.h>
#include <stdlib.h>
int main() {
    char i, j, m[2][4];
    int soma=0, count=0, soma_par=0, qntd_par=0;
    int qntd_linha_1=0, qntd_linha_2=0;
    float media_par;

    for (i = 0; i < 2; i++) {
        for (j = 0; j < 4; j++) {
            printf("Elemento[%d][%d] = ", i, j);
                      scanf("%d", &m[i][j]);
         }
     }
     for (i=0; i<2; i++) {
            count=0;

            for (j=0; j<4; j++){

         if(m[i][j] >= 10 && m[i][j] <=20) {

            count++;
}
            }

printf("A quantidade de elementos entre 10 e 20 na linha %d e:%d\n",i+1,  count);

    }

    for (i=0; i<2; i++) {
            count=0;

            for (j=0; j<4; j++){
        }
    if (m[i][j]%2 ==0) {
            soma_par+= m[i][j];
                qntd_par++;
    }
    }
     media_par = soma_par / qntd_par;
    printf("A media dos elementos pares e:%.2f\n",media_par);


}

Postado

@Moraes_27    creio que nesse caso , a média seria a porcentagem de números pares na matriz ,por exemplo se tem oito números pares então a média seria 50 por cento ,  e assim não precisa soma os números pares da matriz , não , basta a qtd e no final dividida por oito e multiplicado por cem 

for (i=0; i<2; i++)
{
    for (j=0; j<4; j++){
    {
        if ( m[i] [j] % 2 == 0 )
        {
          qntd_par++;
        }
    }
}
media_par = qntd_par / 8 * 100;
rintf("A media dos elementos pares eh : %.2f por cento\n",media_par);

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!