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

Pequeno exercicio em c

Discussão em 'Programação' iniciada por Remott, 19 de Abril de 2003. (Respostas: 9; Visualizações: 1869)

  1. Remott

    Remott Guest

    Boas ppl.
    Venho aqui para pedir ajuda no seguinte: queria fazer um pequeno programa que leia a palavra digitada pelo utilizador, e que depois a escreva ao contrário. Pois bem, fiz uma coisa bem simples, que na minha opinião deveria dar, mas em vez disso escreve sem parar na tela a 1ª letra que o utilizador escreveu. O que eu tenho feito é o seguinte:

    int main()
    {
    int i,num,contador=0;
    char string[100];
    printf("Escreva uma palavra: ");
    gets(string);
    for (i=0;string!='\0';i++) contador+=1;
    contador-=1;
    for(num=0;num=contador;num++) printf ("%c",string[contador-num]);
    system("PAUSE");
    return 0;
    }


    Cumprimentos
     
  2. Remott

    Remott Guest

    Bem, ja resolvi. :)
     
  3. greven

    greven Folding Artist

    Tenta isto e ve se percebes....

    #include <stdio.h>

    main()
    {

    char string[100];
    int i=0,j;

    printf("\nIntroduza uma palavra\n");
    gets(string);

    /*Esta linha e para a contagem de caracteres, mas podes ultrapassar isto
    facilmente utilizando o comando strlen*/
    /* while (string!='\0')
    i++;*/

    i=strlen(string);


    printf("\nRewind ==> ");

    j=i;
    while(j>=0)
    {
    printf("%c", string[j]);
    j--;
    }

    exit(0);
    }
     
  4. Andr0m3da

    Andr0m3da Power Member

    lanço-te um outro desafio,
    elabora um programa q retorne no standard output (ecra) a sua propria source.

    escusado sera dizer q este programa deve funcionar sem qq input, ou seja n vais ler isso a ficheiro nenhum.

    boas dores de cabeça, e garanto-te q sem pedires ajuda ou sem o veres ja feito vais levar mto tempo, mas qd acabares SABES "C"

    :)
     
  5. Remott

    Remott Guest

    Até conseguir fazer isso vai demorar um bocado Andr0m3da :)
    Decidi nestas férias começar a aprender C, porque interesso-me por programação, e então tirei ha 2 dias da net umas aulas sobre C, e tenho estado a ler e a praticar; e agora cheguei a este exercício q n estava a conseguir fazer, mas ja descobri onde estavam as minhas distracções.
    Mesmo assim, obrigado pela ajuda, greven :)
    E Andr0m3da, quando daqui a muito tempo conseguir fazer isso que tu propuseste, eu aviso-te :D

    Cumprimentos
     
  6. Andr0m3da

    Andr0m3da Power Member

    obviamente o desafio q lancei é injusto, eu sei disso :)
     
  7. ymene

    ymene Power Member

    Boas, depois de pensar e pensar... vi k a solução estava memo a minha frente, pois transformando o source numa string pura de chars ia dar a uma pescadinha de rabo na boca, ate k se fez luz LOL :D a solução estava no chars e da sua converção para inteiros e vice versa...

    #include <stdio.h>

    int cod[]=
    {35,105,110,99,108,117,100,101,32,60,115,116,100,105,111,
    46,104,62,10,10,105,110,116,32,99,111,100,91,93,61,
    10,10,118,111,105,100,32,109,111,115,116,114,97,95,97,
    114,114,97,121,40,41,123,10,9,105,110,116,32,99,111,
    110,116,97,59,10,9,112,114,105,110,116,102,40,34,123,
    92,110,34,41,59,10,10,9,102,111,114,40,105,110,116,
    32,97,61,48,59,97,60,52,48,53,59,97,43,43,41,
    123,10,9,9,105,102,32,40,99,111,110,116,97,61,49,
    53,41,123,10,9,9,9,112,114,105,110,116,102,40,34,
    92,110,34,41,59,10,9,9,9,99,111,110,116,97,61,
    48,59,10,9,9,125,10,9,9,105,102,40,97,61,61,
    52,48,52,41,10,9,9,9,112,114,105,110,116,102,40,
    34,37,100,34,44,99,111,100,91,97,93,41,59,10,9,
    9,101,108,115,101,10,9,9,9,112,114,105,110,116,102,
    40,34,37,100,44,34,44,99,111,100,91,97,93,41,59,
    10,9,9,99,111,110,116,97,43,43,59,10,9,125,10,
    10,9,112,114,105,110,116,102,40,34,125,59,92,110,34,
    41,59,10,125,10,10,118,111,105,100,32,109,111,115,116,
    114,97,95,99,111,100,40,41,123,10,9,102,111,114,40,
    105,110,116,32,97,61,48,59,97,60,52,48,53,59,97,
    43,43,41,123,9,9,10,9,9,112,114,105,110,116,102,
    40,34,37,99,34,44,40,99,104,97,114,41,32,99,111,
    100,91,97,93,41,59,10,9,9,105,102,32,40,97,61,
    61,51,48,41,10,9,9,9,109,111,115,116,114,97,95,
    97,114,114,97,121,40,41,59,10,9,125,10,125,10,10,
    118,111,105,100,32,109,97,105,110,40,41,10,123,10,9,
    109,111,115,116,114,97,95,99,111,100,40,41,59,10,125};

    void mostra_array(){
    int conta=0;
    printf("\n{");

    for(int a=0;a<405;a++){
    if (conta==15){
    printf("\n");
    conta=0;
    }
    if(a==404)
    printf("%d",cod[a]);
    else
    printf("%d,",cod[a]);
    conta++;
    }

    printf("};\n");
    }

    void mostra_cod(){
    for(int a=0;a<405;a++){
    printf("%c",(char) cod[a]);
    if (a==30)
    mostra_array();
    }
    }

    void main()
    {
    mostra_cod();
    }
     
  8. Andr0m3da

    Andr0m3da Power Member

    é impressao minha ou duplicaste a source para depois a reproduzir?

    no way d00de

    mas ja vejo isso melhor....
     
  9. ymene

    ymene Power Member

    Boas, eu dupliquei a source mas transformei os caracteres em inteiros, no entanto nem todo o codigo pode ser duplicado pq se não era um ciclo infinito. o k fiz foi passar o codigo todo excepto o conteudo dentro do array para ascii depois mandei imprimir convertendo para char de novo mas no entanto pelo meio mandava imprimir os inteiros para mostrar o conteudo do array.

    se existe alguma funcao de baixo nivel ou entao durante a compilação uma maneira de por o source pa dentro de uma string gostava de saber :).
    mas no fim o k era pedido foi satisfeito.
    Cumprimentos ymene.
     

    Ficheiros Anexados:

  10. Andr0m3da

    Andr0m3da Power Member

    no fim o q é pedido n foi satisfeito...

    e n te posso dar isso, pq tb ando as cabeçadas c ele...:)

    quem mo propos levou 2 meses creio e eu gostava um dia....qualquer programar cm ele....


    no meu caso muda a linguagem mas o problema mantem-se...
    a minha suspeita é q faça quase um un-assembler...

    mas é cm digo....procurei na net info uma vez, e encontrei...mas n cheguei a ler, tenciono fazer limpo, apenas isso, é das tais m€rdas por carolice, até pq a utilidade n é nenhuma....

    e foi uma coisa q nunca me tinha passado pela cabeça fazer.
     

Partilhar esta Página