Problema no código [RESOLVIDO]

1. Problema no código [RESOLVIDO]

Hisashi Tsutsui
tsutsui

(usa Outra)

Enviado em 26/11/2013 - 18:54h

Eu estava a fazer um programa que seguisse as devidas exigências:







------------------------------------------------------------------------------------------------------
Construir um programa em C que leia o código, o nome e o preço de 10 produtos e armazene esses dados em três vetores, um para o código, um para o nome e um para o preço e imprima um relatório com o código, nome, preço e novo preço dos produtos, seguindo as regras a seguir:

- Os produtos com preço abaixo de R$ 100,00 serão atualizados em 12%
- Os produtos com preço igual ou superior a R$ 100,00 serão atualizados em 15%
- Imprimir o nome do produto com maior preço atualizado
- Imprimir o código do produto com menor preço atualizado

Observações:

- Não permitir preço negativo ou zero
- Declaração e leitura dos vetores

------------------------------------------------------------------------------------------------------

Eis o meu código abaixo:

#include <stdio.h>

main() {
int cod[ 10 ], i;
char nome[ 10 ][ 30 ], nome2[ 10 ];
float preco[ 10 ], prc2, novopreco[ 10 ];

for (i = 0 ; i <= 9 ; i++) {
fflush(stdin);
printf("\nDigite o nome do produto [ %d ]: ", i + 1);
gets(nome[ i ]);
printf("Digite o codigo do produto [ %d ]: ", i + 1);
scanf("%d", &cod[ i ]);
printf("Digite o preco do produto [ %d ]: ", i + 1);
scanf("%f", &preco[ i ]);

while (preco[ i ] <= 0) {
printf("PRECO INVALIDO!!!");
printf("\nDigite o preco do produto [%d] novamente: ", i + 1);
scanf("%f", &preco[ i ]);
}

}



for (i = 0 ; i <= 9 ; i++) {
if ( preco[ i ] < 100 )
novopreco[ i ] = preco[ i ] * 1.12;
else
novopreco[ i ] = preco[ i ]*1.15;

printf("\nNome do produto [ %d ]: %s", i + 1, nome[ i ]);
printf("\nCodigo do produto [ %d ]: %d", i + 1, cod[ i ]);
printf("\nO preco atualizado do produto [ %d ] eh: %.1f\n\n", i + 1, novopreco[ i ]);

}





for (i = 0 ; i <= 9 ; i++) {
if (novopreco[ i ] > prc2) {
prc2 = novopreco[ i ];
nome2[ i ] = nome[ i ];
}
}

fflush(stdin);
printf("O nome do produto do maior preco atualizado: %s", nome2);
printf("\nO maior preco atualizado eh: %.1f", prc2);


getch();
}

------------------------------------------------------------------------------------------------------

O meu problema é que ele não mostra o nome certo. Alguém teria a solução para isto?


  


2. Re: Problema no código [RESOLVIDO]

Ramon
ramonzitos

(usa Gentoo)

Enviado em 26/11/2013 - 19:47h

1º - Estou seriamente desconfiado dessa sua variável nome2. Muito. Dê uma olhadinha nela depois ;)
2º - Use a função strcpy para copiar strings, não use o sinal de "=". Talvez até funcione, mas adquira esse hábito e evite problemas futuros. Por que? Porque strings(ou char arrays, ou linhas, como você preferir) são ponteiros, então copiar com "=" copia uma referência, que quando você muda uma string, a outra(a "original") muda também. Vale pra "strcmp" e "strcat"
3º - Use "[ code]" e "[/ code]"(sem espaços; no começo e no fim, respectivamente), quando for copiar e colar um código, dai ele fica formatado direitinho, blz?


3. Re: Problema no código [RESOLVIDO]

Hisashi Tsutsui
tsutsui

(usa Outra)

Enviado em 26/11/2013 - 20:19h

ramonzitos escreveu:

1º - Estou seriamente desconfiado dessa sua variável nome2. Muito. Dê uma olhadinha nela depois ;)
2º - Use a função strcpy para copiar strings, não use o sinal de "=". Talvez até funcione, mas adquira esse hábito e evite problemas futuros. Por que? Porque strings(ou char arrays, ou linhas, como você preferir) são ponteiros, então copiar com "=" copia uma referência, que quando você muda uma string, a outra(a "original") muda também. Vale pra "strcmp" e "strcat"
3º - Use "[ code]" e "[/ code]"(sem espaços; no começo e no fim, respectivamente), quando for copiar e colar um código, dai ele fica formatado direitinho, blz?


Só a parte do:

------------------------------------------------------------

for (i = 0 ; i <= 9 ; i++) {
if (novopreco[ i ] > prc2) {
prc2 = novopreco[ i ];
nome2[ i ] = nome[ i ];
}

------------------------------------------------------------

Como ficaria? Eu sei apenas os fundamentos de programação em C, me desculpe =( Como ficaria esta parte se aplicasse as suas alterações?


4. Re: Problema no código [RESOLVIDO]

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 26/11/2013 - 21:16h

Cara...
vc precisa criar um array de 10 elementos do tipo struct.
Dentro da struct vc cria array para codigo e outro para nome.
O terceiro array vai ser a junção do codigo, nome e valor do produto.




5. Re: Problema no código [RESOLVIDO]

Ramon
ramonzitos

(usa Gentoo)

Enviado em 26/11/2013 - 21:51h

tsutsui escreveu:

Só a parte do:

------------------------------------------------------------

for (i = 0 ; i <= 9 ; i++) {
if (novopreco[ i ] > prc2) {
prc2 = novopreco[ i ];
nome2[ i ] = nome[ i ];
}

------------------------------------------------------------

Como ficaria? Eu sei apenas os fundamentos de programação em C, me desculpe =( Como ficaria esta parte se aplicasse as suas alterações?



for (int i = 0; i < 10; i++) {
if (novopreco[i] > prc2) {
prc2 = novopreco[i];
strcpy(nome[i], nome2);
}
}


E coloque no começo do seu código:

#include <string.h>



6. Re: Problema no código [RESOLVIDO]

Hisashi Tsutsui
tsutsui

(usa Outra)

Enviado em 28/11/2013 - 06:42h

Obrigado pela informação. Eu tentei usar este código e ainda não consegui. Mas vou tentar arranjar um jeito de resolver isto.


7. Re: Problema no código [RESOLVIDO]

Ramon
ramonzitos

(usa Gentoo)

Enviado em 28/11/2013 - 14:16h

O que aconteceu quando vc usou esse codigo no lugar? Poste o resultado da saida do codigo aqui.


8. Re: Problema no código [RESOLVIDO]

Hisashi Tsutsui
tsutsui

(usa Outra)

Enviado em 29/11/2013 - 17:08h

Desculpem-me pela a ausência. o resultado está na imagem abaixo:

http://i.imgur.com/SvZdAGu.jpg


9. Re: Problema no código [RESOLVIDO]

Ramon
ramonzitos

(usa Gentoo)

Enviado em 29/11/2013 - 17:26h

Oops, o strcpy é um pouco diferente, é:

strcpy(nome2, nome[i]);



10. Re: Problema no código [RESOLVIDO]

Hisashi Tsutsui
tsutsui

(usa Outra)

Enviado em 30/11/2013 - 13:36h

Muito obrigado. Resolveu o meu problema! =)

http://i.imgur.com/STAt2rI.jpg






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts