Ir ao conteúdo

Posts recomendados

Postado
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(void)
{

    int  x, minimo, posmin , cont, i ;

    scanf:

        scanf("%i", &x);

    minimo = x;
    i = 1;
    cont = 0;
    posmin = 1;

    while (x =! 9999)

        { // começo do while
        if (x < minimo)

        { // começo do if
            minimo = x ;
            posmin = i;
            cont = cont + 1;
        } //fim do if

                                    // nessa parte preciso reatribuir X com um novo valor sem perder a demonstraçao dos resultados , como se fosse uma tabela se reescrevendo. 
                                    // estarei postando no mesmo post uma imagem do condigo escrito em PSEUDOCÓDIGO para que compreenda o que estou dizendo.
        printf("Qual valor de x?");
        i = i+1;

    } // fim do while

    printf("Minino e = %i \n",minimo);
    printf("Posicao minima = %i \n",posmin);
    printf("Numero de trocas = %i \n", cont);




}

image.png.dbf45566c2dbb7a7bae14935b4416e98.png

FOQUE NA TABELA , Primeiro numero digitado sera 2 e ele ira imprimir minimo = 2 pois é o menor escrito ate agora no programa foi o 2 , VARIAVEL i é a repetição crescente , POSMIN =1 é a posiçao em que a variavel foi descrita como a menor ate agora escrita no codigo a mesma esta sendo dita como assim recebendo o valor de i pois é a posiçao de quantidade de repétiçoes que levou para que fosse alterado a sua posiçao. e Cont é a quantidade de vezes que foi trocado o numero minimo. Entao eu nao consigo fazer a parte do CIRCULADO EM VERMELO, no código sem perder os dados antes salvos. Caso nao tenha entendido a duvida imagina que a tabela lateral esta em branco e voce ira digitar o primeiro numero e ele sera 2 e assim preenchera os outros campos, nao consigo fazer com que o proximo numero digitado SEJA ACUMULADO E IMPRIMIDO ABAIXO, so consigo fazer com que o primeiro resultado seja SOBRESCRITO.

  • Obrigado 1
Postado

@Luizuk    ali o que acontece é que o primeiro leia vai pegar um número e o enquanto vai se repetir se esse número for diferente de 9999 , e os valores de cont posmin e minimo só vão se alterar se o valor antes digitado for menor que o minimo , e como o X é igual ao minimo , ele não entra nesse se e assim não altera aquelas variáveis , e o segundo leia é exatamente para modificar os valores , sendo que os valores só  se alteram se for digitado valores cada vez menor até mesmo abaixo de zero , mas ele só vai sair desse loop quando for digitado o valor 9999 , e aí ele passa para imprimir o valor das variáveis  cont posmin e minimo . então no seu código só faltou você colocar o scanf no lugar daquele leia .   e seu código poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(void){
    int  x,minimo,posmin,cont,i;
    printf("Qual valor inicial de x ? ");
    scanf("%d",&x);
    minimo=x;
    i=1;
    cont=0;
    posmin=1;
    while( x != 9999 ){
        if(x < minimo){
            minimo = x ;
            posmin = i;
            cont++;
        }
        printf("Qual outro valor de   x ? ");
        scanf("%d",&x);
        i++;
    }
    printf("\n\n");
    printf("Minino %c --------= %d\n",130,minimo);
    printf("Posi%c%co m%cnimo ---= %d\n",135,198,161,posmin);
    printf("N%cmero de trocas -= %d\n",163,cont  );
    printf("\n\n\n");
    return 0;
}

 

Postado

Se precisa replicar o que está na tabela apenas precisa ler o novo valor de x dentro do loop. 

 

Entenda que esse programa não tem memória: a cada leitura os valores tem que ser imediatamente processados:

  • verifica se é o mínimo,
  • incrementa o número de sequência,
  • salva o o número de sequência e o valor se for o novo mínimo.

Note que em C tem valor, INT_MAX que você pode usar para facilitar. Se seu compilador não reconhecer o valor talvez deva usar 

#include "limits.h"

onde tem muitas constantes que podem ser úteis. MAX_INT é maior que qualquer número que o usuário pode digitar então pode usar

int minimo = INT_MAX;

e assim não ter que controlar se já leu ou não algo. Claro, tem um INT_MIN também :D 

 

Se não precisa replicar exatamente a tabela, pode usar um único loop e não precisaria repetir a leitura antes e depois do loop. Mais simples

 

Se precisar veja o conteúdo de limits.h

  • Curtir 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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!