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

Ajuda em c++.....

Discussão em 'Programação' iniciada por HadHoc, 29 de Março de 2003. (Respostas: 23; Visualizações: 2130)

  1. HadHoc

    HadHoc Power Member

    É o seguinte:
    Tenho que fazer um trabalho para a escola em c++, mais concretamente um jogo, o 4 em linha.
    Mas sinceramente não percebo nada disto e nem sequer consigo começar, e se não fizer o trabalho tenho 0 ( :005: ) na nota e precisava mesmo muito dessa nota.
    O que estou aqui a pedir é se algum de voces me pode dar uma ajuda, algumas dicas, etc. é que nao tou mesmo a ver como bou fazer isto...

    Desde já obrigado.
     
  2. Sky Fox

    Sky Fox Power Member

    HadHoc... supostamente tiveste a dar C e agora tens de fazer um trabalho, né?

    Como é que nao percebes nada?
     
  3. gutter

    gutter Power Member

    PAh eu ja fiz isso num trabalho pra escola, fiz em c++. Nao te arranjo o codigo senao tu nao aprendes.
    Posso dar umas dicas em termos de algoritmo. isso com arrays faz-se bem, tipo um array de arrays de char. qd o jodagor introduz o numero da coluna..so tens que meter no indice certo (usa um int como contador) e a cada jogada tens que percorrer o array pra ver se existe 4 em linha (esse é que é mais complicado com as diagonais, faz primeiro para as verticais e horizontais).

    Nao me leves a mal, se nao fizeres por ti nunca chegas a lado nenhum. bom trabalho!!!
     
  4. HadHoc

    HadHoc Power Member

    Sky Fox:
    nao é ser completamte ignorante em termos de programaçao, percebo muito pouco.
    tb acho que a prof nao percebe nada (mas isso é outra coisa...).


    gutter:
    Bou tentar fazer alguma coisa com essas dicas, pelo menos ja sei como começar. :P

    []'z
     
  5. Sky Fox

    Sky Fox Power Member

    Pah... a sensação que me deste é que eras um completo ignorante. eu ate tive p te perguntar se sabias o que era isto:

    #include ....

    main()
    {

    }

    lool

    Sorry... se precisares de mais alguma coisa diz, mas nao fikes a espera que o ppl faça o trabalho por ti (foi a nitida sensaçao que deste no 1º post).
     
  6. HadHoc

    HadHoc Power Member

    eu nao estava a espera que o ppl fizesse o trabalho pro mim, apenas pedi uma ajuda/dicas para ver como é que havia de fazer o jogo.
    é que nao estava (e ainda nao estou) a ver como ia fazer o trabalho
     
  7. Sky Fox

    Sky Fox Power Member

    eskece o C.

    Antes de td tens que pensar em como vais fazer isso.

    Ja deste funcoes e ponteiros?
     
  8. HadHoc

    HadHoc Power Member

    Sky Fox, acertaste em xeio ao falar de ponteiros, é que a prof mandou fazer o trabalho na altura que estava-mos a dar materia sobre ponteiros, pilhas, etc.
    Bou ter que fazer uma revisao a essa meteria pk andava nas aulas "a comer sono", e axo que o trabalho vai ter que se utilizar os ponteiros.
    mas ainda nao sei como é k bou fazer, dps de rever a materia digo qualquer coisa.

    []'z
     
  9. joao_

    joao_ Power Member

    poix é

    o men tens de ser tu a fazer o trabalho....
    e nao te esqueças k só tens quarta 1h30m para fazer isso...
    ...isto é, se nao começares em casa!
    uma sugestão: usa uma variavel tipo matriz de 6x6 para guardar os valores introduzidos.


    agora uma pergunta para o pessoal que percebe:
    existe alguma função(?) tipo getchar mas para inteiros??
    ou melhor ainda, é possivel transformar um caracter em um nº inteiro (se valido é claro)?? como??
    :)
     
  10. HadHoc

    HadHoc Power Member

    ó joão vai mas é trabalhar!!!!
    hehe
    eu que te apanhe! :die: é logo um prego na cabeça!

    mas olha não podemos entregar até 6ª feira? axo k sim...
     
  11. FASC

    FASC Power Member

    Re: poix é

    Eu uso manipulação de strings. Leio uma linha para dentro de um array que estica, e depois tenho funções que analizam o interior da array. É bastante simples, e depois de feita a validação, quando lês números é só adicionar o código ASCII do '0' (zero), se não me engano. Mas usa uma tabela ASCII para ver isso bem, que é o que faço ("man ascii";)).


    Hugs.
     
  12. joao_

    joao_ Power Member

    FASC:
    na tou a ver o k tás a tentar explicar...


    será k nao dá para fazer tipo:
    #include...

    int x;
    char c;

    void main (void)
    {
    c=getchar();
    if(c=='1' || c=='2' || c=='3' || c=='4' || c=='5' || c=='6')
    {
    x=c;
    printf("%d",x);
    }
    }





    será possivel?? mas se na der tb posso fazer tipo:
    #include...

    int x;
    char c;

    void main (void)
    {
    c=getchar();
    switch(c)
    {
    case '1':x=1;
    break;
    case '2':x=2;
    break;
    case '3':x=3;
    break;
    case '4':x=4;
    break;
    case '5':x=5;
    break;
    case '6':x=6;
    break;
    }
    printf("%d",x);
    }

    o k na era mt mau pk eu só preciso de 6 nºs :)

    obrigado pela ajuda e espero na ter sido mt chato... :)



    edit: editei uns erros e umas redundancias (LOL na altura k escrevi taba com sono)
     
    Última edição: 8 de Abril de 2003
  13. joao_

    joao_ Power Member

    ó Hadoc foi assim k eu fiz... e funcionou portanto o gutter deu-te uma dica mt boa :)
     
  14. Sky Fox

    Sky Fox Power Member

    nao tou a perceber o que pretendes com isso... mas seja como for nao seria mais facil fazeres assim:

    #include <stdio.h>

    main ()
    {
    int x;
    printf ("Introduza um numero de 1 a 6");
    scanf ("%d", &x);
    if (x>6)
    printf ("O valor introduzido nao é admitido");
    else
    printf ("O valor introduzido foi: %d",x);
    }

    onde ta o teu x??? tens ai um x, mas nao toma valores e dpx manda os valores p fora, estranho, nops??

    #include...

    int x;
    char c;

    void main (void)
    {
    c=getchar();
    if(c=='1' || c=='2' || c=='3' || c=='4' || c=='5' || c=='6')
    {
    c=x;
    printf("%d",x);
    }
    }

    Se calhar querias era escrever x=c;

    MAs isso assim nao funca... pk simplesmente ao dares um valor c (caracteres) a um x (inteiros), ele simplesmente vai assumir que o teu x é o valor ascii do caracter (isto se a minha memoria nao me falha, mas pk é que nao testaste?? Sempre tiravas as duvidas.
     
  15. FASC

    FASC Power Member

    Basicamente é por causa disto que se deve usar arrays.
    É assim, se tu quiseres pôr isso "à prova de bala" tens de fazer validações, ou seja, certificar-te que o utilizador só lá pôe o que é pretendido. Tu com getchar() não vais longe, porque se te enganares e deres um número seguido de um espaço e outro número, o resto fica-te no buffer e acaba por te correr a validação uma série de vezes. Para fazeres a coisa como deve de ser, crias um array (digamos, 256 long, para simplificar e não estares a usar realloc), para onde lhe pôes a linha que o utlizador escreveu através da função sscanf() (vai ao "man" ver como funciona). Agora é só criares uma função que te retorna o que está lá dentro, vejamos:

    um ciclo "for" para percorrer a array toda (tiras o tamanho através do strlen() ), e nesse ciclo "for" vais testanto posição a posição se está um caracter prentendido (lets say, 0-9). Enquanto estiver ok, ele não sai da função com -1. À medida que o "for" corre, implementas uma variável que vai incrementando em função daquilo que está a ler, recorrendo à função "power" (RTFM, e se usares o power, lembra-te que convém começar de trás para a frente da array, para simplificar a vida) (math.h) e aos números que está a ler, no final da string se fôr tudo números, tens o teu número guardado nesse inteiro e é só retornar esse inteiro para validar se é uma opção válida (a nível de menu, sei lá, para o que quiseres). Depois de o valor ser retornado pela função é só analizar se ele é válido nesse contexto ou não!

    Épá, mais explicado só dando-te o código....

    BTW: não te aconselho a usares variáveis globais... Já vi pelo código que puseste aqui que o fazes, mas tem cuidado com isso porque isso é do pior que se pode fazer e é uma má prática de programação.


    Hugs.
     
    Última edição: 8 de Abril de 2003
  16. joao_

    joao_ Power Member

    Sky Fox:
    a minha ideia era ler o inteiro só carregando numa tecla (como com o getch)
    mas melhor ainda era tranformar o char em int (se valido) pk senão o programa atrofia a se introduzirmos um char ou uma string em vez do int
    :)

    ups emganei-me era para o x tomar o valor de c (x=c e não c=x LOL) (e era isso k eu keria saber se dava)

    inda na tentei isso pk na tenho o C em casa :)

    p.s.-quando leres isto já devo ter corrigido o erro :)
     
  17. joao_

    joao_ Power Member

    por isso mesmo é k kero usar o getchar(); pk só lê um caracter e assim nao atrofia (axo eu) uma vez k só tenhu de ler os nºs de 1 até 6 a maneira k eu disse (a do "case") deve dar, eu só keria mesmo era saber se existia um maneira + simples.

    obrigado pela ajuda :001:



    p.s.- pk k usar variaveis globais é assim tão mau??
     
  18. joao_

    joao_ Power Member

    + umas duvidas:
    • existe alguma maneira de obrigar o programa a ir para a linha de código k eu quero??? (tipo: se eu carregar no esc vai para uma linha perto do fim escolhida por mim)
    • já agora, qual o valor da tecla esc??
     
  19. Sky Fox

    Sky Fox Power Member

    FASC, nao é por nada, mas tu tas a falar em memoria dinamica e outras coisas que certamente eles ainda nao abordaram certamente que nem vao abordar para ja so os atrofias. :P

    Para saberes o valor da tecla esc procura no google pela tabela ascii.

    Existe sim uma forma de realizares saltos nos teus programas... mas nao recomendo esse tipo de programação por varios motivos.Usa antes funcoes que é p isso que elas servem.

    Se keres ler com o gectchar tens de fazer um case ou uma serie de ifs onde vais atribuir o valor inteiro ao correspondente caracter. No lugar de fazeres x=c tens que testar qual foi o caracter introduzido por exemplo 1 e ai dizes que o x=1, etc...

    Mas explica la o que pretendes com essa cena do getchar, mas reconhecendo numeros e nao caracteres, ainda nao consegui perceber o que keres fazer com isso. Kerer fazer é bonito, mas vai-te servir p ke????
     
  20. FASC

    FASC Power Member

    Se leres bem eu não aconselho o realloc, só falo nele como referência. Qualquer das maneiras, se ele usar o getchar() não consegue fazer o que pretende, e por outro lado, tudo o que estiver a mais fica no buffer, correndo a validação várias vezes, o que vai fazer com que o programa não faça o pretendido.
    Continuo na minha: aquela função que descrevi é o mais indicado...


    Hugs.
     

Partilhar esta Página