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

[Encerrar] Resolução de um exercicio

Discussão em 'Programação' iniciada por Rodriguez22, 4 de Fevereiro de 2009. (Respostas: 24; Visualizações: 2379)

  1. Boas, tenho um exame sexta e agradecia que me ajudassem a resolver os seguintes exercicios de fundamentos de programação sff
    é que eu sou um zero nisto xD

    1. "
    Considere que o ficheiro fexame.txt contem os valores referentes aos elementos de uma matriz de 4 x 4 a que correspondem os seguintes dados, lidos coluna a coluna:

    1 2 0 3 0 0 4 0 5 0 6 0 7 8 0 9

    Baseando-se no programa abaixo apresentado, modifique-o, de modo a utilizar um vector bidimensional em vez da variavel w e apresenta no ecrã esse vector bidimensional (m~triz), disposto da seguinte forma:

    Código:
    1 0 5 7 
    2 0 0 8 
    0 4 6 0 
    3 0 0 99
     
    #include<stdio.h>
    #include<stdlib.h>
    int main () 
    {
    FILE *fe;
    int w;
    fe = fopen("c:\\fexame.txt", "r");
    if(fe == NULL)
    {
    printf("\n O ficheiro nao existe no caminho especificado.");
    exist(1);
    }
    while( !feof(fe) )
    {
    fscanf( fe, "%d", &w);
    printf("%d\n", w);
    }
    fclose(fe);
    }
    
    "
    e o 2º
    "
    Escreva um programa em linguagem C, com as seguintes caracteristicas:

    Peça ao utilizador um numero inteiro pertencente ao intervalo [5, 15].

    - Verifique se o numero fornecido pelo utilizador pertence ao intervalo e e' IMPAR.

    · Se o numero fornecido nao for impar ou nao pertencer ao intervalo, volta a pedir novo numero.

    · Se o numero fornecido pertencer ao intervalo e for impar, desenha no ecra um triangulo isosceles com asteriscos, com um numero de asteriscos na base, igual ao numero fornecido pelo utilizador e na posiçao apresentada no exemplo abaixo.

    Exemplo:

    Numero inteiro fornecido pelo utilizador 5

    Output do programa:
    *
    **
    ***
    ****
    *****

    (os *'s são centrados)
    "
    Agradeço desde já a ajuda pessoal.



    ;)
     
    Última edição: 7 de Fevereiro de 2009
  2. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Esqueceste-te de mencionar onde é que tens dúvidas :) é que ninguém te vai fazer a papinha ;)
     
  3. Pois, esqueci-me
    no primeiro é geral, no segundo é fazer aparecer os *'s, fazes-mos a verificação com um do while, geramos os *´s com o for e depois vem a minha duvida, fazer aparecer os *'s com se com um printf, ou um puts char e como :S
     
  4. Bem quanto ao é primeiro acho k é obvio onde vao surgir as principais modificações!

    Obviamente dentro do while (claro k vais ter d transformar w num array bidimensional d ints)!

    dps é acrescentar um contador dentro do while e um "for" com passo quatro e axo que tens o problema resolvido!

    No segundo eu resolveria com um do...while para fzr a verificação e dps com um "for" dentro d um while para imprimir o triangulo.

    dentro d "for" um printf(*); e dps do "for"" mas ainda dentro do while um printf(\n);
    Claro que tens d meter contadores e criar outra variavel!

    (Eu sei k n fui muito especifico, mas quero ver se chegas lá sozinho!) ;)
     
  5. mazinhu

    mazinhu Power Member

    Isso é mais ou menos simples!


    pedir numero;
    verificar numero[5.15] - (if num >= 5 and num <= 15) ou outro qql, tipo um while.
    se for verdade verifica se e' impar( penso que em c e' a %)
    Código:
    CODE
    int x = 5;
    
    if x % == 0
    {
        cout<< "Novo número";
    else
       cout << "Número Imapar";
    }
    
    Por ultimo crias uma variavel 'z' qe comece a 1 e que seja comparada com o numero introduzido pelo utilizador. faz um ciclo para que:

    Código:
    Enquanto z<=numero{
    enquanto z<estrela; {escrever "*";}
    escrever "/n";(quebra de linha)
    }
    Penso que seja basicamente isso.
     
    Última edição: 5 de Fevereiro de 2009
  6. Código:
        
      [COLOR=blue][FONT=&quot]#include[/FONT][/COLOR][FONT=&quot] [COLOR=#a31515]<stdio.h>[/COLOR][/FONT]
      
      [COLOR=blue][FONT=&quot]void[/FONT][/COLOR][FONT=&quot] main()[/FONT]
      [FONT=&quot]{[/FONT]
      
      [COLOR=blue][FONT=&quot]int[/FONT][/COLOR][FONT=&quot] a ;[/FONT]
      [COLOR=blue][FONT=&quot]char[/FONT][/COLOR][FONT=&quot] op, i;[/FONT]
      [COLOR=blue][FONT=&quot]do[/FONT][/COLOR][FONT=&quot]{[/FONT]
      [COLOR=blue][FONT=&quot]do[/FONT][/COLOR][FONT=&quot]{[/FONT]
      
      [FONT=&quot]printf ([COLOR=#a31515]"insira um valor entre 5 e 15\n\n"[/COLOR]);[/FONT]
      [FONT=&quot]scanf([COLOR=#a31515]"%d"[/COLOR], &a);[/FONT]
      [COLOR=green][FONT=&quot]//printf( " a=%d\n\n", a);[/FONT][/COLOR]
      
      [FONT=&quot]}[COLOR=blue]while[/COLOR](((a>5)||(a<15))&&(a%2==0));[/FONT]
      
      [COLOR=blue][FONT=&quot]for[/FONT][/COLOR][FONT=&quot] ( i=1 ; i <=a ; i++)  {[/FONT]
      
      [FONT=&quot]    //putchar ();[/FONT]
      [FONT=&quot]    }[/FONT]
      
      
      
      [FONT=&quot]printf([COLOR=#a31515]"\ndeseja sair? (s/n)\n\n"[/COLOR]);[/FONT]
      [FONT=&quot]scanf([COLOR=#a31515]" %c"[/COLOR], &op);[/FONT]
      
      [FONT=&quot]}[COLOR=blue]while[/COLOR](op==[COLOR=#a31515]'n'[/COLOR]);[/FONT]
      
      [FONT=&quot]}[/FONT]
      
    , este que é o segundo. O meu unico problema é meter a escrever os *'s, tenho impressao q é com putchar, porem não consigo :S

    para o 1º tenho entao tenho de definir uma matriz[j] , e fazer dois for's ??
     
  7. Para verificares se o numero está entre 5 e 15 nao podes meter um "||" mas sim um "&&"

    Código:
     
    while( n<=a){
       for ( i=1 ; i <=n ; i++) {
            printf("*") ;
       }
       printf("/n");
       n++;
     
    }
    
    Acho que isto resolve o teu problema!
    Não te esqueças de inicializar o n a 1 ou 0!
     
    Última edição: 5 de Fevereiro de 2009
  8. mazinhu

    mazinhu Power Member

     

  9. Obrigado, já ta a funcionar bacano. Só mais uma coisa, para meter o *'s centrados, para ficar em piramide como de faz, ja tentei "\t" e nao me resultou em nada:s
     
  10. mazinhu

    mazinhu Power Member

    Se voce colocar o /t vai e' criar uma tabulaçao e ficar algo assim(penso eu)

    ----*
    ----**
    ----***

    ( ---- = /t )
    nunca tentei fazer isso centrado.
    não sei se me fiz entender
     
  11. Sim sim, eu tentei e vi como ficou, entendi ;). A minha duvida é deixar isso centrado
     
  12. mazinhu

    mazinhu Power Member

    Não sei se da mais tenta fazer algo assim.

    uma variavel centrar igual ao numero.
    depois divide essa variavel por dois e subtrai a ela uma variavel q=1 que vai ser incrementada de um a um para diminuir o espaço da proxima linha.


    Código:
    centrar = num;
    centrar = (centrar / 2);
    for (centrar-q; centrar <=0;q++){
    printf(" ");}
    inventei isso aqui agora, tenta incrementar isso ao teu codigo. :p
    Boa Sorte!
     
  13. obrigado, mas podes-m explicar uma coisa?? isto fica depois do for que está a gerar os *'s? e o num é o valor pedido?
     
  14. mazinhu

    mazinhu Power Member

    isso fica antes de escrever as "*"
    se nao cria espaços depois xD

    sim o num e' o valor introduzido pelo utilizador
     
  15. Código:
    n=0;
    while( n<=a){
     
        for ( i=1 ; i <=n ; i++) {
            printf("*") ;
       }
       printf("\t\n");
       n++;
     
    }
    
    
    dsculpa eu sei que é pedir de mais, mas podes explicar-me melhor onde meto o teu código e porque sff
     
  16. mazinhu

    mazinhu Power Member

    Código:
    n=0;
    while( n<=a){
     
        for ( i=1 ; i <=n ; i++) {
             for (centrar-q; centrar <=0;q++){
                 printf(" ");
             }
       printf("*") ;
       }
       printf("\t\n");
       n++;
     
    }
    
    
    Tenta assim.
    fica antes de escrever a estrela para por o espaço antes da estrela.
    Nao sei se isso funciona
     
  17. nao funciona :S
    Agradecia que alguém me ajudasse na resolução do 1º exercício sff
     
    Última edição: 6 de Fevereiro de 2009
  18. N percebo o que queres dizer com deixar centrado :s

    Quanto ao primeiro!
    Código:
    i=0;
    while( !feof(fe) )
    {
     
    for(j=0;j<4;j++){
      fscanf( fe, "%d", w[i][j]);
      printf("%d\n", w);
      }
    i++;
    }
    
    Sei que já foi tarde mas não pude responder antes! :s
     
    Última edição: 6 de Fevereiro de 2009
  19. quando disse centrado refiro-me a ficar mais ou menos assim, tipo pinheiro/ piramide
    Código:
    ______________*
    _____________**
    _____________***
    ____________****
    ___________*****           
            
     
  20. Código:
     
    while( n<=a){
      printf("\t\t\t") ;
      for ( i=1 ; i <=n ; i++) {  
      printf("*") ;
    }
    printf("/n");
    n++; 
    }
    
    Isso deve funcionar!
     

Partilhar esta Página