Ir ao conteúdo
  • Cadastre-se

C++ Devc++ introduzir o "Deseja continuar S/N ?" Na programação.


EngNaves

Posts recomendados

Olá estou aprendendo a programar pela primeira vez e o meu professor passou esse enunciado abaixo e não estou conseguindo fazer a operação QUANTAS VEZES O OPERADOR DESEJAR UTILIZANDO S OU N para continuar me ajudem já está pronto só falta isso. Por Favor espero que possam me ajudar! Obrigado!

 

Construa um programa em linguagem c++ que , tendo como dados de entrada dois pontos quaisquer do palno P(x1, y1) e Q(x2,y2), calcule e mostre a distância entre eles, tantas vezes o operador desejar.

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    float x1, x2, y1, y2, r, raux;
        
            printf("\nDigite o ponto Px: ");
            scanf("%f", &x1);
            printf("\nDigite o ponto Qx: ");
            scanf("%f", &x2);
            printf("\nDigite o ponto Py: ");
            scanf("%f", &y1);
            printf("\nDigite o ponto Qy: ");
            scanf("%f", &y2);
            printf("\n\n - RESOLUCAO - \n");
            raux=pow(x2-x1,2) + pow(y2-y1,2);
            r=sqrt(raux);
            printf("\n\n - O valor da distancia entre os pontos P e Q e: %.3f. ", r);
  
system ("Pause");
}

 

Link para o comentário
Compartilhar em outros sites

Declare uma variável tipo char e atribua inicialmente a ela o valor 's' antes de iniciar a execução;

Coloque um 'while' a variável for 's' para iniciar o programa;

Quando iniciar o programa limpe a variável;

Ao terminar a execução, coloque um getchar para a variável e estabeleça que ela não pode ser diferente de 's' ou 'n' com outro 'while';

Se o usuário digitar 'n' finaliza o programa, se ele digitar 's' inicia novamente o primeiro laço while.

Espero ter ajudado.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Bom você vai ter que colocar uma Estrutura de repetição, inicia uma variável como false, poe toda a parte do meio do código entre a repetição até a variável ser true( exemplo o while ) e no final faz um if, se for S a variável continua false, se for N a variável vira true. acho que é isso a  sua duvida.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

É sempre recomendado manter o código indentado. Desta forma, por exemplo, já visualmente conseguimos identificar a estrutura do código..

 

Segue código reindentado:

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    float x1, x2, y1, y2, r, raux;

    printf("\nDigite o ponto Px: ");
    scanf("%f", &x1);
    printf("\nDigite o ponto Qx: ");
    scanf("%f", &x2);
    printf("\nDigite o ponto Py: ");
    scanf("%f", &y1);
    printf("\nDigite o ponto Qy: ");
    scanf("%f", &y2);
    
    raux=pow(x2-x1,2) + pow(y2-y1,2);
    r=sqrt(raux);
    
    printf("\n\n - RESOLUCAO - \n");    
    printf("\n\n - O valor da distancia entre os pontos P e Q e: %.3f. ", r);
    system ("Pause");
}

 

Obs.: ao postar um código, utilizar a tag CODE. Favor ler postagem tópico em destaque:

 

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Entendi um pouco o que vocês me passaram mais se puder copiar e colocar a função ai pra mim seria melhor para meu entendimento!

por favor.

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main()
{
    float x1, x2, y1, y2, r, raux;
    char c;
    
    do
    {
        printf("\nDigite o ponto Px: ");
        scanf("%f", &x1);
        printf("\nDigite o ponto Qx: ");
        scanf("%f", &x2);
        printf("\nDigite o ponto Py: ");
        scanf("%f", &y1);
        printf("\nDigite o ponto Qy: ");
        scanf("%f", &y2);
        
        printf("\n\n - RESOLUCAO - \n");
        
        raux=pow(x2-x1,2) + pow(y2-y1,2);
        r=sqrt(raux);
    
        printf("\n\n - O valor da distancia entre os pontos P e Q e: %.3f. ", r);
        
        printf("\n\n Deseja continuar? (s/n)\n\n");
        fflush(stdin);
        c = getche();
        printf("\n");
    }
    while ((c == 's') || (c == 's'));
    system ("PAUSE");
    return 0;
    

 

tentei introduzir esse continuação mais também não deu, por favor postem o comando pronto se puder. Obrigado!

adicionado 4 minutos depois

@Simon Viegas obrigado Simon.

adicionado 6 minutos depois

@André Ferreira da Silva tentei do jeito que você falou mais acho que falta algo ainda, se puder me ajudar postando o codigo com a função pronta agradeço.

adicionado 12 minutos depois
45 minutos atrás, André Ferreira da Silva disse:

Declare uma variável tipo char e atribua inicialmente a ela o valor 's' antes de iniciar a execução;

Coloque um 'while' a variável for 's' para iniciar o programa;

Quando iniciar o programa limpe a variável;

Ao terminar a execução, coloque um getchar para a variável e estabeleça que ela não pode ser diferente de 's' ou 'n' com outro 'while';

Se o usuário digitar 'n' finaliza o programa, se ele digitar 's' inicia novamente o primeiro laço while.

Espero ter ajudado.

consegui, Muito obrigado vi que estava confundindo o getche e vi que você postou getchar assim que fiz a troca rodou perfeitamente! Obrigado!

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main()
{
	float x1, x2, y1, y2, r, raux;
	char c;
	
	do
	{
		printf("\nDigite o ponto Px: ");
		scanf("%f", &x1);
		printf("\nDigite o ponto Qx: ");
		scanf("%f", &x2);
		printf("\nDigite o ponto Py: ");
		scanf("%f", &y1);
		printf("\nDigite o ponto Qy: ");
		scanf("%f", &y2);
		
		printf("\n\n - RESOLUCAO - \n");
		
		raux=pow(x2-x1,2) + pow(y2-y1,2);
		r=sqrt(raux);
	
		printf("\n\n - O valor da distancia entre os pontos P e Q e: %.3f. ", r);
		
		printf("\n\n Deseja continuar? (s/n)\n\n");
		fflush(stdin);
		c = getchar();
		printf("\n");
	}
	while ((c == 's') || (c == 's'));
	system ("PAUSE");
	return 0;
	
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Eu não manjo da sintaxe do C++, mas o base é essa mesmo...

 

Veja, as duas condições do while estão iguais, creio que deveria ser algo assim:

while ((c == 's') || (c == 'S'));

 

 

Qual erro está dando?

 

 

UPDATE:

Não sei se viu minha resposta anterior, eu confundi com a lógica... se não viu, esqueça esse comentário... rs

 

No aguardo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

3 minutos atrás, Simon Viegas disse:

Eu não manjo da sintaxe do C++, mas o base é essa mesma... mas a condição está invertida.

 

Antes, um parênteses: as duas condições do while estão iguais, creio que deveria ser algo assim:


while ((c == 's') || (c == 'S'));


 

Então, while significa "enquanto", ou seja, ela analisa a expressão que está entre (), e "enquanto a expressão resultar em true eu continuo, caso contrário (será false) eu paro". Logo, se for informado "s" ou "S" o programa irá parar ("s" é igual a "s"... vai dar true). O que você precisa é o oposto. Ou fazer repetir caso não seja  "n" e "N", OU fazer apenas repetir quando for "s" ou "S". (são parecidos, mas são coisas diferentes que vão servi para o seu caso)

 

No aguardo.

Entendi, Simon valeu pela ajuda também percebi que mesmo digitando N para não continuar ele continuava, agora troquei a opção e ele já não continua mais quando escolho não continuar!.

 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Vi que você foi mais rápido... kkkkkk

 

Observe que atualizei a minha resposta!

 

 

1 minuto atrás, EngNaves disse:

Entendi, Simon valeu pela ajuda também percebi que mesmo digitando N para não continuar ele continuava, agora troquei a opção e ele já não continua mais quando escolho não continuar!.

 

Ué? então eu estava certo?

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Simon Viegas disse:

Vi que você foi mais rápido... kkkkkk

 

Observe que atualizei a minha resposta!

 

 

Ué? então eu estava certo?

acho que não ta certo mais também não errado kkk, caso 's' ele continua caso 'N' não continua... olha como ficou agora tudo certo!

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main()
{
	float x1, x2, y1, y2, r, raux;
	char c;
	
	do
	{
		printf("\nDigite o ponto Px: ");
		scanf("%f", &x1);
		printf("\nDigite o ponto Qx: ");
		scanf("%f", &x2);
		printf("\nDigite o ponto Py: ");
		scanf("%f", &y1);
		printf("\nDigite o ponto Qy: ");
		scanf("%f", &y2);
		
		printf("\n\n - RESOLUCAO - \n");
		
		raux=pow(x2-x1,2) + pow(y2-y1,2);
		r=sqrt(raux);
	
		printf("\n\n - O valor da distancia entre os pontos P e Q e: %.3f. ", r);
		
		printf("\n\n Deseja continuar? (s/n)\n\n");
		fflush(stdin);
		c = getchar();
		printf("\n");
	}
	while ((c == 's') || (c == 'N'));
	system ("PAUSE");
	return 0;
	
}

 

Link para o comentário
Compartilhar em outros sites

Em 27/09/2017 às 15:11, EngNaves disse:

Entendi um pouco o que vocês me passaram mais se puder copiar e colocar a função ai pra mim seria melhor para meu entendimento!

por favor.


#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main()
{
    float x1, x2, y1, y2, r, raux;
    char c;
    
    do
    {
        printf("\nDigite o ponto Px: ");
        scanf("%f", &x1);
        printf("\nDigite o ponto Qx: ");
        scanf("%f", &x2);
        printf("\nDigite o ponto Py: ");
        scanf("%f", &y1);
        printf("\nDigite o ponto Qy: ");
        scanf("%f", &y2);
        
        printf("\n\n - RESOLUCAO - \n");
        
        raux=pow(x2-x1,2) + pow(y2-y1,2);
        r=sqrt(raux);
    
        printf("\n\n - O valor da distancia entre os pontos P e Q e: %.3f. ", r);
        
        printf("\n\n Deseja continuar? (s/n)\n\n");
        fflush(stdin);
        c = getche();
        printf("\n");
    }
    while ((c == 's') || (c == 's'));
    system ("PAUSE");
    return 0;
    

 

tentei introduzir esse continuação mais também não deu, por favor postem o comando pronto se puder. Obrigado!

adicionado 4 minutos depois

@Simon Viegas obrigado Simon.

adicionado 6 minutos depois

@André Ferreira da Silva tentei do jeito que você falou mais acho que falta algo ainda, se puder me ajudar postando o codigo com a função pronta agradeço.

Isso é algum exercício de escola? Vamos tentar ajudar...

char c;           //declaração da variável de controle//

c=s;               //atribuição inicial para a variável//  

while (c=='s');//condição para executar o seu programa, como atribuímos c=s, seu programa vai ser executado//

{                    //abre as execuções para este primeiro 'while'//

c=' ';               //esvaziamos a variável c//

        /* SEU PROGRAMA/*

c=getchar();

while ((c!='s') or (c!='n'))  //abre o segundo 'while' e somente aceita  se for 's' ou 'n'//

            c=getchar();       //recebe a variável 'c'//

}          //fecha o primeiro 'while', Note que se 'c' for igual a 's', ele executa o programa novamente, se for 'n' o programa é finalizado.//

 

Coloque os comentários nas linhas de seus programas, eles vão ajudar você a pensar sequencialmente!

Desejo sucesso!

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
4 minutos atrás, EngNaves disse:

acho que não ta certo mais também não errado kkk, caso 's' ele continua caso 'N' não continua... olha como ficou agora tudo certo!

 

 

Nops!

 

3 minutos atrás, EngNaves disse:

while ((c == 's') || (c == 'N'));

 

A condição é uma só... ou seja, "continuo repetindo?". Especificamente seria algo como: "enquanto c for igual 's' ou 'S' eu vou repetir".

 

O certo seria:

while ((c == 's') || (c == 'S'));

 

Perceba que nesse caso, qualquer valor diferente de 's' ou 'S' vai parar de repetir. Só vai repetir, se, e somente se, for 's' ou 'S'.

 

 

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, André Ferreira da Silva disse:

I


sso é algum exercício de escola? Vamos tentar ajudar...
char c;           //declaração da variável de controle//
c=s;               //atribuição inicial para a variável//  
while (c='s')   //condição para executar o seu programa, como atribuímos c=s, seu programa vai ser executado//
{                    //abre as execuções para este primeiro 'while'//
c=' '               //esvaziamos a variável c//
        /* SEU PROGRAMA/*
c=getchar();
while (c!='s') or (s!='n')  //abre o segundo 'while' e somente aceita  se for 's' ou 'n'//
            c=getchar()       //recebe a variável 'c'//
}          //fecha o primeiro 'while', Note que se 'c' for igual a 's', ele executa o programa novamente, se for 'n' o programa é finalizado.//

Coloque os comentários nas linhas de seus programas, eles vão ajudar você a pensar sequencialmente!
Desejo sucesso!

 

Sim trabalho de Faculdade, ajudou bastante, e que a parte while não tive aula mais me ajudou consegui aqui e rodou! perfeitamente!

Link para o comentário
Compartilhar em outros sites

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main()
{
	float x1, x2, y1, y2, r, raux;
	char c;
	
	do
	{
		printf("\nDigite o ponto Px: ");
		scanf("%f", &x1);
		printf("\nDigite o ponto Qx: ");
		scanf("%f", &x2);
		printf("\nDigite o ponto Py: ");
		scanf("%f", &y1);
		printf("\nDigite o ponto Qy: ");
		scanf("%f", &y2);
		
		printf("\n\n - RESOLUCAO - \n");
		
		raux=pow(x2-x1,2) + pow(y2-y1,2);
		r=sqrt(raux);
	
		printf("\n\n - O valor da distancia entre os pontos P e Q e: %.3f. ", r);
		
		printf("\n\n Deseja continuar? (s/n)\n\n");
		fflush(stdin);
		c = getchar();
		printf("\n");
	}
	while ((c == 's') || (c == 'N'));
	system ("PAUSE");
	return 0;
	
}

Código Atual, certo, Corrigido!

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!