Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #58 da revista programar. Faz já o download aqui!

pedroluzio

Problema em ciclo For

Mensagens Recomendadas

pedroluzio    1
pedroluzio

Boas, estou a fazer um programa em que:

Peça o numero do caracter ascci;

a quantidade de caracteres numa linha

Se uer horizontal, vertical ou rectângulo

Mas no case 3 está lá um problema, faz ciclo infinito, não estou a conseguir encontrar o problema

#include <stdio.h>
main()
{

  int ascii, comp, modo, i;

  printf("Digite o numero ascii: ");
  scanf("%d", &ascii);

  printf("\nDigite o tamanho da linha: ");
  scanf("%d", &comp);

  printf("\tHorizontal - 1\n\tVertical - 2\n\tRectangulo - 3\n");
  scanf("%d", &modo);


  switch (modo)
  {

		 case 1:
				 for(i=1 ; i<=comp ; i++)

						 printf("%c",ascii);

				 break;

		 case 2:
			    for(i=1 ; i<=comp ; i++)

						 printf("%c\n",ascii);

				 break;

		 case 3:
			    for(i=1 ; i<=comp ; i++)

					    printf("%c",ascii);


			    for(i=1 ; i<=comp ; i++)
			    {

					    printf("\n%c",ascii);	   


					    for(i=1 ;i<=comp-2 ; i++)

							    printf(" ");



					    printf("%c",ascii);	   

			    }

			    for(i=1 ; i<=comp ; i++)

					    printf("%c",ascii); 


  }

getch();	
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1139
HappyHippyHippo
for(i=1 ; i<=comp ; i++)
{
 printf("\n%c",ascii);          
 for(i=1 ;i<=comp-2 ; i++) {
   // ..
 } // este ciclo acabe sempre com "i = comp - 1"
   // i nunca chega a ser maior que "comp" por causa do ciclo anterior
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1139
HappyHippyHippo

vamos então per outro lado :

regra de OURO: se tens um ciclo interno e um ciclo externo, nunca usar a mesma variável de controlo para os dois ciclos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedroluzio    1
pedroluzio

Mesmo assim -.-'

case 3:
                                   for(i=1 ; i<=comp ; i++)

                                                   printf("%c",ascii);


                                   for(j=1 ; j=comp ; j++)
                                   {

                                                   printf("\n%c",ascii);        


                                                   for(i=1 ;i<=comp-2 ; i++)

                                                                   printf(" ");



                                                   printf("%c",ascii);  

                                   }

                                   for(i=1 ; i<=comp ; i++)

                                                   printf("%c",ascii);

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1139
HappyHippyHippo

se tens um ciclo que te parece infinito é porque o valor de "comp" é demasiado grande, porque o código não dá um ciclo infinito.

isto assumindo que não estás a fazer asneira a compilar e executar a aplicação

ps :

for(j=1 ; j=comp ; j++)
//         A
//         |
//    que é isto ??

Editado por HappyHippyHippo

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.