Ir ao conteúdo

Vetores


Sorrechia

Posts recomendados

Postado

Alguém pode me ajudar com isso?

O código compila, mas o resultado dá sempre zero e não sei onde estou errando...


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


main()
{
int i, quantidade, maior;
float num[100];

printf("Digite a quantidade de numeros que ira inserir\n\n");
scanf("%d",&quantidade);

while(quantidade > 100)
{
printf("Erro, o numero deve ser menor que 100\n\n");
printf("Digite a quantidade de numeros que ira inserir\n\n");
scanf("%d",quantidade);
}

printf("\nDigite os numeros\n\n");

for(i=0; i<quantidade; i++)
scanf("%f",&num[i]);

maior=num[0];

for(i=1; i<quantidade; i++)
{
if(num[i]>maior)
maior=num[i];
}

printf("\nMaior numero = %f\n\n",maior);


system("pause");
return 0;



}

Postado

Primeiro tem um for que falta abrir o encadeamento e fechar

segunda como você declarou a variavel num como Float, o maior tem que ser Float também, não tem como int receber um Float.

for(i=0; i<quantidade; i++) {

scanf("%f",&num);

maior=num[0];

}

o restante do código esta ok.

Postado
Primeiro tem um for que falta abrir o encadeamento e fechar

segunda como você declarou a variavel num como Float, o maior tem que ser Float também, não tem como int receber um Float.

o restante do código esta ok.

A causa do problema é a variável maior ser do tipo int mesmo, para funcionar ela teria que ser do tipo float. Quanto a abertura e fechamento do loop, não é necessária, pois a instrução:


maior = num[0];

Não deve ser feita a cada iteração do loop, apenas uma vez. Portanto como o loop tem apenas uma instrução (o scanf) é possível omitir as chaves de abertura e fechamento. Isso equivale a:


for(i = 0; i < quantidade; i++) {
scanf("%f",&num[i]);
}

maior = num[0];

Espero ter ajudado.

Postado
A causa do problema é a variável maior ser do tipo int mesmo, para funcionar ela teria que ser do tipo float. Quanto a abertura e fechamento do loop, não é necessária, pois a instrução:

porque?Sou iniciante,pode me explicar?

Eu corrigi isso no codigo dele :

printf("\nMaior numero = %d\n\n",maior);

E deu certo,ele colocou %f,como se o maior fosse float,eu estou errado?

Código completo :


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


main()
{
int i, quantidade, maior;
float num[100];

printf("Digite a quantidade de numeros que ira inserir\n\n");
scanf("%d",&quantidade);

if (quantidade > 100)
{
printf("Erro, o numero deve ser menor que 100\n\n");
printf("Digite a quantidade de numeros que ira inserir\n\n");
scanf("%d",quantidade);
}

printf("\nDigite os numeros\n\n");

for(i=0; i<quantidade; i++)
scanf("%f",&num[i]);

maior=num[0];

for(i=1; i<quantidade; i++)
{
if(num[i]>maior)
maior=num[i];
}

printf("\nMaior numero = %d\n\n",maior);


system("pause");
return 0;



}

Tem algo errado?

Postado

Tá faltando um & em quantidade.

if (quantidade > 100)
{
printf("Erro, o numero deve ser menor que 100\n\n");
printf("Digite a quantidade de numeros que ira inserir\n\n");
scanf("%d",[COLOR="Red"][B]&[/B][/COLOR]quantidade);
}

Acho q agora vai rodar.

Postado

quando um for executa apenas uma linha de comando, não é necessário as {}

e como o vetor é do tipo float, não iria armazenar num tipo Inteiro, um número com vírgulas, por isso teve que mudar o tipo da variavel maior para float

%f, sim para mostrar no printf um valor com vírgulas, sua chamada no comando tem que ser %f

Postado
porque?Sou iniciante,pode me explicar?

Eu corrigi isso no codigo dele :

printf("\nMaior numero = %d\n\n",maior);

E deu certo,ele colocou %f,como se o maior fosse float,eu estou errado?

Código completo :


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


main()
{
int i, quantidade, maior;
float num[100];

printf("Digite a quantidade de numeros que ira inserir\n\n");
scanf("%d",&quantidade);

if (quantidade > 100)
{
printf("Erro, o numero deve ser menor que 100\n\n");
printf("Digite a quantidade de numeros que ira inserir\n\n");
scanf("%d",quantidade);
}

printf("\nDigite os numeros\n\n");

for(i=0; i<quantidade; i++)
scanf("%f",&num[i]);

maior=num[0];

for(i=1; i<quantidade; i++)
{
if(num[i]>maior)
maior=num[i];
}

printf("\nMaior numero = %d\n\n",maior);


system("pause");
return 0;



}

Tem algo errado?

O que acontece é que você declarou o vetor num com o tipo float, um tipo de dado utilizado para armazenar valores reais (com casas decimais). A variável maior foi declarada com o tipo int, ou seja, ela só aceita valores inteiros (sem casas decimais).

Para que o código funcione você precisa declarar a variável maior com o tipo float, para que tenha o mesmo tipo de dado do vetor num.

O %f no comando printf indica a impressão de um valor do tipo float, e %d do tipo int, portanto utilizar %d para imprimir um float não irá funcionar.

Segue o código corrigido:


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

int main() {
int i, quantidade;
float num[100], maior;

printf("Digite a quantidade de numeros que ira inserir\n\n");
scanf("%d",&quantidade);

while(quantidade > 100) {
printf("Erro, o numero deve ser menor que 100\n\n");
printf("Digite a quantidade de numeros que ira inserir\n\n");
scanf("%d",quantidade);
}

printf("\nDigite os numeros\n\n");

for(i=0; i<quantidade; i++)
scanf("%f",&num[i]);

maior=num[0];

for(i=1; i<quantidade; i++) {
if(num[i]>maior)
maior=num[i];
}

printf("\nMaior numero = %f\n\n",maior);

system("pause");
return 0;
}

Espero ter ajudado.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!