Ir ao conteúdo
  • Cadastre-se
jsantos18

programação em c dev c++

Recommended Posts

saudações!

sou iniciantes, aqui atualmente cursando introdução a programação, tentando desenvolver aplicação faça o sequintes comandos!

digitando executara o programa indo para menu, digitando f sai do programa e encerrei ele, e enquanto não digita s ou f fique repetindo ate ser digitado s ou f.

 

#include<iostream>#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <ctype.h>using namespace std;int main(){                                                 // início do programachar resp,s,f;printf("Deseja continuar com programa? ");scanf("%s",&resp);resp=toupper(resp);// para inquinora se minuscula ou maiscula   if(resp=='s')// entre para roda um menu    printf("execute o programa ");       if(resp=='f')// encerrer o programa   exit;    while(resp!='s'||resp!='f')// enquanto for digitado s ou f repita// digitando s acesser o menumenu......()
 
que pude me ajudar!
agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se entendi bem, você está querendo que um determinado código fique rodando permanentemente até que o usuário informe o comando de saída.
Se for isso, precisará usar métodos threading (a mais comum).

Temos um tópico bem recente, que fala sobre isso, onde um colega do fórum apresenta um exemplo bem simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok!
Eu consigo ver que você acertou, até que:

1- Esqueceu de colocar o ; ( ponto e virgula )

do, código entre chaves no final fica assim;  do{ ... código } while(resp !='s' || resp != 'f');

 

2- Não é resp =  toupper( resp); //toupper e Mnemônico para ( To Upcase ) Tr.: Somente Maiúsculas;

na verdade o que você espera é minusculas : tolower( );

 

Dentre outros detalhes segue abaixo minhas correções a ti:

do{printf("Deseja continuar com programa? ");scanf("%c",&resp); fflush(stdin);// limpar o que sobra na memoria;resp = towlower(resp);// para ignorar se minuscula ou maiúscula   if(resp=='s')// entre para roda um menu    printf("execute o programa\n");   if(resp=='f')// encerrar o programa   exit(0); }while(resp !='s' || resp !='f');// enquanto for digitado s ou f repita

Compartilhar este post


Link para o post
Compartilhar em outros sites

saudações!

obrigado pela ajudar!

 

o f tá funcionando de acordo com esperando loop para que verificar também foi digitado algo diferente de s ou f também estar funcionando bem.

mas s, digitando ele acaba entrando no loop perguntando desejo continuar e digita s ou f para continuar , digitando s tornar me perguntar de novo desejo continuar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok!
é por conta do operador condicional ( || Ou), que existe desdo seu código original;

Veja bem sendo resp = 's' termos;

 
while('s' !='s' || 's' !='f') observe que a última condições é verdadeira, por isso o loop continua;

Você pode contorna isso sozinho eu acho?

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK!
Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentando colocar 4 programas em um menu para rodar, só estar garrando no case!

se tu puder me ajudar agradeço! individualmente todos compila muito bem, agrupados no programa apresentar erro nos case.

dois programas 1 e 3 tenho usar printf e scanf e 2 e 4 tenho que usar cout e cin, pelo li isso não influência no programa, copilei no devc++ e no codeblocks individualmente cada programa executou eles.

 

 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <ctype.h>
#include<iostream>
using namespace std;
int main()
{
char resp,s,f;
int N,R;
char op;
int sai = 0;
     do{
     printf("\nDeseja continuar(S)para SIM e(F)para FALSO com programa? ");
     scanf("%s",&resp); 
     fflush(stdin);// limpar o que sobra na memoria
     resp = towlower(resp);// para ignorar se minuscula ou maiúscula
         
     if(resp=='s')// entre para roda um menu
     printf("\n TU SERA DIRECIONADO PARA O MENU DO PROGRAMA, E BOA DIVERSAO!");
     if(resp=='f')// encerrar o programa
     exit(0);
     }while(resp!='s'&& resp!='f');// enquanto não for digitado s ou f repita
do{
system("cls");
printf("\n MENU: ");
printf("\n1) Mostrar os (V)alores primos entre dois numero digitado pelo usuario:");
printf("\n2) Calcular o ®esultado numeros impares dividido por primos: ");
printf("\n3) Calcular o (M) entre dois numero digitado pelo usuario:");
printf("\n4) Calcular a (D)imensao de 2 vetores ordene-lo ordem crescente");
printf("\n5) (S)air do menu:");
printf("\n\nIngresse sua Escolha pelo nr ou pela letra entre parenteses:");
op = getche();
system("cls");
switch(op)
{
// programa 1 mostrar o primos entre dois numero
case '1':
case 'V':
case 'v':
int n1, n2, d=1, cont=0;// variaveis
    
    printf("digite o primeiro numero: "); // digita dois numeros
    scanf("%d",&n1);
    
    printf("\n");
    
    printf("digite o segundo numero: ");       // e ler este dois numeros
    scanf("%d",&n2); 
                     
    printf("\n"); // pular linha
    
    printf("Os numeros primos sao:");
    while(n1<=n2)      // enquanto num 1 menor ou igual
    {
     while(d<=n1)
      {
       if(n1%d==0) // se n1 % d igual incrementar
        cont++;   // variavel contadora
        d++;
        }
       if(cont==2)
       printf("%3.d ", n1);//imprimir
        n1++; 
        d=1; 
        cont=0;     
getch();
break;
 
case '2'://Programa 2 fazer somatório números impares dividido por primos
case 'R':
case 'r':
   float serie = 0; // Valor da série
int numerador; // Numerador atual da série
int denominador; // Denominador atual da série
int tamanho; // Número de termos da série
int testeInicial = 3; // Primeiro número que irá ser testado se é primo ou não
 
// Solicita o usuário o número de termos que a série terá(valor máximo)
cout << "Digite o numero de termos da serie: ";
cin >> tamanho;
 
for (int k = 0; k < tamanho; k++)
{
// Primeiro termo da série é 1
if (k == 0)
serie += 1;
else if (k == 1)
serie += (float)3 / 2;
// Próximos termos da série
else
{
numerador = k * 2 + 1; // Numerador, números ímpares
 
// Determinar qual número primo será usado no denominador
denominador = testeInicial; // Sempre será o proximo número primo tomando como base o anterior 
int cont = 0; // Conta quandos divisores 
int primosEncontrados = 0; // Conta quantos primos estarão sendo encontrador a partir do número 3
int base = sqrt(denominador); // Base para saber a partir de qual numero irá testar se o número é primo
 
// Laço responsável por encontrar próximo primo para ser usado no denominador
while (1)
{
for (int i = 2; i <= base; i++)
if (denominador%i == 0)
cont++;
 
if (cont == 0)
{
primosEncontrados++;
}
 
if (primosEncontrados)
{
break;
}
 
if (cont > 0)
{
cont = 0;
denominador += 2;
base = sqrt(denominador);
}
}
 
// Determina se vai somar ou subtrair o próximo termo
if (k % 2 == 0)
serie -= (float)numerador / denominador;
else
serie += (float)numerador / denominador;
 
testeInicial = denominador + 2;
}
 
// Mostra na tela os termos da série
if (k == 0)
cout << "\nSerie: 1";
else if (k == 1)
cout << " + 3/2";
else if (k % 2 == 0)
cout << " - " << numerador << "/" << denominador;
else
cout << " + " << numerador << "/" << denominador;
}
 
// Mostra na tela o valor da série
cout << "\n\nO resultado da serie de " << tamanho << " termos e: " << serie;
 
getch();
break;
 
 
case '3'://Programa 3 mdc entre dois numero
case 'M':
case 'm': 
int num1, num2, mdc, resto, menor, maior;// variaveis
 
    printf("Digite o primeiro valor: ");
    scanf("%d",&num1);
    printf("Digite o segundo valor: ");
    scanf("%d",&num2);
         
      if(num1>num2)
      {
      maior=num1;// comparação maior e igual num1
      menor=num2;// comparação menor e igual num2
      }
      if(num1<num2)// comparação num1 maior num2
      {
       maior=num2;
       menor=num1;
       }
       if(num1==num2)
       {
        mdc=num1;
        printf("\n\n Os dois numero digitado sao iguais, MDC e: %d ", mdc);//  se usúario  digita
        getch();                                                        // numeros iguais
        return 0;                                                       // imprimir resultado
        }
        
           resto=maior%menor;
           while(resto)//
           {
           maior=menor; // comparação
           menor=resto;
           resto=maior%menor; //comparação e operação
           }
           mdc=menor;
           printf("\n\n Os dois numero digitado sao diferentes, MDC e: %d ", mdc);// imprimir resultado numeros diferentes    
    
    getch();
   break;
 
 
case '4':// Programa 4 fazer balance line entre dois vetores e armazenar num terceiro em ordem crescente
case 'D':
case 'd': 
const int TAM_MAX_VET_1 = 100; // Dimensão limite (Máximo) do vetor 1 
const int TAM_MAX_VET_2 = 100; // Dimensão limite (Máximo) do vetor 2
const int TAM_MAX_VET_3 = 5; // Dimensão limite (Máximo) do vetor 3
int tamanhoVetor1; // Dimensão do vetor 1
int tamanhoVetor2; // Dimensão do vetor 2
int tamanhoVetor3; // Dimensão do vetor 3
int vetor1[TAM_MAX_VET_1]; // Vetor 1
int vetor2[TAM_MAX_VET_2]; // Vetor 2
int vetor3[TAM_MAX_VET_3]; // Vetor 3
 
// Inicializa os vetores com valor 0 em todas as posições
for (int i = 0; i < TAM_MAX_VET_1; i++) vetor1 = 0;
for (int i = 0; i < TAM_MAX_VET_2; i++) vetor2 = 0;
for (int i = 0; i < TAM_MAX_VET_3; i++) vetor3 = 0;
 
// Solicita que o usuário digite o tamanho dos vetores 1 e 2             //   OBS:
cout << "Digite o tamanho do Vetor 1: ";                                // cout e mesmo que printf
cin >> tamanhoVetor1;                                                   // cin e mesmo que scanf
cout << "Digite o tamanho do Vetor 2: ";                                // desenvolvi no clodbocks o código
cin >> tamanhoVetor2;
 
// Solicita que o usuário digite os valores do vetor 1
cout << "\nEntre com os valores do Vetor 1.\n";
 
for(int i = 0; i < tamanhoVetor1; i++)
{
cout << "Vetor 1 [" << i << "]: ";
cin >> vetor1;
}
 
// Solicita que o usuário digite os valores do vetor 2
cout << "\nEntre com os valores do Vetor 2.\n";
 
for (int i = 0; i < tamanhoVetor2; i++)
{
cout << "Vetor 2 [" << i << "]: ";
cin >> vetor2;
}
 
// Mostra ao usuário os vetores que ele criou
 
// Mostra na tela o vetor 1
cout << "\nOs vetores criados foram:";
cout << "\nVetor 1: [";
 
for (int i = 0; i < tamanhoVetor1; i++)
{
if (i == tamanhoVetor1 - 1)
cout << vetor1 << "]";
else
cout << vetor1 << ",";
}
 
// Mostra na tela o vetor 2
cout << "\nVetor 2: [";
 
for (int i = 0; i < tamanhoVetor2; i++)
{
if (i == tamanhoVetor2 - 1)
cout << vetor2 << "]";
else
cout << vetor2 << ",";
}
 
// Ordena o Vetor 1 com o método de ordenação por seleção
for (int i = 0; i < tamanhoVetor1 - 1; i++)
{
int min = i;
for (int j = i + 1; j < tamanhoVetor1; j++) {
if (vetor1[j] < vetor1[min]) {
min = j;
}
}
if (i != min) {
int aux = vetor1;
vetor1 = vetor1[min];
vetor1[min] = aux;
}
}
 
// Ordena o Vetor 2 com o método de ordenação por seleção
for (int i = 0; i < tamanhoVetor2 - 1; i++)
{
int min = i;
for (int j = i + 1; j < tamanhoVetor2; j++) {
if (vetor2[j] < vetor2[min]) {
min = j;
}
}
if (i != min) {
int aux = vetor2;
vetor2 = vetor2[min];
vetor2[min] = aux;
}
}
 
// Mostra ao usuário os vetores que ele criou ordenados pelo método de Seleção
 
// Mostra na tela o vetor 1 ordenado
cout << "\n\nVetores ordenados pelo metodo de Selecao:";
cout << "\nVetor 1: [";
 
for (int i = 0; i < tamanhoVetor1; i++)
{
if (i == tamanhoVetor1 - 1)
cout << vetor1 << "]";
else
cout << vetor1 << ",";
}
 
// Mostra na tela o vetor 2 ordenado
cout << "\nVetor 2: [";
 
for (int i = 0; i < tamanhoVetor2; i++)
{
if (i == tamanhoVetor2 - 1)
cout << vetor2 << "]";
else
cout << vetor2 << ",";
}
 
// Executa o "Balance Line" entre os vetores 1 e 2 e armazena o resultado no vetor 3
for (int k = 0, i = 0, j = 0, aux = 0; k < tamanhoVetor1 + tamanhoVetor2; k++)
{
if (k == 0)
{
if (vetor1 <= vetor2[j])
{
vetor3[aux] = vetor1;
aux++;
i++;
}
else
{
vetor3[aux] = vetor2[j];
aux++;
j++;
}
}
else
{
if (vetor1 <= vetor2[j] && i < tamanhoVetor1)
{
if (vetor3[aux - 1] != vetor1)
{
vetor3[aux] = vetor1;
aux++;
}
 
i++;
}
else if (j < tamanhoVetor2)
{
if (vetor3[aux - 1] != vetor2[j])
{
vetor3[aux] = vetor2[j];
aux++;
}
 
j++;
}
}
 
if (k == tamanhoVetor1 + tamanhoVetor2 - 1)
tamanhoVetor3 = aux;
}
 
// Mostra na tela o vetor 3
cout << "\n\nVetor resultante pelo \"balance line\" entre os vetores 1 e 2:";
cout << "\nVetor 3: [";
 
for (int i = 0; i<tamanhoVetor3; i++)// enquanto meno tamnho vetor 3 repita
{
if (i==tamanhoVetor3 - 1)// se i igual tamvetor 3 - 1
cout << vetor3 << "]";
else
cout << vetor3 << ",";//imprima oposição do vet 3
}
 
getch();
break;
 
case '5':// Sair do programa
case 'S':
case 's': sai=1;
break;
 
default: printf("\n Escolha inadequada, tente de novo! ");
printf("\n Aperte uma letra ou numero para voltar o menu.");
getch();
break;
}
}while(!sai);
printf("\n Obrigado por utilizar estre programa");
printf("\n\n programador");
printf("\n JSantos18");
getch();
return(0);
}

se alguém puder me ajudar, agradeço pela ajudar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

No "case '1':", o "while()" não está fechado.

Após isso corrigido, pode ser que dê a mensagem de erro "switch case is in protected scope". Se isso ocorrer, basta fazer a separação dos cases usando "{ }":

            case '1':            case 'V':            case 'v':            {                int n1, n2, d=1, cont=0;// variaveis                 printf("digite o primeiro numero: "); // digita dois numeros                scanf("%d", &n1);                 printf("\n");                 printf("digite o segundo numero: ");       // e ler este dois numeros                scanf("%d", &n2);                 printf("\n"); // pular linha                 printf("Os numeros primos sao:");                while( n1 <= n2 )      // enquanto num 1 menor ou igual                {                    while( d <= n1 )                    {                        if( n1 % d == 0) // se n1 % d igual incrementar                            cont++;   // variavel contadora                        d++;                    }                                        if( cont == 2 )                        printf("%3.d ", n1);//imprimir                                        n1++;                    d = 1;                    cont = 0;                    getch();                }                break;            }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei dessa forma que tu me passou, mas mesmo assim não rodou, continuar dando erro no case 2, vou tentar colocar as variáveis fora dos case ver vou ver roda, por cada programa e roda bem, o problema e quando esta juntei eles em um programa só.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No "case '1':", o "while()" não está fechado.

Após isso corrigido, pode ser que dê a mensagem de erro "switch case is in protected scope". Se isso ocorrer, basta fazer a separação dos cases usando "{ }":

 

            case '1':            case 'V':            case 'v':            {                int n1, n2, d=1, cont=0;// variaveis                 printf("digite o primeiro numero: "); // digita dois numeros                scanf("%d", &n1);                 printf("\n");                 printf("digite o segundo numero: ");       // e ler este dois numeros                scanf("%d", &n2);                 printf("\n"); // pular linha                 printf("Os numeros primos sao:");                while( n1 <= n2 )      // enquanto num 1 menor ou igual                {                    while( d <= n1 )                    {                        if( n1 % d == 0) // se n1 % d igual incrementar                            cont++;   // variavel contadora                        d++;                    }                                        if( cont == 2 )                        printf("%3.d ", n1);//imprimir                                        n1++;                    d = 1;                    cont = 0;                    getch();                }                break;            }

Colocou os "{}" em todos os 'cases', como mencionei acima?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você fez a escolha correta para os bugs quando disse declarar variaveis fora do case, por vários motivo declarar variáveis no topo é um regra. Eu acho trivial. Na questão do case x: case ele é um byte que aponta para uma seqüência de bytes prévia. Declaração de várias não é memória prévia e sem momentânea. Daí geralmente da erro de semântica se não deu tudo bem. A case também aponta para blocos de bytes colocar tudo dentro de blocos {sou um bloco} também funciona mas não recomendo use inicializacao no topo como nos recomenda os professores. Já que bloco fica restrito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa noite

 

recemtemente de inicio ao devc++, e meu professor passou uma tarefa meio sem noção pra turma, estou tendo mt dificuldade

se alguem puder me da uma luz

 

o seguinte excercicio é

 

Crie um código em  C que realize um controle de acionamento de uma lâmpada.  O
dado de entrada é de um sensor de presença. Mostre na saída um aviso de  comando de
saída:
Se sensor detectar presença, informar = Lâmpada Ativada
Se sensor não detectar presença, informar = Lâmpada Desativada

Compartilhar este post


Link para o post
Compartilhar em outros sites
antonio_xx2

Faça seu post, em um tópico só seu.

Para não misturar os temas, e em respeito a seu colega também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×