Ir ao conteúdo

Programa com vetor não funciona


pLucK DuCK

Posts recomendados

Postado

Boa Noite amigos, escrevi o seguinte programa

#include <iostream>

#include <conio.h>

#include <stdlib.h>

#include <stdio.h>

int main()

{

int i;

float somaa, somab, deltax[20], ka, kb, La, Lb, h, Tinf, qfluxo;

ka = 10.0;

kb = 1.0;

La = 0.073;

Lb = 0.017;

h = 80.0;

Tinf = 20.0;

qfluxo = 4000.0;

somaa = 0;

somab = 0;

i=1;

while (somaa < La)

{

printf("Digite o valor %i de deltax: \n",i);

scanf("%f",deltax);

somaa = somaa + deltax;

i++;

}

for (i = 1; i <= 20; i++)

{

printf("valor %i de deltax: %f\n", i, deltax);

}

system("pause");

return 0;

}

mas na hora de executá-lo, escrevo apenas o primeiro valor de deltax, não importando qual seja o valor, e recebo este resultado:

errocq.png

alguém poderia me explicar o porquê disso e como resolvê-lo??

Agradeço desde já

Postado

Três observações rápidas:

1) deltax é um vetor float e você pede que o scanf() faça a leitura de um Integer (int) com %i, quando deveria ser %f.

2) Esta é mais grave: você define o intervalo de 1 a 20 para indexar o vetor, quando deveria ser de 0 a 19. O primeiro elemento de um vetor ocupa a posição 0.

3) Dentro do laço while, você precisa ter certeza de que o índice i não vai extrapolar o valor 19.

Acerte esses detalhes primeiro...

[]'s

LNW

Postado

Olá LNW

Bom, em partes:

1. corrigi esse erro. eu estava testando o código com outras variáveis por isso o copy saiu errado

2. bom para a correção eu retirei o for, portanto não há intervalo definido para o vetor agora

3. aí que está o problema, este é o meu "novo" programa:

#include <iostream>

#include <conio.h>

#include <stdlib.h>

#include <stdio.h>

int main()

{

int i;

float somaa, somab, ka, kb, La, Lb, h, Tinf, qfluxo;

float deltax[20];

ka = 10.0;

kb = 1.0;

La = 0.073;

Lb = 0.017;

h = 80.0;

Tinf = 20.0;

qfluxo = 4000.0;

somaa = 0;

somab = 0;

i=0;

do

{

printf("Digite o valor %i de deltax:\t",i+1);

scanf("%f",deltax);

somaa = deltax + somaa;

i = i+1;

}

while (somaa < La);

system("pause");

return 0;

}

acontece que, no momento em que insiro o primeiro valor de deltax, o Windows detecta um erro no programa e força o seu fechamento (acusa que o programa parou de funcionar)

se alguém puder me ajudar, o meu real objetivo na verdade não é construir um vetor com 20 componentes, o meu real objetivo é o seguinte, tenho uma variável La, preciso construir um vetor com tantos elementos que a soma de tais elementos resulte exatamente em La. Em outras palavras, a soma de todos os elementos do vetor deltax precisam resultar exatamente em La, mas assim, se o primeiro valor de deltax for igual a La, será um vetor de um elemento. se 3 elementos resultarem em La, será um vetor de 3 elementos, se 1000 resultarem, 1000 elementos, e assim vai. Saberiam me ajudar nisso? Desde já grato pela ajuda

Postado

Faltou outra coisa bem importante para a leitura de uma variável com scanf(): passar o seu endereço de memória com &.

scanf("%f", &deltax[i]);

[]'s

NW

Postado

Opa, agora creio que o programa respondeu bem! Erro de principiante, muito obrigado!

Será que você conseguiria me ajudar com o meu problema real, que é criar um vetor com uma quantidade de elementos que vai ser definida de acordo com a soma desses elementos?

Obrigado

Postado

opa, meu problema é outro agora, no loop while, parece que por algum motivo quando o valor de i é maior que 6, ele se recusa a sair do loop, por mais que a condição somaa < La se acabe.

Postado
opa, meu problema é outro agora, no loop while, parece que por algum motivo quando o valor de i é maior que 6, ele se recusa a sair do loop, por mais que a condição somaa < La se acabe.

Refiz seu programa desfazendo algumas linhas que considero desnecessárias, e rodou normalmente satisfazendo a condição do while, sendo La = 0.073

int main()
{
int i = 0;
float somaa = 0, somab = 0, ka = 10.0, kb = 1.0, La = 0.073, Lb = 0.017, h = 80.0, Tinf = 20.0, qfluxo = 4000.0, deltax[20];

do
{
printf("Digite o valor %i de deltax: ",i+1);
scanf("%f", &deltax[i]);
somaa += deltax[i];
i++;
}while(somaa < La);

//Apenas para verificar o valor da soma
printf("\nSoma: %f\n", somaa);

system("PAUSE");
return 0;
}

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!