Ir para conteúdo

POWERED BY:

Arquivado

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

GDBO

Alguem da uma corrigida?

Recommended Posts

preciso que os vetores o 1º receba nome o 2º código e o 3º valor.

depois tenho que mostrar os dados e suas posiçoes no vetor e por ultio a soma total do 3º vetor.

 

se alguem tiver umas ideias de como melhorar ele ou dar uma corrigida

eu agradeço..

 

=======

 

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


main ()
{
	 int tam; // variavel tamanho vetor
	 float soma=0;
	 printf ("\nDigite o tamanho desejado para o vetor: ");
	 scanf ("%d", &tam);
	 int cod[tam]; // vetor codigo
	 float valor[tam]; // vetor valores
	 char nome[20][tam]; // vetor string para armazenar valores
	 for (int i=0; i<tam; i++) // declarando i assim ele se torna uma variavel temporaria, laço para armazenar dados no vetor
	 {
		 system ("cls");
		 cod[i] = i; // atribuindo o codigo 
		 printf ("\nDigite o nome do cliente: ");
		 scanf ("%s", &nome[i]); // atribuindo o nome
		 printf ("\nDigite o valor de sua divida: ");
		 scanf ("%f", &valor[i]); // atribuindo valor
		 soma = soma + valor[i]; // somando o total do vetor
	 }
	 printf ("\n\t\tCodigo	  Nome		Valor\n");  // organizando impressão   
	 for (int i=0; i<tam; i++) // declarando i assim ele se torna vaiavel temporaria, laço para imprimir dados
	 {	
		 printf ("\n\t\t   %d -	%s		%.2f", i+1, nome[i], valor[i]); // função para imprimir dados
	 }
	 printf ("\n\n\t\tO valor total do vetor e: R$ %.2f", soma); // função para apresentar o valor total do vetor
	 getche(); // segura tela
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que está funcionando.

 

A lógica está correta, não tem muito o que fazer pra melhorar.

Altere essas partes:

 

// float soma=0;
// inicialize float assim:
float soma=0.0;
.
.
.
// scanf ("%s", &nome[i]); // atribuindo o nome
// tire o & pois nome[i] ja eh o endereço desse vetor
scanf ("%s", nome[i]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta rodando sim eu que tava voando aqui

é que se por um vetor ex: 10 posições vou ter que por os 10 nomes e valores...

eu achei que tava repetindo hehehe

obrigado pela dica ali

grato ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

main ()

 

O tipo int nao é mais implicito...Tem que declarar.

 

E podia ter deixado o algoritmo no mesmo topico...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não repete porque a variável "i" a cada passagem pelo laço fica com um valor diferente.

 

Foi nada.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

ta rodando sim eu que tava voando aqui

é que se por um vetor ex: 10 posições vou ter que por os 10 nomes e valores...

eu achei que tava repetindo hehehe

obrigado pela dica ali

grato ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahh outra coisa que nao consegui fazer...

pra colocar algo pra sair ex: digite 0 pra sair...

mais queria deixar pra aparecer depois do resultado da soma do terceiro vetor

eu tentei aqui mais aparecia em todas as opçoes hehe

tem como fazer isso depois da ultma soma?

tnks

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se quiser sair do laço a qualquer momento voce não saberá o tamanho do vetor.

Ai o mais indicado é usar alocação dinamica.

 

Se não precisar usar vetor fica simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>
#include <string.h>

int main (void) {
 int tam; // variavel tamanho vetor
 float soma=0;
 int opcao = 1;
while (opcao) {
 printf ("\nDigite o tamanho desejado para o vetor: ");
 scanf ("%d", &tam);

 int cod[tam];
 float valor[tam]; 
 char nome[20][tam]; 

 for (int i=0; i<tam; i++) {
cod[i] = i;
printf ("\nDigite o nome do cliente: ");
scanf ("%s", &nome[i]);
printf ("\nDigite o valor de sua divida: ");
scanf ("%f", &valor[i]);
soma = soma + valor[i];
 }

 printf ("\n\t\tCodigo Nome Valor\n");
 for (int i=0; i<tam; i++)
 printf ("\n\t\t %d - %s %.2f", i+1, nome[i], valor[i]);

 printf ("\n\n\t\tO valor total do vetor e: R$ %.2f", soma);
 printf("\nDigite 0 para sair:");
 scanf("%d",&opcao);
};

}

 

 

Evite comentários que não acrescentam nada: // atribuindo o codigo , // atribuindo o nome , // função para imprimir dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não existe nenhuma restrição quanto a forma que foi declarado o vetor? Simulando uma alocação dinâmica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não existe nenhuma restrição quanto a forma que foi declarado o vetor? Simulando uma alocação dinâmica?

existe compilador que reclama, mas roda perfeitamente..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a finalidade de usar ponteiros neste caso então?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a finalidade de usar ponteiros neste caso então?

Neste caso nao, mas é melhor ir se acostumando a usar ponteiros porque existem casos que você vai precisar realocar e desse jeito nao dá...Imagine que você tenha um vetor ja preenchido e você precise eliminar 1 valor, se você nao tiver usando ponteiro nao terá como liberar aquele espaco na memoria depois de eliminar o elemento no vetor.... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.