alguns programas em c - n workam

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:
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:

Programa 2:

linha 7 : if (num== 0)
linha 10 : printf("NÆo ‚ zero);


Programa 3:

linha 8 : printf("numero ‚ positivo");
linha 9 : if (num== 0)
linha 12 : printf("numero ‚ negativo");


Para já não vejo mais nenhum erro, mas o melhor é pores isso num compilador e veres quais os erros que aparecem.
 
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
 
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
 
Originally posted by Psico_Mind
mas pq sao sao == foi o k n percebi, obrigado
É 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
 
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 [][]
 
Originally posted by Psico_Mind
Obrigado, é que no pascal não era assim e este ano nem ouvi a stora a dizer isso :confused:
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.
 
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:
Originally posted by Psico_Mind
Programa 1

linha 11: printf("O salario passa a ser %d",&salario);

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.
 
yah tb ja k me ajudaram a mim vou dizer os erros ;)




#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);
}
[/B]

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



#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);
}

[/B]

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 []
 
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:
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 []
 
Originally posted by Moralez
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

(...)

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. (...)


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! :)
 
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.
 
Originally posted by Moralez
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); } }

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...


Originally posted by Moralez
Quanto mais simples e organizado é um programa mais facil torna-se corrigir o mesmo.

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
 
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
 
Originally posted by Akira
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

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: :)
 
Back
Topo