Ir ao conteúdo
  • Cadastre-se

Laço de repetição. "C"


aqueleh4x0r

Posts recomendados

Olá, pessoal.

Estou com uma dificuldade, recebi um exercício e não consegui fazer.

Segue:

Faça um programa em C que leia um caracter do teclado sem ecoar na tela (de modo que quem digitou não consiga ver o que foi digitado) e em seguida leia uma seqüência de caracteres até que seja digitado novamente o primeiro carater lido.

Mais o professor só ensinou o básico do do-while. Ele ensinou apenas a sintaxe:

do
{
<lista de comandos>
} while (<cond>);

Eu tentei fazer aqui mais não deu, a única coisa que saiu foi isso:

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

int main()
{
char letra;
int i = 1;
letra = getch();
letra = toupper(letra);

do
{
printf("%d", i);
i++;
}
while(( i <= 999999999999) && (letra != letra));



system("pause>nul");
return (0);
}

O problema:

Quando eu uso "&&" o programa da problema no Loop, mais ou menos assim:

Letra digitada: A

1 <- Só conta até 1. Se eu digitar 'A' novamente ele fecha e se eu digitar outra letra ele vai pro 2 e assim por diante.

Quando eu uso "||" o problema fica no digito, o Loop conta normalmente mais na hora de pressionar a mesma tecla ele não fecha, mais ou menos assim:

Letra digitada: A

12345678910111213141516171819.. até 999999999999 <- Quando eu pressiono a mesma letra que foi pressionada para início do programa ele não fecha, nem pressionando outra :S

Alguém pode ajuda? '-'

Desde já,

Grato.

Link para o comentário
Compartilhar em outros sites

Bom nao tive tempo pra ver direito mas pelo que pude ver e mais ou menos assim seu codigo

#include<stdio.h>

#include<stdlib.h>

main()

{

int c,s[1000];

printf("Digite o primeiro caracter: \n");

scanf("%d",& c);

system("cls");

do

{

printf("Digite uma sequncia: \n");

printf("%d",& s);

}while(c!=s);

}

Link para o comentário
Compartilhar em outros sites

dontpanic,

Olha só cara, eu criei outra variável para guardar a letra e continuou dando mesma coisa.

Fiz de duas formas:

char letra, letra2;
int i = 1;
letra = getch();
letra = toupper(letra);

do
{
printf("%d", i);
i++;
letra2 = getch();
}
while(( i <= 100000) && (letra2 != letra));

E assim:

char letra, letra2;
int i = 1;
letra = getch();
letra = toupper(letra);

do
{
printf("%d", i);
i++;

}
while(( i <= 100000) && (letra2 = getch()) && (letra2 != letra));

Continua dando a mesma coisa, quando uso "&&" conta 1 número a cada tecla que aperta e quando uso "||" o loop flui normalmente mais não acontece nada quando aperta a tecla para fechar...

Link para o comentário
Compartilhar em outros sites

Acho que você pode tirar do while o i <= 100000

sem essa validação ele irá rodar até encontrar as outras regras....

você precisa mostrar a quantidade de tentativas que ele tentou

???

se não precisar pode tirar o a variável i

char letra, letra2;
printf("Digite uma letra qualquer: ");
letra = getch();
system("cls");
do
{ printf("Tente advinhar a letra digitada anteriormente: ");
letra2 = getch();
system("cls");
}
while(letra != letra2);

será que roda assim?

Link para o comentário
Compartilhar em outros sites

dontpanic,

A ideia do programa é: Receber um valor(No caso uma letra) e fazer um Loop imprimindo uma sequência de número(ou letras) até que a tecla que iniciou o programa seja pressionada novamente, ou seja, se eu apertei a letra 'A' para iniciar eu aperto a letra 'A' para parar.

duda3005,

o "i <= 1000" é a sequência numérica a ser imprimida até que a tecla seja pressionada novamente.

Vou levar o projeto pro meu prof assim:

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

int main()
{
char letra, letra2;
int i = 1;
letra = getch();
letra = toupper(letra);

do
{
printf("%d", i);
i++;
}
while((i <= 1000000) || (letra2 = getch()) && (letra2 != letra));



system("pause>nul");
return (0);
}

Se estiver certo eu volto aqui e falo, se estiver errado eu falo também ;P

Agora vou pra aula, até.

Link para o comentário
Compartilhar em outros sites


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

int main()
{
char letra, letra2;
int i = 1;
letra = getch();
letra = toupper(letra);

do
{
printf("%d", i);
i++;
letra2 = getch();
letra2 = toupper(letra2);
}
while((i <= 1000000) && (letra2 != letra));



system("pause>nul");
return (0);
}

Tente compilar isso aí e depois diga exatamente o erro que dá...

Eu não posso testar aqui pois não tenho o conio.h, mas pra mim o código tá normal.

Link para o comentário
Compartilhar em outros sites

Arquivado

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

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!