Colocar Resposta 
 
Avaliação do Tópico:
  • 2 votos - 5 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Linguagem C - Dicas e ajuda para iniciantes
08-09-2010, 11:54
Mensagem: #21
RE: Linguagem C - Dicas e ajuda para iniciantes
boas,
Não tenho aqui nenhum compilador para testar o teu codigo, mas parece-me que o teste de condições deve ser feito numa função criada fora do main, pois qualquer valor que seja diferente de "a" e "c", respectivamente vai dar esse printf "inseriu um numero inteiro menor".
A intenção é mesmo essa ou é verificar os valores introduzidos pelo user? Se a intenção é informar q introduziu um valor Maior ou Menor, então retiro o que disse... Smile
Senão, tem mesmo de ser criada uma função para verificar os valores introduzidos.
De resto, o código está muito bem feito e devidamente comentado.
Parabéns, temos programador Wink
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
08-09-2010, 14:04 (Esta mensagem foi modificada pela última vez a: 08-09-2010 21:22 por wolfytuga.)
Mensagem: #22
RE: Linguagem C - Dicas e ajuda para iniciantes
(08-09-2010 11:54)crazyman Escreveu:  boas,
Não tenho aqui nenhum compilador para testar o teu codigo, mas parece-me que o teste de condições deve ser feito numa função criada fora do main, pois qualquer valor que seja diferente de "a" e "c", respectivamente vai dar esse printf "inseriu um numero inteiro menor".
A intenção é mesmo essa ou é verificar os valores introduzidos pelo user? Se a intenção é informar q introduziu um valor Maior ou Menor, então retiro o que disse... Smile
Senão, tem mesmo de ser criada uma função para verificar os valores introduzidos.
De resto, o código está muito bem feito e devidamente comentado.
Parabéns, temos programador Wink

A tua dúvida reside aqui:

Citar:// Teste de condições
if(MAX(a,b)!=a)
{
puts("Inseriu um numero inteiro menor");
}
else
{
puts("Inseriu um numero inteiro maior");
}

if(MAX(c,d)!=c)
{
puts("Inseriu um numero decimal menor");
}
else
{
puts("Inseriu um numero decimal maior");
}

Certo?
Eu compilei o código como podes ver na imagem (não iria publicar aqui um programa que não desse para compilar nem nada do género, foi testado). Neste troço do programa apenas estou a verificar se o que a macro MAX devolve é o valor inserido pelo utilizador ou o que atribuí em "b" ou "d".

Eu com este código pretendo apenas mostrar diferentes possibilidades ao utilizador. Por exemplo a macro MAX como podes ver no código foi definida da seguinte maneira:

Citar:#define MAX(X,Y) (((X)<(Y)) ? (Y) : (X))

e ela substitui uma possível função do género (atenção, ao contrário de uma macro é preciso indicar se estamos a usar inteiros nos argumentos de entrada e saída, neste caso vou optar por inteiros; no caso de querer experimentar com decimais basta substituir todos os "int" desta função por "float"):

Citar:int max_int(int x, int y)
{
if(x<y)
return y;

return x;
}


ou ainda

Citar:int max_int(int x, int y)
{
if(x<y)
{
return y;
}
else
{
return x;
}
}


No entanto este programa possui um erro, não na programação, mas nos conteúdos, já alguém descobriu?

EDIT:
Esqueci-me dos ; no fim de cada instrução nestes exemplos, já está corrigido Wink

wolfytuga
Para o que der e vier...
emachines E520 | Intel Celeron 2.0GHz | 32/64bit | RAM 2GB | HD 160GB | Intel Mobile 4 Express, 64MB → 1GB
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
08-09-2010, 14:55
Mensagem: #23
RE: Linguagem C - Dicas e ajuda para iniciantes
Na função main tens um return a não retornar nada. Como não é uma função VOID deveria retornar algo não? não é que afecte na compilação mas...
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
08-09-2010, 15:18 (Esta mensagem foi modificada pela última vez a: 08-09-2010 15:29 por wolfytuga.)
Mensagem: #24
RE: Linguagem C - Dicas e ajuda para iniciantes
(08-09-2010 14:55)kilho Escreveu:  Na função main tens um return a não retornar nada. Como não é uma função VOID deveria retornar algo não? não é que afecte na compilação mas...

Não há problema aí, o retorno vai ser o retorno padrão, que poderás testar noutro programa, e como o objectivo não é usar o retorno deste programa para verificar erros ou algo do género...

O erro de que falei, é que não existe um teste para quando o "a" e o "b" ou o "c" e o "d" são iguais entre si. Que irá resultar numa saída como menor em vez de igual. Isso é fácil de contornar. Se alguém estiver interessado em aprender diga e colocarei aqui o passo seguinte para dotar o programa corrigido com essa característica.

Espero estar dentro do assunto deste tópico Big Grin
Só uma coisa que me lembrei sobre isto que disseste:
Citar:Na função main tens um return a não retornar nada.

És informático ou electrotécnico? É que em electrónica o nada não existe, há sempre alguma coisa no retorno, pode não ser aquilo que queremos, mas há retorno.
Calma! Estou só na brincadeira, mas houve um colega que ficou a arder por ter dito que quando se ligava uma memória o conteúdo desta seria nada ou vazio. Quando disse vazio, o professor ficou roxo. Mandou ao aluno em questão fazer um tpc especial: apresentar uma dissertação sobre o "nada" e o "vazio" em electrónica...
Bom o mais certo é que ele mudou de Eng. Electrotécnica para Eng. Informática Unsure não sei se foi por isso!

wolfytuga
Para o que der e vier...
emachines E520 | Intel Celeron 2.0GHz | 32/64bit | RAM 2GB | HD 160GB | Intel Mobile 4 Express, 64MB → 1GB
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
19-11-2010, 14:45
Mensagem: #25
RE: Linguagem C - Dicas e ajuda para iniciantes
#include <stdio.h>
main()
{
/*1. Faça um programa em C que contenha um subprograma. É necessário que seu programa como um todo efetue o cálculo do valor de
uma prestação em atraso, utilizando a formula: PRESTAÇÃO = VALOR + (VALOR * (TAXA / 100) * TEMPO). */

float Valor_Atual(float Valor1, float Tempo1)
{
float P_Atraso;
P_Atraso = (Valor1 + (Valor1 * (Tempo1/100)* Tempo1));
return (P_Atraso);
}
int Valor,Tempo, Prestacao;

printf ("Informe o valor da conta em atraso: ");
scanf ("%f", &Valor);
printf ("Informe o tempo de atraso(dias): ");
scanf ("%f", &Tempo);


Prestacao = Valor_Atual(Valor,Tempo);

printf ("O valor atual da sua conta e' : R$%.2f \n", Prestacao );

system ("pause");


}

bom eu estou aprendendo linguagem c, entao utilizando função eu fiz esse programa, porem eu faço a entrada de conta em atraso = 100
a entrada de dias em atraso = 1
e ele deveria me retornar o valor = 101
porem tudo ki eu digite ele me volta o valor = 0 alguém poderia me ajudar é urgente serio mesmo preciso aprender direito pq vou fazer uma prova que tem funçoes e matrizes e fora os outros comandandos de C. vlw pela atencao ^^
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
19-11-2010, 16:12
Mensagem: #26
RE: Linguagem C - Dicas e ajuda para iniciantes
pow ja achei o meu erro

#include <stdio.h>
main()
{
/*1. Faça um programa em C que contenha um subprograma. É necessário que seu programa como um todo efetue o cálculo do valor de
uma prestação em atraso, utilizando a formula: PRESTAÇÃO = VALOR + (VALOR * (TAXA / 100) * TEMPO). */

float Valor_Atual(float Valor1, float Tempo1)
{
float P_Atraso;
P_Atraso = (Valor1 + (Valor1 * (Tempo1/100)* Tempo1));
return (P_Atraso);
}
int /*em vez de int era para eu ter colocado float tb kkkkkk não sei pq eu coloquei int */ Valor,Tempo, Prestacao;

printf ("Informe o valor da conta em atraso: ");
scanf ("%f", &Valor);
printf ("Informe o tempo de atraso(dias): ");
scanf ("%f", &Tempo);


Prestacao = Valor_Atual(Valor,Tempo);

printf ("O valor atual da sua conta e' : R$%.2f \n", Prestacao );

system ("pause");


}
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
16-07-2011, 20:20
Mensagem: #27
RE: Linguagem C - Dicas e ajuda para iniciantes
boas pessoal precisava aquui de uma ajuda a contruir um programa em c,eu ainda sou iniciante no assunto,era o seguinte queria que o programa fizesse aparecer na tela 80% 90% 100% 110% e 125% para escolhermos uma dessas 5 ipoteses,depois au escolher a ipotese por exemplo 110% davame resultado diferente de 100%,

110%
duplo flex=2;
duplo digital=5;
triplo digital=8;

se escolhesse 100%
duplo flex=1;
duplo digital=3;
trplo digital=5;

e finalmente fazer a soma (opçao 110%)
exemplo: eu tinha 4-duplo flex 2-duplo digital 2-triplo digital
soma
o que iria dar o resultado de 34 pontos...

espero que alguem me possa dar uma ajuda,precisava fazer um software assim porque eu sou vendedor
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
17-07-2011, 12:30 (Esta mensagem foi modificada pela última vez a: 17-07-2011 12:33 por Mkman.)
Mensagem: #28
RE: Linguagem C - Dicas e ajuda para iniciantes
Acho que o teu problema é receber o valor do utilizador e depois avaliar as coisas certo? Bem podes receber os valores pelo user usando:
Código:
scanf("%d",&nome_da_var);
Depois para tratar os dados:
Código:
switch(nome_da_var){
    case 100 : /* o resto do codigo para quando for 100%
    case 110 : /* resto do codigo para quando for 110%
    default : printf("O valor introduzido um valor incorrecto.As opçoes sao 100,110....")
}

Claro que inves de um switch podes tambem usar uns if.

Bom Trabalho Smile
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
17-07-2011, 15:26
Mensagem: #29
RE: Linguagem C - Dicas e ajuda para iniciantes
sim é isso,eu estava a uzar o if,
tipo metia se for 80%
se for 90%
se for 100%
se for 110%
se for 125%
até aqui tudo bem nao dá erro,mas em cada uma das opçoes dos (80%,90% etc..)(ou no caso de uzar switch em cada caseSmile queria para cada um deles declarar umas variaveis com o mesmo nome para todos os casos mas com valores diferentes em cada caso,espero que me fasso entenderConfused
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
17-07-2011, 17:11 (Esta mensagem foi modificada pela última vez a: 17-07-2011 17:12 por helder fortunato.)
Mensagem: #30
RE: Linguagem C - Dicas e ajuda para iniciantes
(24-08-2010 21:57)Rui C. Escreveu:  Obrigado Wink


o programa que eu queria fazer era + ou - isto,mas eatá a dár erro


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int duplo_light_flex,duplo_digital,triplo_10m,triplo_10m_digital;
int a,b,c,d,e;
a=80;
b=90;
c=100;
d=110;
e=125;
printf("80%%,90%%,100%%,110%%,125%% digita a tua percentagem%d\n");
scanf("%d",&a,&b,&c,&d,&e);


if (a)
duplo_light_flex=2;
duplo_digital=5;
triplo_10m=7
triplo_10m_digital=9;

printf(" digite quantos duplo_light_flex%d\n");
scanf("%d",&duplo_light_flex);
printf("digite quantos duplo_digital%d\n");
scanf("%d",&duplo_digital);
printf("digite quantos triplo_10m%d\n");
scanf("%d",&triplo_10m);
printf("digite quantos triplo_10M_digital%d\n");
scanf("%d",triplo_10m_gigital);
soma=duplo_light_flex+duplo_digital+triplo_10m+triplo_10m_gigital;
printf("resultado%d" ,soma);


if (b)
duplo_light_flex=4;
duplo_digital=7;
triplo_10m=9;
triplo_10m_digital=11;

printf(" digite quantos duplo_light_flex%d\n");
scanf("%d",&duplo_light_flex);
printf("digite quantos duplo_digital%d\n");
scanf("%d",&duplo_digital);
printf("digite quantos triplo_10m%d\n");
scanf("%d",&triplo_10m);
printf("digite quantos triplo_10M_digital%d\n");
scanf("%d",triplo_10m_gigital);
soma=duplo_light_flex+duplo_digital+triplo_10m+triplo_10m_gigital;
printf("resultado%d" ,soma);



if ©
duplo_light_flex=8;
duplo_digital=12;
triplo_10m=15;
triplo_10m_digital=18;


printf(" digite quantos duplo_light_flex%d\n");
scanf("%d",&duplo_light_flex);
printf("digite quantos duplo_digital%d\n");
scanf("%d",&duplo_digital);
printf("digite quantos triplo_10m%d\n");
scanf("%d",&triplo_10m);
printf("digite quantos triplo_10M_digital%d\n");
scanf("%d",triplo_10m_gigital);
soma=duplo_light_flex+duplo_digital+triplo_10m+triplo_10m_gigital;
printf("resultado%d" ,soma);


if (d)
duplo_light_flex=10;
duplo_digital=14;
triplo_10m=18;
triplo_10m_digital=22;


printf(" digite quantos duplo_light_flex%d\n");
scanf("%d",&duplo_light_flex);
printf("digite quantos duplo_digital%d\n");
scanf("%d",&duplo_digital);
printf("digite quantos triplo_10m%d\n");
scanf("%d",&triplo_10m);
printf("digite quantos triplo_10M_digital%d\n");
scanf("%d",triplo_10m_gigital);
soma=duplo_light_flex+duplo_digital+triplo_10m+triplo_10m_gigital;
printf("resultado%d" ,soma);



if (e)
duplo_light_flex=12;
duplo_digital=16;
triplo_10m=20;
triplo_10m_digital=26;


printf(" digite quantos duplo_light_flex%d\n");
scanf("%d",&duplo_light_flex);
printf("digite quantos duplo_digital%d\n");
scanf("%d",&duplo_digital);
printf("digite quantos triplo_10m%d\n");
scanf("%d",&triplo_10m);
printf("digite quantos triplo_10M_digital%d\n");
scanf("%d",triplo_10m_gigital);
soma=duplo_light_flex+duplo_digital+triplo_10m+triplo_10m_gigital;
printf("resultado%d" ,soma);





system("PAUSE");
return 0;
}
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 4 Visitante(s)