Ir para conteúdo

POWERED BY:

Arquivado

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

best

[Resolvido] Problemas usando FOR

Recommended Posts

Problema: Uma loja tem 15 clientes cadastrados e deseja enviar uma correspondencia a cada um deles anunciando um bonus especial. Faça um programa que leia o nome do cliente e o valor de suas compras no ano passado. Calcule e mostre um bonus de 10% se o valor das compras for menor que R$ 1000,00 e de 15%, caso contrário.

 

eu consegui faze algo, mais ele da um problema ele não faiz a repetição correta dentro do for, como teria q fica?

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz isso:

 

int i;
	char nome[80];
	float compra, bonus;
	
	for(i=1; i<=15; i++)
{	
	printf("\n Nome cliente: ");
	scanf("%c", &nome);
	printf("\n Valor da compra: ");
	scanf("%f", &compra);

	if(compra<=1000)
	  bonus=compra*0.1;			  
	else
	  bonus=compra*0.15;
	  
	   printf("\n Bonus: %2.2f", bonus);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

1ª coisa q observei é a leitura do nome:

tem q ser assim:

scanf("%s%*c", nome);

e oq o programa naum ta fazendo, pq o for ta fazendo 15 iterações normal.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera...

Buenos Dias...

Estou com uma pequena dúvida... estou dando uma olhada no codigo.. e é o seguinte:

Foi criado laço de repetição para ser mostrado 15 vezes a variavel nome, e valor certo ?

A variavel nome é uma array com 80 posições certo ? se eu por por exemplo 5 posições q um valor menor das repetições ele consegui pegar esse valores, pq ?

Descula a ignorancia mas eh q estou iniciando em C.

 

Tava me eskecendo, a linha "scanf("%s%*c", nome);" porque foi usado o %s% e *c, e não so o "%c" ?

 

Desde já agradeço pela ajuda que estão me dando

 

Abraços,

Zeca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom como você disse nome é um array de char então para a leitura usamos '%s';

sobre o '%*c', ele é um token para excluir o '\n' q as vezes fica no final da string;

veja: http://forum.imasters.com.br/index.php?/topic/336835-tutorial-systempause-e-fflushstdin/

 

e... não entendi sua primeira dúvida :s

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

quitZAUMMM,

Buenas madrugadas rs...

Então a minha primeira dúvida é o seguinte, o nosso amigo definir o laço com 15 rotação certo ? mas a variavel nome está com um array de [80], ok ? O certo não seria 15 valores também ?

 

Abraços,

Zeca

Compartilhar este post


Link para o post
Compartilhar em outros sites

Digamos que a variavel nome esta em modo linear vai.

pq a cada iteração ela mudará seu valor, o 80 foi o valor que quem programou deixou para ser o maximo de caracteres permitidos naquele char[];

se você quiser armazenar o nome a cada iteração e a cada novo nome ainda ter o antigo você tem 2 opções: ou usa uma matriz de char[], ou usa um vetor de strings!

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

HUmmmmm entendi show de bola..

Obrigado pela ajuda...

 

Abraços.

Zeca

Compartilhar este post


Link para o post
Compartilhar em outros sites

quitZAUMMM,

Usei o codigo "****scanf ("%s%*c", nome);****" mas coloquei da seguinte maneira: scanf ("%s% * c", nome); ou seja com espaço e percebi que não funfou... só estou colocando aqui para mostrar o erro que fiz.

 

Abraços,

 

E valeu mais uma vez galera.

 

Abraços,

Zeca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas não haveria de funcionar mesmo.

A função usa os espaços para determinar os tokens a serem trocados.

Por exemplo, na string:

"teste %3d %.1f %s\n"
Ele pegará os tokens:

3d, .1f e s

 

Se você fizer:

"%s% * c"
Os tokens serão:

s e NULO, pois após o último '%' não há nada.

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.