Ir ao conteúdo
  • Cadastre-se

C Como mostrar a posição de um numero em C sendo ele o Maior e Menor numero


Posts recomendados

Preciso de ajuda para fazer esse programa

Faça um programa em C que leia 20 números inteiros e calcule a média, o maior elemento e o menor
elemento do vetor, bem como as posições que se encontram o maior e menor elemento.

 

O meu programa acabou ficando em um loop infinito e não estou conseguindo arrumar, quem puder me orientar eu agradeço

codigo:

 

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

int main ()
{
    int i,v[19],me=0,m=100000,p,M=0,P;
    for(i=0;1<20;i++)
    {
        printf("digite o %d valor",i);
        scanf("%d",&v);
        me+=v;
        if (v>m)
        {
            v=m;
            p=i;
        }
        if (v<M)
        {
             v=M;
             P=i;
        }
    }
    me/=20;
    printf("a media do vetor ficou %d \n o maior numero no vetor e %d na posicao %d \n e o menor foi %d na posicao %d",me,M,P,m,p);
}

 

Link para o comentário
Compartilhar em outros sites

Abri o eclipse e criei este exemplo
falta achar as médias, para isto
basta somar os elementos do vetor
e dividir pelo total de elementos
inseridos. Não testei isto direito
mas acho que está funcionando.

 

//Pesquisa em vetor e mostra o maior e menor número
//Mostra a posição onde se encontra
#include <stdio.h>
#include <conio.h>
#define TAM 100

int main ( void ) {
	int num, i, vt [ TAM ];
	int maior, menor;
	printf ( "Precisa inserir quantos números? : " );
	scanf ( "%d", &num );
	for ( i = 0; i < num; i++ ) {
		printf ( "Insira o %dº: ", i + 1 );
		scanf ( "%d", &vt [ i ] );
	}

	maior = vt [ 0 ];
	for ( i = 1; i < num; i++ ) {
		if ( vt [ i ] > maior )
			maior = vt [ i ];
	}
	printf ( "\nO maior número é ==> %d ", maior );
	getche ( );

	for ( i = 0; i < num && vt [ i ] != maior; i++ )
   ;
	printf ( "\n" );
	if ( maior > num )
		printf ( "%d está na posição %d de vetor\n", maior, i );
	else
		printf ( "%d não pertence ao vetor\n", maior );

	menor = vt [ 0 ];
	for ( i = 1; i < num; i++ ) {
		if ( vt [ i ] < menor )
			menor = vt [ i ];
	}
	printf ( "\nO menor número é ==> %d ", menor );
	getche ( );

	for ( i = 0; i < num && vt [ i ] != menor; i++ )
    ;
	printf ( "\n" );
	if ( i < num )
		printf ( "%d está na posição %d do vetor\n", menor, i );
	else
		printf ( "%d não pertence ao vetor\n", menor );
	getche ( );
	return 0;
}

 

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

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

void imprimirVetor(int *vetor, int quantidade);

int main() {
    int quantidade = 20;
    int maior = INT_MIN;
    int menor = INT_MAX;
    int posicaoMaior = 0;
    int posicaoMenor = 0;

    int vetor[quantidade];
    
    double media = 0.0;
    
    for (int i = 0; i < quantidade; i++) {
        printf("Digite o valor [ %i de %i ]: ", (i + 1), quantidade);
        scanf(" %i%*c", &vetor[i]);

        media += vetor[i];

        if (vetor[i] > maior) {
            maior = vetor[i];
            posicaoMaior = i;
        }

        if (vetor[i] < menor) {
            menor = vetor[i];
            posicaoMenor = i;
        }
    }

    media /= quantidade;

    printf("-------------------------------- \n");
    printf("Vetor: ");
    imprimirVetor(vetor, quantidade);
    printf("Maior: %i (Posicao: %i) \n", maior, posicaoMaior);
    printf("Menor: %i (Posicao: %i) \n", menor, posicaoMenor);
    printf("Media: %.2f \n", media);
    printf("-------------------------------- \n");

    return EXIT_SUCCESS;
}

void imprimirVetor(int *vetor, int quantidade) {
    printf("[ ");

    for (int i = 0; i < quantidade; ++i) {
        printf("%i", vetor[i]);

        if (i + 1 < quantidade) {
            printf(", ");
        }
    }

    printf(" ] \n");
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Faça um programa em C que leia 20 números inteiros e calcule a média, o maior elemento e o menor
elemento do vetor, bem como as posições que se encontram o maior e menor elemento

 

Pois é: você precisa de 5 informações. Só isso.

  1. posição do menor
  2. valor do menor
  3. posição do maior
  4. valor do maior
  5. média

Seu programa não está bom. :( Veja o loop:

    for (i = 0; 1 < 20; i++)
    {
        printf("digite o %d valor", i);
        scanf("%d", &v);
        me += v;
        if (v > m)
        {
            v = m;
            p = i;
        }
        if (v < M)
        {
            v = M;
            P = i;
        }
    }

Todas as referências a v dentro do loop são para o particular v apontado por i. Essa é a razão de existir um vetor.

 

Citação

Então você deveria usar v [ i ] e não v.

 

O irônico nisso tudo é que você não precisava do vetor v para nada. Assim como os outros exemplos, parece opinião geral que isso é importante. mas não é. Pense nos 5 objetivos do problema, resolva e passe adiante.

 

 

Imagine que seu programa apenas escreva o resultado na tela. Só o que foi pedido: ler VINTE números inteiros e mostrar os 5 resultados.

 

A saída poderia ser assim

Menor valor: -10 na posicao 0
Maior valor: 9 na posicao 19
o valor medio foi  -0.50

Para um vetor com os valores de -10 a 9... Lógico que são vinte. Não há opção.

 

Sim, não se iluda: números inteiros podem ser negativos e vai ser o primeiro teste que seu professor vai fazer ;)

Seu programa falha porque usou o menor como 0. E o maior como 100.000. Porque fez isso?

 

Até entendo esquecer que está escrito inteiros, mas 100.000? 

 

O normal nesses casos é usar INT_MIN para inicializar o máximo e INT_MAX para inicializar o mínimo. C sempre tem essas constantes à disposição. Mas você não precisa saber. Podia pesquisar numa tabela, no manual, num livro.

 

Veja o exemplo acima de @AdrianoSiqueira que usa essas constantes

 

Veja uma possível solução, bem curtinha

#define _CRT_SECURE_NO_WARNINGS

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

int main()
{
    int maior_v = INT_MIN; // 5 valores
    int maior_p = 0; // para 5 respostas
    int menor_v = INT_MAX;
    int menor_p = 0;
    int soma = 0;

    for (int i = 0; i < 20; i++)
    {
        int v;
        //printf("[%2d] digite o valor: ", i+1);
        scanf("%d*[^\n]", &v);
        soma = soma + v;
        if (v < menor_v)
        {
            menor_p = i;
            menor_v = v;
        };

        if (v > maior_v)
        {
            maior_p = i;
            maior_v = v;
        }; // if
    };  // for()
    printf("Menor valor: %d na posicao %d\n", menor_v, menor_p);
    printf("Maior valor: %d na posicao %d\n", maior_v, maior_p);
    printf("o valor medio foi %6.2f\n", (float)(soma)/(20.));
};  // main()

Vê como pode ser bem mais simples?

 

Como testar um programa desses sem perder tempo? Primeiro, troque o 20 por um 3 ou 4 e tire o comentário do printf, assim pode rodar com mais conforto no modo interativo. Mas não é esperto também. Demora muito. Evite isso ao máximo. E nesse caso nem precisa.

 

Como fazer então?

 

Edite um arquivo de texto na sua máquina, digamos entrada.txt, e coloque os dados lá, um valor por linha. Só isso.

Imagine que seu programa se chama teste. Veja no windows uma pasta com o programa e o arquivo


06/04/2020  00:40    <DIR>          .
06/04/2020  00:40    <DIR>          ..
06/04/2020  00:28                75 entrada.txt
06/04/2020  00:17            39.936 teste.exe
               2 arquivo(s)         40.011 bytes
               2 pasta(s)   89.050.742.784 bytes disponíveis

Veja o conteudo de entrada.txt

C:\Users\toninho\source\repos\ConsoleApplication9\Debug\coisa>type entrada.txt
-10
-9
-8
-7
-6
-5
-4
-3
-2
-1
0
1
2
3
4
5
6
7
8
9

Pois é. Aí você pode rodar o programa com qualquer arquivo de teste, editando por exemplo no bloco de notas...

 

Veja

...
6
7
8
9

C:\Users\toninho\source\repos\ConsoleApplication9\Debug\coisa>teste < entrada.txt
Menor valor: -10 na posicao 0
Maior valor: 9 na posicao 19
o valor medio foi  -0.50

O sistema pega os valores de entrada.txt e usa para alimentar a leitura dos vinte itens do seu programa. E você pode ir alterando em outra janela e rodando de novo e testando muito mais rápido...

 

Citação

teste < arquivo.txt


Pense nisso.

 

5 horas atrás, Main.cpp disse:

Não testei isto direito
mas acho que está funcionando

 

Hum... Não está

 Você usou 5 loops para definir as respostas. E salvou o vetor, que não precisava. Mas já que salvou porque não usou o índice do menor para mostrar o menor e o índice do maior para mostrar o maior? Leu todo o vetor uma 4 e uma 5a vez. E irônicamente errou no final do último loop, que não precisava ter escrito.
 

E usar esse #include para conio.h --- derivada da própria conio.h do turbo C do final dos 80 --- apenas para usar getche() talvez não fosse importante. Hey, eu ainda tenho os diskettes. E o manual eu acho. Eu comprei isso :D

E esse tipo de loop é ruim de ler num forum para iniciantes, eu acho:
 

        for (i = 0; i < num && vt[i] != maior; i++);

 

E está errado aqui:

for ( i = 0; i < num && vt [ i ] != maior; i++ )
	;
	
    if ( maior > num )
		printf ( "%d está na posição %d de vetor\n", maior, i );
	else
		printf ( "%d não pertence ao vetor\n", maior );


num é o número de elementos, e maior seria o maior deles. Não faz sentido comparar essas coisas. O que você queria era

	for (i = 0; i < num && vt[i] != maior; i++);
	if (i < num)
		printf("%d está na posição %d de vetor\n", maior, i);
	else
		printf("%d não pertence ao vetor\n", maior);

Para ver se o loop passou por todo o vetor...

 

Seu programa pode ser corrigido por um outro programa, na escola, que apresenta vetores de teste e avalia os resultados,

então coisas como acentos na tela, prompts e pausas não são úteis e podem te atrapalhar, como de fato atrapalhou. 

 

Veja a saída dele em meu computador:

Precisa inserir quantos n·meros? : 4
Insira o 1║: 1
Insira o 2║: 2
Insira o 3║: 3
Insira o 4║: 4

O maior n·mero Ú ==> 4
O menor n·mero Ú ==> 1
1 estß na posiþÒo 0 do vetor
4 estß na posiþÒo 3 de vetor

Num computador comum, sem nenhuma configuração especial, como o que usei. Não precisava de prompt nenhum, mas como usou e usou esses caracteres acentuados todos, a saída pode sair meio zoada em muitos terminais...

 

A Apple diria que o usuário (eu) não soube usar o produto :) 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

6 horas atrás, arfneto disse:

Faça um programa em C que leia 20 números inteiros e calcule a média, o maior elemento e o menor
elemento do vetor, bem como as posições que se encontram o maior e menor elemento

 

Pois é: você precisa de 5 informações. Só isso.

  1. posição do menor
  2. valor do menor
  3. posição do maior
  4. valor do maior
  5. média

Seu programa não está bom. :( Veja o loop:


    for (i = 0; 1 < 20; i++)
    {
        printf("digite o %d valor", i);
        scanf("%d", &v);
        me += v;
        if (v > m)
        {
            v = m;
            p = i;
        }
        if (v < M)
        {
            v = M;
            P = i;
        }
    }

Todas as referências a v dentro do loop são para o particular v apontado por i. Essa é a razão de existir um vetor.

 

 

O irônico nisso tudo é que você não precisava do vetor v para nada. Assim como os outros exemplos, parece opinião geral que isso é importante. mas não é. Pense nos 5 objetivos do problema, resolva e passe adiante.

 

 

Imagine que seu programa apenas escreva o resultado na tela. Só o que foi pedido: ler VINTE números inteiros e mostrar os 5 resultados.

 

A saída poderia ser assim


Menor valor: -10 na posicao 0
Maior valor: 9 na posicao 19
o valor medio foi  -0.50

Para um vetor com os valores de -10 a 9... Lógico que são vinte. Não há opção.

 

Sim, não se iluda: números inteiros podem ser negativos e vai ser o primeiro teste que seu professor vai fazer ;)

Seu programa falha porque usou o menor como 0. E o maior como 100.000. Porque fez isso?

 

Até entendo esquecer que está escrito inteiros, mas 100.000? 

 

O normal nesses casos é usar INT_MIN para inicializar o máximo e INT_MAX para inicializar o mínimo. C sempre tem essas constantes à disposição. Mas você não precisa saber. Podia pesquisar numa tabela, no manual, num livro.

 

Veja o exemplo acima de @AdrianoSiqueira que usa essas constantes

 

Veja uma possível solução, bem curtinha


#define _CRT_SECURE_NO_WARNINGS

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

int main()
{
    int maior_v = INT_MIN; // 5 valores
    int maior_p = 0; // para 5 respostas
    int menor_v = INT_MAX;
    int menor_p = 0;
    int soma = 0;

    for (int i = 0; i < 20; i++)
    {
        int v;
        //printf("[%2d] digite o valor: ", i+1);
        scanf("%d*[^\n]", &v);
        soma = soma + v;
        if (v < menor_v)
        {
            menor_p = i;
            menor_v = v;
        };

        if (v > maior_v)
        {
            maior_p = i;
            maior_v = v;
        }; // if
    };  // for()
    printf("Menor valor: %d na posicao %d\n", menor_v, menor_p);
    printf("Maior valor: %d na posicao %d\n", maior_v, maior_p);
    printf("o valor medio foi %6.2f\n", (float)(soma)/(20.));
};  // main()

Vê como pode ser bem mais simples?

 

Como testar um programa desses sem perder tempo? Primeiro, troque o 20 por um 3 ou 4 e tire o comentário do printf, assim pode rodar com mais conforto no modo interativo. Mas não é esperto também. Demora muito. Evite isso ao máximo. E nesse caso nem precisa.

 

Como fazer então?

 

Edite um arquivo de texto na sua máquina, digamos entrada.txt, e coloque os dados lá, um valor por linha. Só isso.

Imagine que seu programa se chama teste. Veja no windows uma pasta com o programa e o arquivo



06/04/2020  00:40    <DIR>          .
06/04/2020  00:40    <DIR>          ..
06/04/2020  00:28                75 entrada.txt
06/04/2020  00:17            39.936 teste.exe
               2 arquivo(s)         40.011 bytes
               2 pasta(s)   89.050.742.784 bytes disponíveis

Veja o conteudo de entrada.txt


C:\Users\toninho\source\repos\ConsoleApplication9\Debug\coisa>type entrada.txt
-10
-9
-8
-7
-6
-5
-4
-3
-2
-1
0
1
2
3
4
5
6
7
8
9

Pois é. Aí você pode rodar o programa com qualquer arquivo de teste, editando por exemplo no bloco de notas...

 

Veja


...
6
7
8
9

C:\Users\toninho\source\repos\ConsoleApplication9\Debug\coisa>teste < entrada.txt
Menor valor: -10 na posicao 0
Maior valor: 9 na posicao 19
o valor medio foi  -0.50

O sistema pega os valores de entrada.txt e usa para alimentar a leitura dos vinte itens do seu programa. E você pode ir alterando em outra janela e rodando de novo e testando muito mais rápido...

 


Pense nisso.

 

 

Hum... Não está

 Você usou 5 loops para definir as respostas. E salvou o vetor, que não precisava. Mas já que salvou porque não usou o índice do menor para mostrar o menor e o índice do maior para mostrar o maior? Leu todo o vetor uma 4 e uma 5a vez. E irônicamente errou no final do último loop, que não precisava ter escrito.
 

Também encontrei um erro e já corrigi,

testei no MinGw e no compilador da Embarcadero.

No Visual Studio não testei porque só o uso

para programar em C#.

Se ainda assim encontrar um erro me mostre a sequência

que usou para comprovar, mostrando também uma imagem

do programa em execução.

 

Sobre os acentos se o autor do tópico tivesse
perguntado apontaria para ele uma solução,
se caso estivesse usando windows como eu.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

6 horas atrás, Main.cpp disse:

Se ainda assim encontrar um erro me mostre a sequência

que usou para comprovar, mostrando também uma imagem

do programa em execução.

 

Sobre os acentos se o autor do tópico tivesse
perguntado apontaria para ele uma solução,
se caso estivesse usando windows como eu

 

Entendo


Note que não faz --- ou não deveria fazer --- diferença o compilador. Esse tipo de programa como mostrei acima pode ser testado com mais conforto usando apenas arquivos texto com as condições, e usando 

teste < t1.txt
teste < t2.txt

direto na linha  de comando ao invés de ficar preso ao IDE. Seria o jeito Unix de fazer, nos anos '80

 

A questão dos acentos é secundária, só comentei porque pode ser um constrangimento por exemplo o instrutor testar seu programa na sua frente e sair tudo zoado por causa de mensagens que nem estavam no enunciado. Esse tipo de programa muitas vezes é testado por um programa e não por uma pessoa então é mais uma razão para não escrever ou ler nada além do que está no enunciado.

 

Sobre os caracteres estranhos: Eu não testei em terminais linux. Evito ao máximo sair de um contexto bem pequeno quando testo esses programas do forum. Me prometi usar apenas Windows em apenas uma máquina. E não usar muitas linguagens ou ambientes. :)

 

Como eu sempre digo aqui escrever na console é um inferno. Ler do teclado também.No caso do Windows você tem que considerar o problema do teclado, da codepage, do tipo de console que está abrindo, se o fonte selecionado é True Type ou não. Um inferno. Esse meu computador por exemplo não tem qualquer configuração especial. Apenas o sistema instalado. Sem mudar codepage para unicode --- 65001 --- por exemplo ou mesmo 1250 ou sei lá. Então programas como o que mostrou geralmente imprimem meio torto tudo que tenha acentos ou unicode. E o Windows usa 850. Mesmo o Windows em português.

 

Em algumas ocasiões eu mostrei aqui os passos para você usaria para se garantir --- um pouco --- em relação a isso em um programa sério, e eu disse claro que não vale a pena a menos de algum dinheiro ou uma arma apontada para você.

 

Em resumo é preciso ler o estado da console do usuário, a fonte, a codepage atual e as cores em uso, o ambiente do cara. E salvar isso. Aí você define o que seu programa precisa, mostra suas coisas e restaura na saída. Em geral você escreve duas rotinas que fazem e desfazem isso e simplesmente chama no início e no final de seus programas desse tipo.

 

Uma coisa frustante e irritante é quando você roda um programa de alguém em sua máquina e ele enche sua tela de cores e coisas, e ao final te deixa com o vídeo reverso, uma fonte diferente ou algo assim. Acho que entende. Programas devem ser transparentes e deixar tudo igualzinho. Mas em geral não é o caso.

 

6 horas atrás, Main.cpp disse:

No Visual Studio não testei porque só o uso

para programar em C#

 

Curioso isso, porque se tem esse ambiente instalado, o Visual Studio,  usar outro para outra linguagem é exatamente o contrário do que muitos procuram: o mesmo ambiente para várias linguagens, desenvolver, testar e manter seus repositórios de código.

 

Entendeu o que eu disse sobre seu programa usar 5 loops quando poderia usar apenas 1? E que poderia já que salvou o vetor de entrada no primeiro loop, no segundo e terceiro loop ter salvo a posição e já dito qual o maior ou menor sem varrer de novo o vetor para encontrar a mesma informação?

 

Viu no programa que eu mostrei que é possível usar um único loop?

 

 

adicionado 17 minutos depois

Uma referência histórica (off-topic eu sei):

 

ASCII é um código de 7bits apenas. Unicode tem perto de 1.2 milhão de caracteres. E no meio disso tem os programas que escrevem em terminais e leem de teclados.

 

Décadas atrás a IBM começou a usar os valores entre acima de 127 do ASCII e criou algo que ue acho era chamado Extended ASCII usando os valores de 127 pra cima. Era muito legal porque tinha caracteres que permitiam desenhar caixinhas com dois tipos de linha e caracteres que preenchiam o bloco de letra em várias densidades. Mas aí começaram a usar para caracteres regionais e se criou a tal codepage que permitia selecionar qual conjunto você queria usar. Na console do Windows use CHCP para saber qual está usando, ou chame de seu programa antes de tentar escrever algo que dependa disso.
 

Graças a Wikipedia um pedaço aqui na tela dessa tabela

image.thumb.png.3893a3a0d53ec0f0e588999956815c39.png

Então quando você usava um programa que dependia disso, por exemplo um sistema que mostrasse uma tabela no terminal e usasse esses caracteres para desenhar as bordas e separadores, você não ia deixar de se garantir que era essa a tabela em uso no terminal que estava rodando o programa...

Link para o comentário
Compartilhar em outros sites

49 minutos atrás, arfneto disse:

 

Entendo


Note que não faz --- ou não deveria fazer --- diferença o compilador. Esse tipo de programa como mostrei acima pode ser testado com mais conforto usando apenas arquivos texto com as condições, e usando 


teste < t1.txt
teste < t2.txt

direto na linha  de comando ao invés de ficar preso ao IDE. Seria o jeito Unix de fazer, nos anos '80

 

A questão dos acentos é secundária, só comentei porque pode ser um constrangimento por exemplo o instrutor testar seu programa na sua frente e sair tudo zoado por causa de mensagens que nem estavam no enunciado. Esse tipo de programa muitas vezes é testado por um programa e não por uma pessoa então é mais uma razão para não escrever ou ler nada além do que está no enunciado.

 

Sobre os caracteres estranhos: Eu não testei em terminais linux. Evito ao máximo sair de um contexto bem pequeno quando testo esses programas do forum. Me prometi usar apenas Windows em apenas uma máquina. E não usar muitas linguagens ou ambientes. :)

 

Como eu sempre digo aqui escrever na console é um inferno. Ler do teclado também.No caso do Windows você tem que considerar o problema do teclado, da codepage, do tipo de console que está abrindo, se o fonte selecionado é True Type ou não. Um inferno. Esse meu computador por exemplo não tem qualquer configuração especial. Apenas o sistema instalado. Sem mudar codepage para unicode --- 65001 --- por exemplo ou mesmo 1250 ou sei lá. Então programas como o que mostrou geralmente imprimem meio torto tudo que tenha acentos ou unicode. E o Windows usa 850. Mesmo o Windows em português.

 

Em algumas ocasiões eu mostrei aqui os passos para você usaria para se garantir --- um pouco --- em relação a isso em um programa sério, e eu disse claro que não vale a pena a menos de algum dinheiro ou uma arma apontada para você.

 

Em resumo é preciso ler o estado da console do usuário, a fonte, a codepage atual e as cores em uso, o ambiente do cara. E salvar isso. Aí você define o que seu programa precisa, mostra suas coisas e restaura na saída. Em geral você escreve duas rotinas que fazem e desfazem isso e simplesmente chama no início e no final de seus programas desse tipo.

 

Uma coisa frustante e irritante é quando você roda um programa de alguém em sua máquina e ele enche sua tela de cores e coisas, e ao final te deixa com o vídeo reverso, uma fonte diferente ou algo assim. Acho que entende. Programas devem ser transparentes e deixar tudo igualzinho. Mas em geral não é o caso.

 

 

Curioso isso, porque se tem esse ambiente instalado, o Visual Studio,  usar outro para outra linguagem é exatamente o contrário do que muitos procuram: o mesmo ambiente para várias linguagens, desenvolver, testar e manter seus repositórios de código.

 

Entendeu o que eu disse sobre seu programa usar 5 loops quando poderia usar apenas 1? E que poderia já que salvou o vetor de entrada no primeiro loop, no segundo e terceiro loop ter salvo a posição e já dito qual o maior ou menor sem varrer de novo o vetor para encontrar a mesma informação?

 

Viu no programa que eu mostrei que é possível usar um único loop?

 

 

adicionado 17 minutos depois

Uma referência histórica (off-topic eu sei):

 

ASCII é um código de 7bits apenas. Unicode tem perto de 1.2 milhão de caracteres. E no meio disso tem os programas que escrevem em terminais e leem de teclados.

 

Décadas atrás a IBM começou a usar os valores entre acima de 127 do ASCII e criou algo que ue acho era chamado Extended ASCII usando os valores de 127 pra cima. Era muito legal porque tinha caracteres que permitiam desenhar caixinhas com dois tipos de linha e caracteres que preenchiam o bloco de letra em várias densidades. Mas aí começaram a usar para caracteres regionais e se criou a tal codepage que permitia selecionar qual conjunto você queria usar. Na console do Windows use CHCP para saber qual está usando, ou chame de seu programa antes de tentar escrever algo que dependa disso.
 

Graças a Wikipedia um pedaço aqui na tela dessa tabela

image.thumb.png.3893a3a0d53ec0f0e588999956815c39.png

Então quando você usava um programa que dependia disso, por exemplo um sistema que mostrasse uma tabela no terminal e usasse esses caracteres para desenhar as bordas e separadores, você não ia deixar de se garantir que era essa a tabela em uso no terminal que estava rodando o programa...

 

 

 

 

Muito obrigado pelo alerta do erro.
Corrigi o código dentro de minha lógica, inseri também
como teste um arquivo de texto contendo 100 números
embaralhados, e o programa funcionou perfeitamente.
Sobre os vários loops, quero que entenda que programei
com minha cabeça, se você fez isto com apenas dois,
meus parabéns, na verdade nem tinha testado o programa
totalmente, e com os poucos números entre 1 e 9
que testei funcionou corretamente, mas depois que você
me disse que tinha erro, fui verificar e realmente tinha.
Parabéns pela força que tem dado aos iniciantes aqui
do forum, e acho que deveria preparar um material de estudo,
quem sabe um ebook, ou um livro e colocar a disposição
de possa interessar, isto é só uma sugestão.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

8 minutos atrás, Main.cpp disse:

Sobre os vários loops, quero que entenda que programei
com minha cabeça, se você fez isto com apenas dois,
meus parabéns, na verdade nem tinha testado o programa
totalmente, e com os poucos números entre 1 e 9

 

Entendo. Note que basta UM loop e não é preciso sequer salvar o vetor.

Eu só insisti naquilo para tentar ressaltar o fato de que é essencial ler e executar o enunciado e às vezes fazer mais do que o que está lá pode até atrapalhar. Não era preciso salvar o vetor ou usar índices e tal.

 

Há sempre muitas maneiras de resolver problemas como esses.

 

11 minutos atrás, Main.cpp disse:

Parabéns pela força que tem dado aos iniciantes aqui
do forum, e acho que deveria preparar um material de estudo,
quem sabe um ebook, ou um livro e colocar a disposição
de possa interessar, isto é só uma sugestão

 

Entendo. Agradeço a sugestão.

 

 

Link para o comentário
Compartilhar em outros sites

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