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

alguns programas em c - n workam

Discussão em 'Programação' iniciada por Psico_Mind, 5 de Dezembro de 2003. (Respostas: 23; Visualizações: 22575)

  1. Psico_Mind

    Psico_Mind Banido

    bem tenho aki estes programas em c, sou iniciante ( 11º :o ) e n sei pq n funcionam! se pudessem ajudar. obrigado:

    #include <stdio.h>
    main()
    {
    int x1,x2,resultado;
    char opcao;
    {
    puts("Diga o 1§ e 2§ numero com que quer realizar a operacao");
    scanf("%d,%d",&x1,&x2);
    puts("Diga agora a operacao que quer fazer");
    scanf("%c",&opcao);
    switch(opcao)
    {
    case 'M': resultado: x1*x2; break;
    case 'D': resultado: x1/x2; break;
    case 'A': resultado: x1+x2; break;
    case 'S': resultado: x1-x2; break;
    }

    printf("O resultado ‚ %d",&resultado);
    }


    #include <stdio.h>
    main()
    {
    int num;
    printf("Diga o numero");
    scanf("%d",&num);
    if (num=0)
    printf("‚ zero");
    else
    printf("NÆo ‚ zero)
    }


    #include <stdio.h>
    main()
    {
    int num;
    puts("Diga o numero");
    scanf("%d",&num);
    if (num>0)
    printf("numero ‚ positivo);
    if (num=0)
    printf("numero ‚ nulo");
    else
    printf("numero ‚ negativo);

    }
     
    Última edição: 5 de Dezembro de 2003
  2. Psico_Mind

    Psico_Mind Banido

    so um pormenor, no include n aparece o stidio.h por causa das barras ( pa n dizerem k o erro é esse lolol )
     
  3. Mig

    Mig Power Member

    Vamos lá ver consigo ajudar, uma vez que também sou um iniciado nisto.
    Não tenho aqui nenhum compilador à mão, por isso a olho saltam-me os seguintes erros:



    Para já não vejo mais nenhum erro, mas o melhor é pores isso num compilador e veres quais os erros que aparecem.
     
  4. Psico_Mind

    Psico_Mind Banido

    obrigado isso sao basicamente erros de atencao >( tenho de estar mais atento mas pq sao sao == foi o k n percebi, obrigado
     
  5. Pretender

    Pretender Power Member

    Que compilador estas a usar?
    todos eles indicam erros de sintaxe e normalmente apontam para a linha com o erro.......

    existe mts, mas destaco o borland C++ Builder
    ms visual studio 6 c++
    etc
     
  6. Psico_Mind

    Psico_Mind Banido

    eu sei mas so entendo akeles avisos msm de chacha do tipo: falta um ) etc as mensagens mais complicadas.. lol :P uso o turbo c, tem um ambiente igual ao turbo pascal k deu o outro ano por isso curto :-D
     
  7. Biker_

    Biker_ Power Member

    É simples!
    Na maioria das linguagens de programação = significa atribuição, ou seja, se tiveres uma variável X e fizeres X=3, o X passa a valer 3.
    Já com == significa "comparação". Se tiveres uma variável Y e fizeres Y == 3, o programa vai comparar se o Y é igual a 3, logo quando fazes por exemplo if(Y==3) o que acontece é que se o Y valer 3 o "if" é verdadeiro e faz o que estiver "dentro" do if.
    Percebeste agora?

    Isto faz-me lembrar os meus (belos) tempos de secundário... No 10º ano odiava programação, mto por culpa do meu prof que era uma bela merd@!!
    Não atinava nem por nada com aquilo. Agora já se dão uns "toques" e acabei mm por seguir informática. É só dores de cabeça, mas é uma área interessante. :D
     
  8. Psico_Mind

    Psico_Mind Banido

    yah tb devias ver a stora k tenho este ano....

    passa acetatos e acetatos, passamo-os, so na ultima semana e na outra é que começamos a dar exercicios 8o e smp no papel, resultado faco disto.... o outro ano tinha um bue sebem que nos metia no pc desde do inicio do ano, percebi aquilo tudo



    Obrigado, é que no pascal não era assim e este ano nem ouvi a stora a dizer isso :confused:


    fica bem e obrigado mais uma vez

    p.s. Apesar de não estar ai corrigidos, ja dao todos, muito obrigaod fikem bem [][]
     
  9. Biker_

    Biker_ Power Member

    No pascal se a memória não me falha a atribuição é ":=". No C (e quase todas as outras) é "=".
    No pascal a verificação de igualdade é "=". No C (e quase todas as outras) é "==".
    No pascal tb se a memória não me falha a verificação de desigualdade é "<>". No C (e em quase todas as outras) é "!=".
    São conceitos fáceis de aprender. Basta dares uma vista de olhos pelo livro. O que interessa mesmo quando mudas de uma linguagem para outra nem é tanto a sua notação, isso vai-se aprendendo e vem nos livros ou no "help" (o help do compilador que usas até não é mto mau), mas sim ficares a perceber a maneira "correcta" (isto é mto relativo e algo subjectivo) de programares. É que caso queiras seguir informática no futuro, garanto-te que não te vão ensinar todos os passinhos em todas as linguagens que leccionam.
    Se gostarias de seguir o curso de informática esforça-te um pouco a ficar com boas bases em programação aí no secundário, pq na universidade não têm a "paciência" nem a facilidade de ajudar os alunos individualmente com as suas dúvidas e problemas.
     
  10. Psico_Mind

    Psico_Mind Banido

  11. Psico_Mind

    Psico_Mind Banido

    desculpem ser xato mas aki vao + 2 programa.. :

    #include <stdio.h>
    main()
    {
    int sal;
    puts("Diga o salario do seu empregado");
    scanf("%d",&sal);
    if (sal>=500)
    printf("O salario não precisa de ser aumentando");
    else
    sal=sal+50;
    printf("O salario passa a ser %d",&salario);
    }



    devia aumentar o salario em 50 se ele fosse menor que 500, o problema é que corre mas da smp como salario -38 :o


    tentei meter um break mas diz k n foi declarado na function main obrigado



    #include <stdio.h>
    main()
    {
    int cont,nota,x,pos;
    printf("Quantas notas são");
    scanf("%d",&cont);
    x=0;
    pos=0;
    While (x<=cont);
    {
    x=x+1;
    printf("Diga a nota");
    scanf("%d",&nota);
    if (nota>=10)
    pos=pos+1;
    }
    printf("Ha %d positivas",&pos);
    }



    este da um erro no while ( undefined symbol '_While' in module Numeropo.C )

    EDIT: problemas ja resolvidos
     
    Última edição: 6 de Dezembro de 2003
  12. Mig

    Mig Power Member

    No programa 2 é igual.
    O & está ali a mais.
    A função printf não leva &.

    Já vi que resolveste os problemas, mas acho que para eventualmente ajudares outros devias por a solução para outros poderem aprender com os teus erros.
     
  13. Psico_Mind

    Psico_Mind Banido

    yah tb ja k me ajudaram a mim vou dizer os erros ;)



    Este aqui tinha o & ao lado do salario o que fazia com que fosse smp -38. Unico erro detectado


    este aqui tinha um ; a frente do While (x<=cont) o que n podia. e o while, o w tava em caps e o c é case sensivite logo dava erro e um & no printf ( printf("Ha %d positivas",&pos); )


    era tudo bem fikem espero k tal como me ajudaram isto possa ajudar alguem []
     
  14. Morais

    Morais Power Member

    quote:
    --------------------------------------------------------------------------------

    #include
    main()
    {
    int sal;
    puts("Diga o salario do seu empregado");
    scanf("%d",&sal);
    if (sal>=500)
    printf("O salario não precisa de ser aumentando");
    else
    sal=sal+50;
    printf("O salario passa a ser %d",&salario);
    }
    [/B]
    --------------------------------------------------------------------------------

    De certeza que o "&" era o unico erro?
    È que o printf vai tentar imprimir o valor da variavel "salario", variavel essa que não existe, a varaivel "sal", essa sim existe.

    E não sei o que é que a vossa professora anda a ensinar-vos mas em vez de "sal=sal+50" podes prefeitamente usar "sal+=50;". E recomendo que comeces a carregar menos vezes no enter, as intruções linhas por linha podem ser inicialmente particas para que não sabe bem o que anda a fazer mas com o tempo torna-se uma pratica chata e confusa. Só para teres uma ideia eis como eu faria o programa:

    main () { int x;
    printf("Insira o salario do seu empregado:"); scanf("%d",&x);
    if (x >= 500) { printf("O salario não precisa de ser aumentado");
    else printf("O salario passa a ser %d",x+50); } }

    Ainda podia muito bem evitar o uso da função scanf ao inserir directamente uma função no if mas ai já não tinha bem a certeza se iria acertar na sintaxe. Quanto mais simples e organizado é um programa mais facil torna-se corrigir o mesmo.

    E o outro programa?

    main() { int cont,nota,x=0,pos=0;
    printf("Quantas notas são"); scanf("%d",&cont);
    While (x<=cont) { x++; printf("Diga a nota"); scanf("%d",&nota);
    if (nota>=10) pos++; }
    printf("Há %d positivas",&pos); }

    Reparei que há N truques que não te ensinaram:

    x=x+y é o equivalente a x+=y tal como x=x*(y+z) é o mesmo que x*=(y+z)
    x=x+1 ou x+=1 é o mesmo que x++ tal como x=x-1 ou x-=1 é o mesmo que x---
    O C não "lê" as mudanças de linha, para ele o programa é uma grande linha de codigo, por isso poupa nas mudanças de linha.
    Ao inicializar uma variavel podes logo inicializar o valor da mesma como int x=10,z=0, etc...
    Podes usar calculos no printf como por exemplo prinft("&d + &d = %d",x,y,x+y)

    Cuida-te e boa sorte.
     
    Última edição: 12 de Dezembro de 2003
  15. Psico_Mind

    Psico_Mind Banido

    oi! acerca do 1º programa foi uma versao anterior k passei pa aki, ja corrigi isso do salario mas eskeci me de postar.


    dps essas cenas... eu tou no 11º ano 8o, basicamente tenho dado teorica e acho que agora o importante é perceber os programas ao inicio do que complicar ficando com - linhas

    e esses trukes ainda n tivemos tempo, a stora tb é uma beka tangas so passa acetatos e dita cenas em brazuka 8o

    msm assim os outros do 11º com kem tenho falado doutras escolas o maximo k deram a + k eu foi o getch; e umas marikices bem

    obrigado

    fica []
     
  16. Mig

    Mig Power Member


    Discordo completamente.
    Cada um tem a sua filosofia de programação, mas acho que quanto mais fácil de ler estiver o código, melhor.

    É da maneira que qualquer pessoa o pode ler, e mesmo tu mais tarde o consegues entender mais facilmente.

    Precisamente por serem ignoradas acho que se deve usar e abusar do uso de linhas para separar fragmentos de código.


    ...Mas repito, isto é só a minha filosofia e cada um tem a sua! :)
     
  17. Ashler

    Ashler Folding Member

    No primeiro programa, depois de defenires a variavel opcao (char opcao; ) tens outro "begin" ? ja n programo em C ha muito tempo.. mas se bem me lembro nao é preciso fazer um begin depois da declaracao de variaveis no main().

    Por causa disso, o primeiro programa tem mais begin's ke End's :)

    P.S: so agora é ke reparei ke ha muitas respostas ja, se alguem ja falou disto, sorry pela repeticao.
     
  18. Shakawkaw

    Shakawkaw Suspenso

    Tenho um amigo que tem a mania de fazer isso... uma vez pediu-me para dar uma olhadela a um programa em C que estava a dar valores competamente disparatados...
    Passei 1h em frente ao computador so a tentar entender que raio e que ele tinha escrito...


    Exactamente isso...
    O escrever tude em linhas nao facilita nada a leitura... so mesmo o compilador e que le isso... :rolleyes:

    Fiquem bem


    P.S. - Psico_Mind, tentar ganhar o habito de por o programa a dar return de flags de controlo... da muito jeito...

    P.P.S. - Agora ando a bracos com o projecto final de AED, que ate e interessante... um simulador logico... :D
     
  19. Akira

    Akira Power Member

    O código deve ser estruturado para facilitar a sua análise... identação, documentação, quebras de linha e outras...

    By the way... para que raio usas puts??? além de ser uma função que está deprecated e ainda por cima está na black list de security breaches por não verificar a quantidade de dados... podias simplesmente usar printf...

    Se insistes mesmo em usar puts ao menos usa fputs usando como stream stdout...

    Got the point?

    Hasta
     
  20. fap

    fap Power Member

    não sei se percebi o que querias dizer...querias dizer que não tens maneira de saber quantos caracteres é que escreveste? é que em caso de sucesso o o puts devolve o nº de caracteres escritos ou EOF em caso de erro.

    era só por curiosidade :rolleyes: :)
     

Partilhar esta Página