Logo Hardware.com.br
João Gabriel Sampaio
João Gabriel... Novo Membro Registrado
27 Mensagens 0 Curtidas

Dúvida de programação C++

#1 Por João Gabriel... 14/10/2014 - 07:17
Pessoal, sou novo na programação. Este tópico pode ficar confuso, mas tentem entender:

Eu fiz um simulador de carro, em que você pode selecionar as opções , tipo dar a partida, passar a primeira marcha etc.

Essas opções ficam em um menu. Assim:
printf("1. Dar a partida");
printf("2. Passar primeira marcha");
printf("3. Passar a segunda marcha");
printf("4. Freiar");
printf("5.Parar o carro");
scanf("%d", &Partida);

O código todo(no final do tópico vou explicar minha dúvida):
[code=C++]
#include
#include
#include

int Partida, Marcha1=1, Marcha2=2, Marcha3=3, Freiar, Parar,estado;
char resposta;

main(){
printf("SIMULADOR DE CARRO");
printf("\n\nO que deseja fazer:");
printf("\n1. Dar a partida");
printf("\n2. Passar a primeira marcha");
printf("\n3. Passar a terceira marcha");
printf("\n4. Freiar");
printf("\n5. Sair do carro");
scanf("%d", &Partida);
/*Etapa 1:
Na etapa 1, apenas as opções 1 e 5 poderão ser selecionadas!
As outras darão erro.
*/

if(Partida==1){
clrscr();
printf("Ok! Estamos a 10 km/h!");
printf("\n\nO que deseja fazer:");
printf("\n2. Passar a primeira marcha");
printf("\n3. Passar a terceira marcha");
printf("\n4. Freiar");
printf("\n5. Sair do carro");
scanf("%d", &Marcha1);
}

if(Partida!= 2 || Partida!= 3 || Partida!=4){

clrscr();
printf("Erro! Você precisa dar a partida primeiro");
}

if(Partida==5){
printf("Você saiu do carro!");
}

/*Etapa 2
Na etapa 2, você pode selecionar as opções 2,4 e 5!
A 3 dará erro!
*/

if(Marcha1==2){
printf("Você passou a primeira marcha!");
}
system("pause");
return 0;
}[/code]

Certo! Então quando o código é executado, se a pessoa digitar 1(lembrando que se digitar 2, 3 ou 4, vai dar erro, pois precisa dar a partida primeiro), tudo OK! Então o carro vai dar a partida. Ele vai perguntar o que quer fazer novamente:
2. Passar primeira marcha
3. Passar segunda
4. Freiar
5. Parar o carro
scanf("%d", &Marcha1);

No meu código tem a opção:

if(Marcha1==2){
printf("Vou passou a primeira marcha");
}

Mas oque aparece quando aperto 2(depois de dar a partida) é "Erro!Você precisa dar a partida! Você passou a primeira marcha!"
Como se estivesse executando os dois juntos, mas eu determinei que se 2 fosse digitado no campo Partida ia dar erro, mas no campo Marcha1 não!

O que fiz de errado? Como faço um bom menu, para realizar diferentes tarefas?
Bbruno
Bbruno General de Pijama Registrado
3.2K Mensagens 102 Curtidas
#2 Por Bbruno
14/10/2014 - 08:49
João Gabriel Sampaio disse:
Pessoal, sou novo na programação. Este tópico pode ficar confuso, mas tentem entender:

Eu fiz um simulador de carro, em que você pode selecionar as opções , tipo dar a partida, passar a primeira marcha etc.

Essas opções ficam em um menu. Assim:
printf("1. Dar a partida");
printf("2. Passar primeira marcha");
printf("3. Passar a segunda marcha");
printf("4. Freiar");
printf("5.Parar o carro");
scanf("%d", &Partida);

O código todo(no final do tópico vou explicar minha dúvida):

[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]

int Partida, Marcha1=1, Marcha2=2, Marcha3=3, Freiar, Parar,estado;
char resposta;

main(){
printf("SIMULADOR DE CARRO");
printf("\n\nO que deseja fazer:");
printf("\n1. Dar a partida");
printf("\n2. Passar a primeira marcha");
printf("\n3. Passar a terceira marcha");
printf("\n4. Freiar");
printf("\n5. Sair do carro");
scanf("%d", &Partida);
/*Etapa 1:
Na etapa 1, apenas as opções 1 e 5 poderão ser selecionadas!
As outras darão erro.
*/

if(Partida==1){
clrscr();
printf("Ok! Estamos a 10 km/h!");
printf("\n\nO que deseja fazer:");
printf("\n2. Passar a primeira marcha");
printf("\n3. Passar a terceira marcha");
printf("\n4. Freiar");
printf("\n5. Sair do carro");
scanf("%d", &Marcha1);
}

if(Partida!= 2 || Partida!= 3 || Partida!=4){

clrscr();
printf("Erro! Você precisa dar a partida primeiro");
}

if(Partida==5){
printf("Você saiu do carro!");
}

/*Etapa 2
Na etapa 2, você pode selecionar as opções 2,4 e 5!
A 3 dará erro!
*/

if(Marcha1==2){
printf("Você passou a primeira marcha!");
}
system("pause");
return 0;
}

Certo! Então quando o código é executado, se a pessoa digitar 1(lembrando que se digitar 2, 3 ou 4, vai dar erro, pois precisa dar a partida primeiro), tudo OK! Então o carro vai dar a partida. Ele vai perguntar o que quer fazer novamente:
2. Passar primeira marcha
3. Passar segunda
4. Freiar
5. Parar o carro
scanf("%d", &Marcha1);

No meu código tem a opção:

if(Marcha1==2){
printf("Vou passou a primeira marcha");
}

Mas oque aparece quando aperto 2(depois de dar a partida) é "Erro!Você precisa dar a partida! Você passou a primeira marcha!"
Como se estivesse executando os dois juntos, mas eu determinei que se 2 fosse digitado no campo Partida ia dar erro, mas no campo Marcha1 não!

O que fiz de errado? Como faço um bom menu, para realizar diferentes tarefas?

Acredito que a sua dúvida é a mesma que tive à um tempo atrás..
Leia o tópico: https://www.hardware.com.br/comunidade/irrita-tecla/1300628/#post6531565




EDIT.: Os comandos/bibliotecas utilizados por você não são nativos do C++, se quiser mesmo escrever em C++ leia algum material...







att
João Gabriel Sampaio
João Gabriel... Novo Membro Registrado
27 Mensagens 0 Curtidas
#4 Por João Gabriel...
14/10/2014 - 12:17
tpcvasco disse:
Esse seu teste:
if(Partida!= 2 || Partida!= 3 || Partida!=4)
Está errado na lógica q vc quer....
Pense bem, se Partida é igual a 1, ele vai ser diferente de 2, 3 e 4, não é?
Então esse teste dá.... TRUE!
De fato, vc nem precisaria desse if, bastaria um else.

Tente dar uma reorganizada na sua lógica.

Obrigado pela resposta!
Quando estava escrevando o código, eu fiz isso. Mas oque eu queria era:
-Quando digitar 1 dar a partida
-Quando digitar 2, 3 e 4 dar erro
-Quando digitar 5 sair do carro
Tinha colocado o seguinte no código:
if(Partida==1){
printf("Deu a partida!");
}
if(Partida==5){
printf("Sair do carro");
}
else{
printf("Erro...");
}
Mas o Partida==1 era executado com else, dando a mensagem de "Erro".

tpcvasco disse:
Esse seu teste:
if(Partida!= 2 || Partida!= 3 || Partida!=4)
Está errado na lógica q vc quer....
Pense bem, se Partida é igual a 1, ele vai ser diferente de 2, 3 e 4, não é?
Então esse teste dá.... TRUE!
De fato, vc nem precisaria desse if, bastaria um else.

Tente dar u

tpcvasco disse:
Esse seu teste:
if(Partida!= 2 || Partida!= 3 || Partida!=4)
Está errado na lógica q vc quer....
Pense bem, se Partida é igual a 1, ele vai ser diferente de 2, 3 e 4, não é?
Então esse teste dá.... TRUE!
De fato, vc nem precisaria desse if, bastaria um else.

Tente dar uma reorganizada na sua lógica.

Você poderia me recomendar, algum site, apostila, vídeos para aprender em C++ ? Atualmente eu vejo os vídeos do canal G Tech no yoube.
Como você começou a aprender C++?
João Gabriel Sampaio
João Gabriel... Novo Membro Registrado
27 Mensagens 0 Curtidas
#6 Por João Gabriel...
14/10/2014 - 15:27
Bbruno disse:
Aprendi lógica de programação, até hoje é a base de tudo.. aprendi C na faculdade, a partir daí segui sozinho..
Uma recomendação fortíssima é o seguinte site: http://www.cplusplus.com/
É o melhor na minha opinião...












att

Obrigado! Vou olhar o link. Queria alguém para me ensinar em alguma escola, ou em casa mesmo. Tenho 12 anos, então não tem muitas opções. Vou continuar na internet mesmo
Bbruno
Bbruno General de Pijama Registrado
3.2K Mensagens 102 Curtidas
#7 Por Bbruno
14/10/2014 - 15:38
João Gabriel Sampaio disse:
Obrigado! Vou olhar o link. Queria alguém para me ensinar em alguma escola, ou em casa mesmo. Tenho 12 anos, então não tem muitas opções. Vou continuar na internet mesmo

Bacana, queria eu ter começado a estudar programação com essa idade.. Na internet tem muito material bacana, leia algum conteúdo sobre lógica de programação..
Se precisar estarei aqui para ajudá-lo, os amigos do fórum também.. : )










att
João Gabriel Sampaio
João Gabriel... Novo Membro Registrado
27 Mensagens 0 Curtidas
#8 Por João Gabriel...
14/10/2014 - 15:58
Bbruno disse:
Bacana, queria eu ter começado a estudar programação com essa idade.. Na internet tem muito material bacana, leia algum conteúdo sobre lógica de programação..
Se precisar estarei aqui para ajudá-lo, os amigos do fórum também.. : )










att

Obrigado mesmo! É bom ver que tem gente na internet que ajuda as pessoas! Comecei a postar dúvidas aqui hoje, e to gostando muito! Vou continuar tirando minhas dúvidas aqui!
tpcvasco
tpcvasco General de Pijama Registrado
2.9K Mensagens 330 Curtidas
#10 Por tpcvasco
15/10/2014 - 11:44
João Gabriel Sampaio disse:
Obrigado pela resposta!
Quando estava escrevando o código, eu fiz isso. Mas oque eu queria era:
-Quando digitar 1 dar a partida
-Quando digitar 2, 3 e 4 dar erro
-Quando digitar 5 sair do carro
Tinha colocado o seguinte no código:
if(Partida==1){
printf("Deu a partida!");
}
if(Partida==5){
printf("Sair do carro");
}
else{
printf("Erro...");
}
Mas o Partida==1 era executado com else, dando a mensagem de "Erro".


O else não precisa estar sozinho, ele pode acompanhar outro if, além disso, vc pode "encadear" os else, de forma q só um deles será executado. Resumindo, se vc fizer isso:
if(Partida==1){
printf("Deu a partida!");
}
else if(Partida==5){
printf("Sair do carro");
}
else{
printf("Erro...");
}

Irá ter o resultado q vc quer.

João Gabriel Sampaio disse:
Você poderia me recomendar, algum site, apostila, vídeos para aprender em C++ ? Atualmente eu vejo os vídeos do canal G Tech no yoube.
Como você começou a aprender C++?


Dê uma olhada nessa postagem
https://www.hardware.com.br/comunidade/problemas-semestre/1007849/#post4592870
João Gabriel Sampaio
João Gabriel... Novo Membro Registrado
27 Mensagens 0 Curtidas
#11 Por João Gabriel...
15/10/2014 - 17:48
tpcvasco disse:
O else não precisa estar sozinho, ele pode acompanhar outro if, além disso, vc pode "encadear" os else, de forma q só um deles será executado. Resumindo, se vc fizer isso:
if(Partida==1){
printf("Deu a partida!");
}
else if(Partida==5){
printf("Sair do carro");
}
else{
printf("Erro...");
}

Irá ter o resultado q vc quer.



Dê uma olhada nessa postagem
https://www.hardware.com.br/comunidade/problemas-semestre/1007849/#post4592870

Obrigado! Mas consegui fazer exatamente oque queria com o método de switch() e case!
tpcvasco
tpcvasco General de Pijama Registrado
2.9K Mensagens 330 Curtidas
#12 Por tpcvasco
16/10/2014 - 09:57
João Gabriel Sampaio disse:
Obrigado! Mas consegui fazer exatamente oque queria com o método de switch() e case!


Só para bancar o "chato de monóculo" rs switch não é um método, é uma estrutura condicional. Método é outra coisa...
Para quem está começando, é sempre bom saber os nomes certos das coisas, para facilitar a comunicação e não propagar os erros.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal