Ir ao conteúdo

Posts recomendados

Postado

Alguém poderia me ajudar nesta questão, não estou conseguindo terminar ela 

QUESTÃO- Faça um programa em C que leia um vetor de 15 posições de
números inteiros e multiplique todos os elementos pelo maior valor do vetor.
Mostre o vetor após os cálculos. 

minha resolução está assim: (OBS:coloquei 5 só para testar)

include <stdio.h>
#define TAM 5
/*questão 1) Faça um programa em C que leia um vetor de 15 posições de
números inteiros e multiplique todos os elementos pelo maior valor do vetor.
Mostre o vetor após os cálculos. */
main(){
    int vet[TAM]={0}, multi=0;
    int i=0, maior_valor=0;
    //float multi={0.0};

    for(i=0; i<5;i++){
        printf("Insira os valores do vetor-\n");
        scanf("%d", &vet[i]);
    }
    for(i=0; i<5;i++){
        if(vet[i]>maior_valor){
            maior_valor=vet[i];
        }
    }
    system("cls");
    for(i=0; i<5;i++){
         multi=maior_valor*vet[i];
    
    }
   


}

 

  • Amei 1
Postado

@luhowl No último loop está apenas atribuindo o produto do maior por cada posição do vetor. No fim a variável multi vai acabar ficando só com o cálculo do último elemento. Se quer multiplicar cada elemento pelo maior, faça o cálculo para todos os elementos, p.ex,

 

for(int i = 0; i < MAX; i += 1){
    vet[i] *= maior_valor;
}

 

O segundo loop não é necessário, você pode pegar o maior valor no primeiro onde faz os inputs.

  • Curtir 1
  • Obrigado 1
Postado

@luhowl      seu código está Quase completo , mas esse terceiro Loop  não precisa dele como bem Disse   @Midori   ,   e creio também que o enunciado  quer que os números após serem Multiplicados pelo maior deles , também sejam colocados os resultados desses valores de volta no mesmo vetor nas respectivas posições  novamente ,  e para fazer uma validação de modo a não haver bug na hora de digitar os valores que são do tipo inteiro ,  e se for digitado uma letra , use a função  fgets , que pega uma string que pode ter qualquer caractere e  converta essa string para int usando a função  atoi ,  e seu código ficou assim  :

#define     _WIN32_WINNT 0x600
#define     _h GetStdHandle(STD_OUTPUT_HANDLE)
#include    <stdio.h>
#include    <stdlib.h>
#include    <windows.h>
#include    <conio.h>
#include    <string.h>
#include    <limits.h> /// limites valor de tipos
#define     TAM 5
#define     cls system("cls||clear");
/// questão 1) Faça um programa em C que leia um vetor
/// de 15 posições de números inteiros e multiplique
/// todos os elementos pelo maior valor do vetor.
/// Mostre o vetor após os cálculos .
int main()
{
  int vet[TAM]    = {0};
  int multi       =  0 ;
  int i           =  0 ;
  char ax[5]      = "" ;
  int maior_valor = INT_MIN; /// Macro da Biblioteca limits.h
  int cor_letra, cor_fundo;
  CONSOLE_SCREEN_BUFFER_INFO c;
  if( GetConsoleScreenBufferInfo( _h , & c )        )
  {
    cor_letra = (  c.wAttributes & 0xFF    )        & 0x0F;
    cor_fundo = ( (c.wAttributes & 0xFF    ) >> 4 ) & 0x0F;
  }
  SetConsoleTextAttribute( _h , 12 + ( 15 << 4 ) );
  printf("   Insira os valores do vetor-   \n");
  SetConsoleTextAttribute( _h , 11 + ( 0 << 4 ) );
  for( int i=0; i<5; i++)  /// alguns compiladores aceitam criar a variAvel dentro do loop
  {
    printf(" %d%c Valor " , i+1 , 167 );
    fgets( ax , sizeof( ax ) , stdin );
    vet[i] = atoi( ax );
    if( maior_valor < vet[i] )
      maior_valor = vet[i];
  }
  cls /// para Limpar a tela em Windows e Linux
  SetConsoleTextAttribute( _h , 12 + ( 10 << 4 ) );
  printf("  aqui estão os Vetor Mutiplicado:  \n");
  SetConsoleTextAttribute( _h , 14 + ( 0 << 4 ) );
  for( int i=0; i<5; i++ )
  {
    vet[i] *= maior_valor;
    printf("%d%c PosiCAo = %3d\n", i+1 , 167 , vet[i] );
  }
  SetConsoleTextAttribute( _h , cor_letra + ( cor_fundo << 4 ) ); /// funCAo da API do Windows
  return 0;   /// a funCAo main eh do tipo int e retorna algum valor
}

 

  • 1 ano depois...
Postado

Boa Noite!

 

Para mim, já falha no começo, isso mesmo no LEIA... porque do jeitinho fofo que está ..., talvez o programa não leia o dado inteiro (15). 

 

O programa escreve:

Insira os valores do vetor-
_

 

O enunciado diz: 15 posições de números inteiro

Alguém Entra

Insira os valores do vetor
034 0xff 0 9 8 7 6 5 4 3 2 1 20 22 02

 

Sim, meu bem! Acima, alguém entrou com seus 15 números no escaneamento, que apesar de enunciar inteiro, extrai em decimal, sendo 1/3 das bases que normalmente se estuda antes dessa categoria de exercício.

 

Não chegará ao ranqueamento, mas se chegar terá resultado duvidoso, né? Daí adicione ao fato `maior_valor` que matou o sentido de usar matriz no exercício que é de matrizes - cultura deste fórum (CdH)

 

Enfim, com uns ajustes até compila:

 

c'11 - gcc'11.4

#include <stdio.h>

int main ( ) 
{
  int vet [15]= {0};
  int i= 0 , maior= 0;
/* isto ler inteiro (15) */
  printf("Insira valores do vetor (15)\n");
  for(i= 0 ; i<15 ; i++)
    {
    int r= scanf ("%i", &vet[i]);
    if (EOF==r) return 1;
    if (1==r) continue;
    getchar ();
    --i;
    }
/* isto ranquea o maior */
  for (i= 0 ; i<15 ; i++)
    if (vet[maior]<vet[i]) maior= i;
/* isto faz o produto  */
  for (i= 0 ; i<15 ; i++) vet[i]*= vet[maior];
/* isto escreve int... */
  for (i= 0 ; i<15 ; i++) printf ("%i ",vet[i]);
  putchar ('\n');
}

 

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!