1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Figuras Geometricas Em C

Discussão em 'Programação' iniciada por djn3ox, 11 de Junho de 2008. (Respostas: 10; Visualizações: 5783)

  1. djn3ox

    djn3ox Power Member

    Boas .
    Gostaria de me tirassem uma duvida .
    Como posso fazer em C , uma cruz suasticas ( Aquela Nazi ) .
    Tenho que fazer 6 figuras, 4 delas ja estão feitas.
    Deixei as mais dificeis para o fim , que são a Cruz Suastica e um diamante com um quadrado la dentro .

    Alguem me poderia ajudar?

    Aqui fica o codigo de o rectangulo ( Apenas a Função ) :

    Código:
    void rectangulo ()
    {
      int linha,coluna,cont1,cont2;
      char letra;
      
    system("cls");
    printf ("Introduza a Linha a Coluna e o Caracter : \n");
    scanf ("%d %d %c",&linha,&coluna,&letra);
     
    for (cont1=0;cont1<linha;cont1++)
        {
            printf ("%c",letra);
            if (cont1==0||cont1==(linha-1))
            {
            for (cont2=1;cont2<(coluna-1);cont2++)
               {
                  printf ("%c",letra);
               }
            }
            else
            {
            for (cont2=1;cont2<(coluna-1);cont2++)
               {
                  printf (" ");
               }
            }        
            printf ("%c\n",letra);
        }
        
    }
     
    Última edição pelo moderador: 11 de Junho de 2008
  2. MPalhas

    MPalhas Power Member

    e qual é o problema? se soubeste fazer isso o resto não deverá ser muito mais complicado (estou a falar de cabeça, nunca experimentei)

    nesse rectangulo, pediste o comprimento, largura e o caracter usado

    para a cruz basta pedires uma medida (porque se não me engano aquilo tem 8 rectas todas iguais
    pode dar um bocado de trabalho fazer os ciclos para a desenhar, mas acho que não deve ser muito complicado.

    o diamante com o quadrado, que medidas queres pedir? podias por exemplo, pedir apenas a largura do diamante, e fazer uma coisa tipo piramide. para um diamante de largura 5 ficava:

    Código:
      a
     aaa
    aaaaa
     aaa
      a
    e depois bastava desenhar um quadrado á volta disto

    agora não estou com muito tempo mas se ainda não tiveres conseguido daqui a pouco em tento fazer estes dois, até parece um exercicio engraçado
     
  3. djn3ox

    djn3ox Power Member

    Pois , o problema é fazer os ciclos da cruz suastica.
    Mas nessa nao vou pedir nem altura nem comprimento, apenas o caracter a uzar.
    Por exemplo

    Introduza o caracter da Cruz :
    R

    [​IMG]
     
    Última edição: 11 de Junho de 2008
  4. djn3ox

    djn3ox Power Member

    Tentei fazer hoje uma mira, que em principio ou fica a mira ou o diamante.
    E epa, no final saiu-me tipo uma minhoca =\

    Ve aqui .

    Interface do programa :
    [​IMG]


    Ao executar a Mira , sai -me genero uma minhoca =\
    [​IMG]

    Código:
    Tinha que ficar genero assim.
     
         X
         X
         X
      XXXXXXX
         X
         X
         X
    
    Fica aqui o codigo da Mira (apenas Função) :

    Código:
    void mira ()
    {
    int linha,coluna,cont1,cont2;
    char letra;
     
    system("cls");
    printf ("Introduza o caracter : \n");
    scanf ("%c",&letra);
     
    for (coluna=0;coluna<5;coluna++)
        {
            printf (" ");
                   if ((coluna==2) || (linha==2))
                      {
                          printf ("%c\n",letra);
                      }
     
                          for (linha=0;linha<5;linha++)
                           {
                             printf (" ");
                              if ((coluna==2) || (linha==2))
                                 {
                                   printf ("%c\n",letra);
                                 }
                           }  
        }
     
    }
    
     
    Última edição: 12 de Junho de 2008
  5. MPalhas

    MPalhas Power Member

    ainda não testei isso, mas parece-me que estás a tentar comparar a variavel linha sem sequer lhe dar um valor primeiro
     
  6. djn3ox

    djn3ox Power Member

    O tamanho , nao vai ser pedido, vai ser igual a 5.
    5 X para cima
    5 X para o lado

    Tenho que atribuir o valor a uma variavel ?
     
  7. MPalhas

    MPalhas Power Member

    não, o que eu estava a dizer é que, na primeira passagem pelo primeiro for, ao fazer isto:
    if ((coluna==2) || (linha==2))

    a variavei linha ainda não tem nenhum valor. o visual studio queixa-se disso, não sei se o teu compilador também

    mas para a mira, aqui tens, simples e eficaz:

    Código:
    void mira () {
        int linha,coluna;
        char letra;
     
        system("cls");
        printf ("Introduza o caracter : \n");
        scanf ("%c",&letra);
        printf("\n\n");
        for (linha=0; linha<5; linha++) {
            for (coluna=0; coluna<5; coluna++) {
                if (linha==2 || coluna==2)
                    printf("%c", letra);
                else
                    printf(" ");
            }
            printf("\n");
        }
    }
    o que tu tinhas mal eram os ciclos. estavas a passar primeiro pelas colunas e depois pelas linhas. tem que ser ao contrário
     
  8. djn3ox

    djn3ox Power Member

    Brigadao, agora ja puz isso entre matrizes , para ficar como nos critérios pedidos .
    Estava a tentar voltar agora uma piramide, para fazer um diamante .
    Ja meto aqui o codigo .

    Aqui fica a piramide.
    Nao percebo uma cena. ele o Executavel Abre.
    Mas quando vou executar no compilador , simplesmente aparece Prima qualquer tecla para continuar.

    Aqui fica o codigo .

    Código:
    main()
    {
     
    int valor,a,b,c,h;
      a=9;
     
     while (valor>=a) 
         {
            h=a;
            if (a==h)
               {
                    if (a==0) printf ("                                  ");
                    c=0;
                    b=h;
     
                    while (c<h)
                          {
                               printf ("%d",c);
                               b=b-1;
                               c=h-b;
                          }
                    if (c==h)
                    {
                             printf ("%d",h);
                    }      
               b=0;
               while (b<h)
                     {
                          b=b+1;
                          c=h-b;
                          printf ("%d",c);
                     }
                }
                printf ("\n");
                if (h==0) printf ("                                 ");
                if (h==1) printf ("                                ");
                if (h==2) printf ("                               ");
                if (h==3) printf ("                              ");
                if (h==4) printf ("                             ");
                if (h==5) printf ("                            ");
                if (h==6) printf ("                           ");
                if (h==7) printf ("                          ");
                if (h==8) printf ("                         ");
               a++;
          }
     
      printf ("\n");
      printf ("                                        Base\n");
     
      system("PAUSE"); 
     
    }
     
    
    A idea era pegar nesse codigo que faz a piramide, e depois inverter, mas agora como fasso isso ?
    Copio outravez as funcoes e meto -- ?
     
    Última edição pelo moderador: 12 de Junho de 2008
  9. djn3ox

    djn3ox Power Member

    instalei agora o visual studio para ver se consigo corrigir esse programa da piramide e inverte lo, porque o usava era o Dev C e simplesmente nao me da erro nenhum.
     
  10. djn3ox

    djn3ox Power Member

    Acabei agora mesmo de fazer o diamante.

    Aqui fica o codigo (Apenas Função):

    Código:
    void diamante()
    {
        int linha,coluna;
        char letra,x[5][5];
     
        system("cls");
        printf ("Introduza o caracter : \n");
        scanf ("%c",&letra);
        printf("\n\n");
        
        for (linha=0; linha<5; linha++) 
        {
            for (coluna=0; coluna<5; coluna++) 
                {
                if ((linha==2 || coluna==2) || (linha==1 && coluna==3) || (linha==3 && coluna==1) || (linha==3 && coluna==3) || (linha==1 && coluna==1))
                   {           
                     x[linha][coluna]=letra; 
                   }
                else
                    {
                     x[linha][coluna]=' ';
                    }
               }
         }
          for (linha=0; linha<5; linha++) 
               {
              for (coluna=0; coluna<5; coluna++) 
                  {  
                             printf ("%c",x[linha][coluna]);
                  }
            printf("\n");
                }
        
    }
    
     
  11. djn3ox

    djn3ox Power Member

    Peguei no codigo do diamante , para fazer o ultimo desenho , a Cruz Suastica ( NAzi ) .
    So mudei uma cena, que foi chamar a matriz depois la em baixo , que foi pedido .

    Agora é o seguinte, ja fiz a estructura e meti no If , o desenho do diamante para testar o programa.

    MAs acontence, que o programa nao faz nada, simplesmente nao desenha.

    Aqui fica o codigo
    Código:
    void cruz()
    {
         char x[7][7],letra;
         int linha,coluna;
         
             system("cls");
             printf ("Introduza o caracter : \n");
             scanf ("%c \n\n",&letra);
             
                   for (linha=0 ;linha<7 ;linha++)
                       {
                          for (coluna=0; coluna<7 ;coluna++)
                              {
                                 if ((linha==2 && coluna==2) || (linha==1 && coluna==3) || (linha==3 && coluna==1) || (linha==3 && coluna==3) || (linha==1 && coluna==1))
                                    {
                                      x[linha][coluna]=letra;
                                    }
                                 else 
                                    {
                                      x[linha][coluna]=' ';
                                    }
                              }
                       }
    
                   for (linha=0 ;linha<7 ;linha++)
                       {
                          for (coluna=0 ;coluna<7 ;coluna++)
                              { 
                                 printf ("%c",x[linha][coluna]);
                              }
                          printf ("\n");
                       }
    }
    
    
     
    Última edição: 13 de Junho de 2008

Partilhar esta Página