Forum Pplware
Linguagem C - Dicas e ajuda para iniciantes - Versão de Impressão

+- Forum Pplware (http://forum.pplware.com)
+-- Fórum: Mais Tech (/forumdisplay.php?fid=11)
+--- Fórum: Programação e Web (/forumdisplay.php?fid=16)
+--- Tópico: Linguagem C - Dicas e ajuda para iniciantes (/showthread.php?tid=6936)

Páginas: 1 2 3 4 5 6


RE: Linguagem C - Dicas e ajuda para iniciantes - Mkman - 17-07-2011 19:07

Convem postares tambem o erro que te da


RE: Linguagem C - Dicas e ajuda para iniciantes - wolfytuga - 17-07-2011 22:36

(17-07-2011 17:11)helder fortunato Escreveu:  
(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);


(...)

Código corrigido, isto pode ser bastante simplificado, pois tem blocos que são repetidos! Mas teste e dê o seu feedback Smile

Código:
#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);
    printf("80% \n90% \n100% \n110% \n125% \ndigita a tua percentagem:\n");
    int opcao=a; //coloque o respectivo numero sem '%'
    scanf("%d", &opcao);

    int soma=0;
    
    if (opcao == a)
    {
        duplo_light_flex=2;
        duplo_digital=5;
        triplo_10m=7;
        triplo_10m_digital=9;

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

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

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

    if (opcao == c)
    {
        duplo_light_flex=8;
        duplo_digital=12;
        triplo_10m=15;
        triplo_10m_digital=18;


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

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


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

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


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

    system("PAUSE");    
    return 0;
}



RE: Linguagem C - Dicas e ajuda para iniciantes - helder fortunato - 18-07-2011 14:39

ok obrigado,vou esperimentar assim,pensso que com essas correçoes vai ficar bom


RE: Linguagem C - Dicas e ajuda para iniciantes - helder fortunato - 18-07-2011 15:41

boas amigo,já estive a esperimentar o programa e já nao dá erro fincou bem melhor (funciona) mas só nao está a dár o resultado que eu esperava...

se esperimentares o codigo ele vai me dar a soma dos contratos que eu fiz,mas eu queria que ele somasse era os pontos,
tipo se eu escolher a opçao 100% e escolher 2 contr. de cada tipo 2-duplo_light_flex, 2-duplo_digital etc, o programa vaime dar o resultado de 8 mas se somasse os pontos ele deveria dar o resultado de 106 mas funciona quase bem


RE: Linguagem C - Dicas e ajuda para iniciantes - wolfytuga - 18-07-2011 15:45

(18-07-2011 14:39)helder fortunato Escreveu:  ok obrigado,vou esperimentar assim,pensso que com essas correçoes vai ficar bom

Em alternativa tem este pequeno substituto, este faz uso do switch case:

Código:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int duplo_light_flex,duplo_digital,triplo_10m,triplo_10m_digital;
    enum{a=80,b=90,c=100,d=110,e=125};
    
    printf("80%% \n90%% \n100%% \n110%% \n125%% \ndigita a tua percentagem:\n");
    
    int opcao=a; //coloque o respectivo numero sem '%'
    scanf("%d", &opcao);
    
    switch (opcao)
    {
        case a: duplo_light_flex=2;
                duplo_digital=5;
                triplo_10m=7;
                triplo_10m_digital=9;
                break;
                
        case b: duplo_light_flex=4;
                duplo_digital=7;
                triplo_10m=9;
                triplo_10m_digital=11;
                break;
                
        case c: duplo_light_flex=8;
                duplo_digital=12;
                triplo_10m=15;
                triplo_10m_digital=18;
                break;
                
        case d: duplo_light_flex=10;
                duplo_digital=14;
                triplo_10m=18;
                triplo_10m_digital=22;
                break;
                
        case e: duplo_light_flex=12;
                duplo_digital=16;
                triplo_10m=20;
                triplo_10m_digital=26;
                break;
                
        default:     printf("\nEssa opcao nao esta disponivel!\n\n");
                    exit(0);
                    break;
    }
    
    int soma=0;
    
    printf(" digite quantos duplo_light_flex\n");
    scanf("%d",&duplo_light_flex);
    printf("digite quantos duplo_digital\n");
    scanf("%d",&duplo_digital);
    printf("digite quantos triplo_10m\n");
    scanf("%d",&triplo_10m);
    printf("digite quantos triplo_10M_digital\n");
    scanf("%d",&triplo_10m_digital);
    soma=duplo_light_flex+duplo_digital+triplo_10m+triplo_10m_digital;
    printf("resultado: %d\n" ,soma);
    
    system("PAUSE");    
    return 0;
}

@off topic: Para que é que está a introduzir valores iniciais, se ao pedir ao utilizador irá reescrever esses mesmos valores? Unsure Ainda se houvesse um pedido ao utilizador se quer usar os valores padrão ou se quer introduzir uns novos, isso assim, já era compreensível!!! Neutral
(18-07-2011 15:41)helder fortunato Escreveu:  boas amigo,já estive a esperimentar o programa e já nao dá erro fincou bem melhor (funciona) mas só nao está a dár o resultado que eu esperava...

se esperimentares o codigo ele vai me dar a soma dos contratos que eu fiz,mas eu queria que ele somasse era os pontos,
tipo se eu escolher a opçao 100% e escolher 2 contr. de cada tipo 2-duplo_light_flex, 2-duplo_digital etc, o programa vaime dar o resultado de 8 mas se somasse os pontos ele deveria dar o resultado de 106 mas funciona quase bem

ah, eu me perguntava porque estava a guardar o resultado em variáveis com resultados armazenados... afinal aqueles valores são constantes e o utilizador apenas insere o peso que cada constante vai ter, é isso?

ou seja, isto (para 100%):
Código:
duplo_light_flex=8;
duplo_digital=12;
triplo_10m=15;
triplo_10m_digital=18;

printf("digite quantos duplo_light_flex\n");
scanf("%d",&peso_duplo_light_flex);
printf("digite quantos duplo_digital\n");
scanf("%d",&peso_duplo_digital);
printf("digite quantos triplo_10m\n");
scanf("%d",&peso_triplo_10m);
printf("digite quantos triplo_10M_digital\n");
scanf("%d",&peso_triplo_10m_digital);

soma = (peso_duplo_light_flex*duplo_light_flex) + (peso_duplo_digital*duplo_digital) + (peso_triplo_10m*triplo_10m) + (peso_triplo_10m_digital*triplo_10m_digital);
printf("resultado: %d\n" ,soma);

Assim, desta forma, supondo que o utilizador insere 2 em cada campo, fica o seguinte em soma:
soma = (2*8) + (2*12) + (2*15) + (2*18);

É isto?
Pode ver se este código já corresponde ao que quer?

Código:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int duplo_light_flex,duplo_digital,triplo_10m,triplo_10m_digital;
    enum{a=80,b=90,c=100,d=110,e=125};
    
    printf("80%% \n90%% \n100%% \n110%% \n125%% \ndigita a tua percentagem:\n");
    
    int opcao=a; //coloque o respectivo numero sem '%'
    scanf("%d", &opcao);
    
    switch (opcao)
    {
        case a: duplo_light_flex=2;
                duplo_digital=5;
                triplo_10m=7;
                triplo_10m_digital=9;
                break;
                
        case b: duplo_light_flex=4;
                duplo_digital=7;
                triplo_10m=9;
                triplo_10m_digital=11;
                break;
                
        case c: duplo_light_flex=8;
                duplo_digital=12;
                triplo_10m=15;
                triplo_10m_digital=18;
                break;
                
        case d: duplo_light_flex=10;
                duplo_digital=14;
                triplo_10m=18;
                triplo_10m_digital=22;
                break;
                
        case e: duplo_light_flex=12;
                duplo_digital=16;
                triplo_10m=20;
                triplo_10m_digital=26;
                break;
                
        default:     printf("\nEssa opcao nao esta disponivel!\n\n");
                    exit(0);
                    break;
    }
    
    int soma=0;
    
    int peso_duplo_light_flex,peso_duplo_digital,peso_triplo_10m,peso_triplo_10m_digital​;
    
    printf("digite quantos duplo_light_flex\n");
    scanf("%d",&peso_duplo_light_flex);
    printf("digite quantos duplo_digital\n");
    scanf("%d",&peso_duplo_digital);
    printf("digite quantos triplo_10m\n");
    scanf("%d",&peso_triplo_10m);
    printf("digite quantos triplo_10M_digital\n");
    scanf("%d",&peso_triplo_10m_digital);
    
    soma = (peso_duplo_light_flex*duplo_light_flex) + (peso_duplo_digital*duplo_digital) + (peso_triplo_10m*triplo_10m) + (peso_triplo_10m_digital*triplo_10m_digital);
    printf("resultado: %d\n" ,soma);
    
    system("PAUSE");    
    return 0;
}



RE: Linguagem C - Dicas e ajuda para iniciantes - helder fortunato - 18-07-2011 19:23

este ultimo modelo que fiseste funciona muito bem mesmo como eu queria"obrigado"


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

int main(int argc, char *argv[])
{
int duplo_light_flex,duplo_digital,triplo_10m,triplo_10m_digital;
enum{a=80,b=90,c=100,d=110,e=125};

printf("80%% \n90%% \n100%% \n110%% \n125%% \ndigita a tua percentagem:\n");

int opcao=a; //coloque o respectivo numero sem '%'
scanf("%d", &opcao);

switch (opcao)
{
case a: duplo_light_flex=2;
duplo_digital=5;
triplo_10m=7;
triplo_10m_digital=9;
break;

case b: duplo_light_flex=4;
duplo_digital=7;
triplo_10m=9;
triplo_10m_digital=11;
break;

case c: duplo_light_flex=8;
duplo_digital=12;
triplo_10m=15;
triplo_10m_digital=18;
break;

case d: duplo_light_flex=10;
duplo_digital=14;
triplo_10m=18;
triplo_10m_digital=22;
break;

case e: duplo_light_flex=12;
duplo_digital=16;
triplo_10m=20;
triplo_10m_digital=26;
break;

default: printf("\nEssa opcao nao esta disponivel!\n\n");
exit(0);
break;
}

int soma=0;

int peso_duplo_light_flex,peso_duplo_digital,peso_triplo_10m,peso_triplo_10m_digital​;

printf("digite quantos duplo_light_flex\n");
scanf("%d",&peso_duplo_light_flex);
printf("digite quantos duplo_digital\n");
scanf("%d",&peso_duplo_digital);
printf("digite quantos triplo_10m\n");
scanf("%d",&peso_triplo_10m);
printf("digite quantos triplo_10M_digital\n");
scanf("%d",&peso_triplo_10m_digital);

soma = (peso_duplo_light_flex*duplo_light_flex) + (peso_duplo_digital*duplo_digital) + (peso_triplo_10m*triplo_10m) + (peso_triplo_10m_digital*triplo_10m_digital);
printf("resultado: %d\n" ,soma);

system("PAUSE");
return 0;
}


RE: Linguagem C - Dicas e ajuda para iniciantes - wolfytuga - 18-07-2011 21:11

De nada Smile

Percebeu onde estavam os erros e como corrigi-los? Isto exige mais treino, quanto mais treinar, melhor fica!


RE: Linguagem C - Dicas e ajuda para iniciantes - helder fortunato - 18-07-2011 23:03

sim percebi e aprendi,eu ainda só estudo a linguagem c á 6 ou 7 meses para o tempo que é nao estou mal,mas ainda estou verde no c,tambem aprendi html as tags listas e tabelas,mas prefiro linguagem para software au inves da linguagem para web,
este codigo que fiseste em c vai ser uma boa ferramenta para o meu trabalho,obrigado amigo,vou continuar a estudar mais o c...


RE: Linguagem C - Dicas e ajuda para iniciantes - Mkman - 20-07-2011 18:21

@helder fortunado para dizer a verdade acho que ja devias estar mais avançado em C com 6/7 meses de trabalho com ele. Mas é a tua 1º linguagem de programaçao? que livro ou tutorial estas a usar?


RE: Linguagem C - Dicas e ajuda para iniciantes - helder fortunato - 29-07-2011 14:21

boas mkman,estive de férias eis a minha ausencia,sim é verdade que já poderia estar + avanssado mas esses 6 ou 7 meses tenho estudado só nos tenpos livres que as veses nao são muitos,eu para estudar linguagem c tenho usado varios tutorias e postagens de inicialização á linguagem c e tambem algumas vidio aulas,antes de começar a estudar linguagem c tambem aprendi html,tens alguma sujestão