Ir ao conteúdo

Posts recomendados

Postado

Boa tarde! alguém pode me ajudar com esse exercício. "Desenvolva um programa para armazenar 15 números inteiros em um vetor e depois imprima uma mensagem informando se os números estão em ordem crescente ou não". Essa parte "imprimir uma mensagem informando se os números estão em ordem crescente ou não" eu não entendi! como colocar isso no algoritmo?

#include<stdio.h>
#include<stdlib.h>
#define MAX 15
 int main()
 
 {
 	int numeros[MAX];
 	 	int i;
 	 
	 printf("Digite os valores:\n");	
 	for(i=0; i<MAX; i++)
	 {
	   		scanf("%d", &numeros[i]);
 	}
 	
	 	 printf("\n====================\n");
	 printf("\n\nimprimindo todos valores \n");
		for (i=0; i<MAX; i++)
		{
			printf("%d - %d\n", i + 1 , numeros [i]);
		
	}
return 0;
 }
 

 

  • Obrigado 1
Postado

@darcio ramires      você preenche o vetor e ao mesmo tempo um segundo e um terceiro vetor do mesmo tamanho , e  depois usa um método de ordenação de vetores , como o mais fácil , bubllesort , para colocar os números do segundo vetor em ordem crescente e o terceiro em ordem decrescente ,  depois verifica o primeiro com o segundo e se algum número for diferente , então não está em ordem crescente , aí compara o terceiro com o primeiro e se algum número for diferente então não está em ordem decrescente , aí está então o primeiro vetor fora de ordem  , 

Postado

Com o artigo que li consegui fazer assim, mais ainda acho que está errado.

#include <stdlib.h>
#include <locale.h>
#include <string.h>
void imprimir();
int i, aux, troca, numero[15];
int main()
{
    setlocale(LC_ALL, "Portuguese");
    printf("\n--------------------------------------------");
    printf("\nInicializando o vetor");
    for(i=0; i<15; i++)
    {
        numero[i] = 0;
    }
    imprimir();
    printf("\n--------------------------------------------");
    printf("\nInserindo valores \n");
    for(i=0; i<15; i++)
    {
        printf("\n|Posição %d |Digite um número: \t", i);
        scanf("%d%*c",&numero[i]);
    }
    printf("\n--------------------------------------------");
    imprimir();
    printf("\n--------------------------------------------");
    printf("\nVetor em ordem crescente");
    troca = 1;
    while (troca == 1)
    {
        troca = 0;        
        for (i = 0; i <= 3; i++)
        {
            if (numero[i] > numero[i + 1])
            {
                troca = 1;
                aux = numero[i];
                numero[i] = numero[i + 1];
                numero[i + 1] = aux;
            }
        }
    }
    printf("\n--------------------------------------------");
    printf("\nValores ordenados");
    imprimir();
    printf("\n--------------------------------------------");
    printf("\nvetor em ordem decrescente");
    troca = 1;
    while (troca == 1)
    {
        troca = 0;        
        for (i = 0; i <= 3; i++)
        {
            if (numero[i] < numero[i + 1])
            {
                troca = 1;
                aux = numero[i];
                numero[i] = numero[i + 1];
                numero[i + 1] = aux;
            }
        }
    }
    printf("\n--------------------------------------------");
    printf("\nValores ordenados");
    imprimir();
    printf("\n--------------------------------------------");
  
}
    
 void imprimir()
{
    printf("\n--------------------------------------------");
    for (i=0; i<15; i++)
    {
        printf("\n|Posicao: %d | Número: %d|", i, numero[i]);
    }
}

 

  • Amei 1
Postado
2 horas atrás, darcio ramires disse:

"Desenvolva um programa para armazenar 15 números inteiros em um vetor e depois imprima uma mensagem informando se os números estão em ordem crescente ou não". Essa parte "imprimir uma mensagem informando se os números estão em ordem crescente ou não" eu não entendi! como colocar isso no algoritmo

 

 

Não há assim um "algoritmo" propriamente aqui. São dois  objetivos:

  • salvar os 15 números em um vetor, e o algoritmo é usar um contador para colocar um depois do outro nas posições do vetor.
     
  • "imprimir uma mensagem informando se os números estão em ordem crescente ou não" nada tem a ver com o vetor: é uma coisa transiente: se o vetor está em ordem crescente quer dizer que em nenhum momento durante a leitura apareceu um cara menor que o anterior. Só isso.

Então não precisa classificar o vetor ou de loops ou técnicas sofisticadas: a partir do segundo cara --- porque precisa de dois para comparar ---  você vai comparando o anterior com o número que acaba de ler. Se o número novo for menor que o anterior já tem sua resposta  e ela não vai mudar. Se o segundo número for menor que o primeiro é o que basta: não estão em ordem crescente. então você simplesmente marca em algum lugar, uma variável:

	int menor = 0;

por exemplo. E se encontrar um elemento maior que  anterior você faz

	menor = 1; 

só isso. Ao final da leitura os 15 elementos estão no vetor, então você mostra os 15 para provar que guardou. E se menor for zero quer dizer que estão em ordem crescente. Nada mais

  • Curtir 1
Postado

@darcio ramires      realmente essa ideia que postei não é a melhor mesmo não ,  e essa do @arfneto  seria melhor mesmo , então seu código poderia ser assim  :

#include<stdio.h>
#include<stdlib.h>
#define MAX 15
int main(){
    int numeros[MAX];
    int i,crescente=0,decrescente=0;;
    for(i=0; i<MAX; i++){
        printf("Digite o %d valore : ",i+1);
        scanf("%d", &numeros[i]);
        if( i ){
            if(numeros[i] > numeros[i-1])
            crescente++;
        else
            if(numeros[i] < numeros[i-1])
                decrescente++;
        }
    }
    if( crescente && ! decrescente )
        printf("O Vetor eh , Crescente !");
    else
        if( decrescente && ! crescente )
            printf("O Vetor eh , Decrescente !");
        else
            if( ! crescente && ! decrescente )
                printf("Todos Os Numeros Sao Iguais ! !");
            else
                printf("O Vetor esta Fora de Ordem !");
    printf("\n");
    printf("Crescente   %d\n",crescente);
    printf("Decrescente %d\n",decrescente);
    printf("\n\n\n");
    return 32768;
}

 

  • Obrigado 1
Postado
7 horas atrás, darcio ramires disse:

os números estão em ordem crescente ou não

 

@devair1010 pode ser que o autor tenha abreviado o enunciado, mas só o que tem lá é isso: ordenado ou não. Nada diz sobre estar em ordem decrescente.

 

 if( crescente && ! decrescente )
        printf("O Vetor eh , Crescente !");
    else
        if( decrescente && ! crescente )
            printf("O Vetor eh , Decrescente !");
        else
            if( ! crescente && ! decrescente )

Está certo de que isso faz sentido?

 

As duas condições são irreversíveis. E o fato de serem eventualmente todos iguais é irrelevante.

 

Ex: 31 2 3 2 3 4 5 6 7 8 9 10 11 11 11 Depois de 3 números já se sabe que não estão nem ordem crescente nem decrescente.

 

E o contrário do contrário é a identidade... Não dá pra ser os dois então A e NOT A não devem ser possíveis... Não precisa somar em crescente E decrescente: basta mudar o valor uma única vez.

 

 

  • Obrigado 2
Postado

Assim deu certo! obrigado!!!!!!

#include<stdio.h>
#include<stdlib.h>
#include <locale.h>
#define MAX 3
int main(){
	setlocale(LC_ALL, "Portuguese");
    int numeros[MAX];
    int i,crescente=0,decrescente=0;;
    for(i=0; i<MAX; i++){
        printf("Digite o %d valore : ",i+1);
        scanf("%d", &numeros[i]);
        if( i ){
            if(numeros[i] > numeros[i-1])
            crescente++;
        else
            if(numeros[i] < numeros[i-1])
                decrescente++;
        }
    }
    if( crescente && ! decrescente )
        printf("O Vetor eh , Crescente !");
    else
        if( decrescente && ! crescente )
            printf("O Vetor não eh , Crescente !");
        
    return 0;
}

 

adicionado 35 minutos depois
29 minutos atrás, darcio ramires disse:

if( decrescente && ! crescente ) essa parte não precisa! só agora entendi o que @arfneto explicou. kkkkkkkk obrigado. 

 

44 minutos atrás, arfneto disse:

 

 

  • Curtir 1
  • Obrigado 1
Postado
1 hora atrás, darcio ramires disse:

Assim deu certo! obrigado

 

Ainda não deu certo...

 

Você precisa mostrar os 15 caras ao final para provar que guardou os valores direito...

adicionado 7 minutos depois

Fica pouco claro escrever assim

if( i ){
            if(numeros[i] > numeros[i-1])
            crescente++;
        else
            if(numeros[i] < numeros[i-1])
                decrescente++;
        }

É um efeito colateral de só poder comparar a partir do segundo. Fica mais claro ler o primeiro antes e iterar a partir do segundo explicitamente.  E você pode declarar o indexador dentro do próprio for.

 

 

  • Curtir 1
Postado

"Desenvolva um programa para armazenar 15 números inteiros em um vetor e depois imprima uma mensagem informando se os números estão em ordem crescente ou não". de @darcio ramires

 

Nesse caso use dois loops. 

  1. Prefiro ler o seu código com um loop exclusivo para gravação dos 15 valores.
  2. Outro com a tarefa que testa a ordem crescente do vetor.
SE (ecrescente (15, vetor) == 1) ENTAO ESCREVER "Crescente: Sim";
SENAO ESCREVER "Crescente: Nao";

 

PS.: Complexidade, neste nível, para muitos não importa.

 

  • Curtir 1
  • Obrigado 1

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!