Ir para conteúdo
Fórum Script Brasil
  • 0

Uso de "DOUBLE"


princknoby

Pergunta

E ai galera? Tudo bem? 
É o seguinte, estou com esse exercício aqui pra fazer:

Escreva um programa que leia um vetor real (use tipo de dado double) de tamanho 10 e
que a seguir escreva na tela quais são os 3 menores valores deste vetor. Você deve primeiro
ler todo o vetor para depois procurar os 3 menores valores.

Coloquei a palavrinha que está me "ferrando" em negrito. 
Consegui escrever o programa todo usando inteiros (int), porém ao usar "double", o resultado dá totalmente errado! 

O que eu tenho que fazer pra usar a variável double? 
PS: Estou armazenando com "%f" quando tendo usar double. 

 

Esse é o código com 'int', se alguém puder me ajudar, ficarei muito grato.
Ouvi falar sobre um tal de "casting", consegui aplicar isso em um outro exercício, mas fiz isso quando estava realizando operação, tipo: h=1+(1/(float)i);

Nesse programa, imagino que eu tenha que fazer a mesma coisa, mas não faço ideia de onde colocar o casting

 

CÓDIGO:

#include <stdio.h>
#include <stdlib.h>
	int main ()
{
    int i;
    int m=3, x, aux; /* "I" é O CONTADOR -
    E "M" é OS MENORES - MENORES-1-2 E 3 -
    E "X" E "AUX" VARIAVEIS PARA ORGANIZAR*/
    int v[10];
	    for (i=0; i < 10; i++)
    {
        printf ("Digite v[%d]: ", i);
        scanf ("%d", &v);
    } 
	    printf ("O vetor organizado em ordem CRESCENTE fica da seguinte forma:\n"); 
	    for (i = 0; i < 10; ++i) /*ORGANIZEI VETOR PARA PEGAR AS 3 PRIMEIRAS POSIÇÕES DO VETOR, QUE SERAO OS 3 MENORES!*/
    {
        for (x=i+1; x < 10; x++)
        {
            if ( v > v[x])
            {
                aux=v;
                v=v[x];
                v[x]=aux;
            }
        } 
	        printf ("%d\n", v);
    } 
	    printf("Os 3 primeiros menores valores digitados são: \n"); 
	    for (i = 0; i < m; ++i) /*M=3 OU SEJA, VOU PEGAR A POSIÇÃO 0,1,2 DO VETOR, QUE É ONDE ESTAO OS 3 MENORES VALORES*/
    {
        printf ("%d\n", v);
    } 
	    system ("pause");
    return 0;
}
  
	

 

Editado por princknoby
formatação
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

@britivaldo Caramba, fico até envergonhada de ter cometido um erro tão bobo como esse rsrs

Muito obrigado!!! 
Gostaria de perguntar uma coisa se não for incômodo, consegui fazer o código, e imprimiu corretamente. 
Porém eu uso o sublime text 3 para escrever os códigos e compilo e executo através do próprio, porém quando compilo pelo sublime eu recebo os seguintes avisos:

Ex1.c:38:3: warning: ISO C90 does not support the '%lf' ms_printf format [-Wformat=]
Ex1.c:45:3: warning: ISO C90 does not support the '%lf' ms_printf format [-Wformat=]

Mas o programa roda normalmente. 
Resolvi testar em uma IDE, testei no CodeBlocks e no DevC++, nenhum dos dois apresentou nenhum erro, ou aviso, então fiquei sem saber se possui algum erro no programa. 
Se puder poderia me dizer o que significa isso?
Muito obrigado irmão! 

E aqui está o novo código:

Código novo:

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

int main ()
{
	int i;
	int m=3, x, aux; /* "I" é O CONTADOR - 
	E "M" é OS MENORES - MENORES-1-2 E 3 -  
	E "X" E "AUX" VARIAVEIS PARA ORGANIZAR*/
	double v[10];

	for (i=0; i < 10; i++)
	{
		printf ("Digite v[%d]: ", i);
		scanf ("%lf", &v[i]);
	}

	printf ("O vetor organizado em ordem CRESCENTE fica da seguinte forma:\n");

	for (i = 0; i < 10; ++i) /*ORGANIZEI VETOR PARA PEGAR AS 3 PRIMEIRAS POSIÇÕES DO VETOR, QUE SERAO OS 3 MENORES!*/
	{
		for (x=i+1; x < 10; x++)
		{
			if ( v[i] > v[x])
			{
				aux=v[i];
				v[i]=v[x];
				v[x]=aux;
			}
		}
		
		printf ("%.2lf\n", v[i]);
	}

	printf("Os 3 primeiros menores valores digitados são: \n");

	for (i = 0; i < m; ++i) /*M=3 OU SEJA, VOU PEGAR A POSIÇÃO 0,1,2 DO VETOR, QUE É ONDE ESTAO OS 3 MENORES VALORES*/
	{
		printf ("%.2lf\n", v[i]);
	}

	system ("pause");
	return 0;
}

 

Editado por princknoby
formatação
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...