Ir para conteúdo
Fórum Script Brasil

Assissi

Membros
  • Total de itens

    9
  • Registro em

  • Última visita

Sobre Assissi

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Assissi's Achievements

0

Reputação

  1. Assissi

    EOF, '\0' e '\n'

    @Nefisto excelente resposta.Perfeito 👏👌🎯
  2. Precisa de ajuda em quê? Pode usar um ciclo for para fazer todos os numeros entre um e mil. Além disso, pode fazer o resto para descobrir se é multiplo(resto=0) ou não. Depois é só somar os valores do género: 'soma=soma+numero.
  3. Oi, acho que o teu erro se deve a comparares o i com o n, como primeiro comparas e depois é que incrementas o valor de i, então só depois de escreveres o 102 é que ele compara. Podes fazer das seguintes formas: printf("Multiplos: %d\n",i); while(i<=n) { printf("Multiplos: %d\n",i); m = m + 1; i = x * m; } ou então(uma das formas como eu faria) while(m<=n) { i = x * m; printf("Multiplos: %d\n",i); m = m + 1; } PS: Tenta compreender, qualquer dúvida avisa. Assissi
  4. @giu_d_ muito obrigado! O link ajudou imenso, muito bom mesmo. Além disso, obrigado pela observação, tem toda a razão. 😉
  5. Boa dia, este exercício é para iniciantes mas que requer uma certa linha de pensamento(tabela ASCII). Neste exercício pretende-se criar um código em C que: Lê nº reais sendo caracteres; Estes números são sempre feitos desta forma : aaa,aa(3 algoritmos na parte inteira e outra na parte 2) ; Se colocarmos algo diferente de um número o programa deve sair; têm de ser feito com o auxilio de um ciclo; De cada vez que o ciclo corre é lemos um carácter; Por fim, escreve-se o valor do float final, tanto na forma normal como cientifica. Já tinha visto este exercício feito online algumas vezes, mas como todos que guardavam caracteres em variáveis diferentes, acho que consegui chegar a forma mais eficaz( menos variáveis) de resolver o mesmo. Por isso, decidi partilhar o mesmo: /* Leitura de caracteres na forma de um float (aaa,aa)*/ #include<stdio.h> #include <stdlib.h> /*exit(1)*/ int main () { char c; int i; float m=1000, r=0; printf("Escreva um numero com casas até às centenas e 2 casas decimais: "); for(i=0;i<6;i++){ scanf("%c",&c); if (((c<'0') && (c>'9'))&& ((i!=3)&& (c!=','))){ printf("Não introduziu um numero com as caracteristicas pedidas\n"); exit(1); } if(i!=3){ m=m/10.; r=((int)(c-'0'))*m+r;/*tabela ASCII*/ printf("\n %.2f \n",r); } } printf("\n O numero é %.2f ou na forma cientifica %.4E \n",r,r); } /*Linha 17 comentada: Pretendeu-se criar um float(r) à medida que se ia recebendo cada caracter c. Para isso multiplicamos o número por m( que varia à medida que deslocamos à direita do número, ou seja , ((int)(c-'0'))*100 dá o algorismo das centenas. Além disso, como os números são lidos em caracteres então o inteiro a que corresponde ao nosso caracter é diferente do valor que ele corresponde caso fosse um inteiro, por exemplo (o caracter 1= 49 inteiro) daí se subtrair o caracter anterior a este(0).Assim, já passamos a ter o caracter que corresponde ao número inteiro que pretendemos.O int é para passar esse caracter(c-'0') para o inteiro correspondente. Por fim, soma-se a r o valor anterior de r. Dando assim, r=((int)(c-'0'))*m+r. ******************************Assissi********************************************** Obrigado, espero que tenham gostado Assissi
  6. Pelo o que estou a ver no teu texto tens um if com duas instruções e por isso deverias ter metido { }, pois se não fizeres tens um if seguindo por uma instrução e depois tens um printf independente do if, logo para o compilador a função if acabou antes do printf. Fazendo que quando o compilador vê o else não tenha nenhum if associado antes dele. Concluindo, poderias ter feito dessa forma se só tivesses uma instrução que é o caso das outras condições else que tens e nunca metas outras coisas que não tenham haver entre um if e um else. Se quiseres vai ao meu perfil e na publicação Módulos de números em C está lá um if else num código que fiz. Pode ser que ajude a que entendas melhor o que estou a dizer. Espero que tenha ajudado, Assissi
  7. Boa tarde, ainda não tenho muita experiência com C e linux, estou a tentar Mudar a cor do Terminal do Linux usando C, mas ainda não consegui. Sei que funciona para DEV C++ mas no linux ainda não consegui. Tentei utilizar a biblioteca stdio.h com o seguite código: system("color 10"); system("color 15B"); Tentei também por conio.h, mas não funcionou. Gostaria de saber se estou a fazer um erro ou se existe alguma forma de mudar a cor? Obrigado
  8. Boa tarde, estava a criar um programa para saber a diferença dos tempos, como a diferença poderia dar valores negativos decidi utilizar o módulo. Assim, utilizei a biblioteca #include <math.h> e o seguite código: tempo= tempo1 -tempo2; tempo= abs(tempo); O programa que fiz para saber a diferença entre tempos para quem esteja interessado foi o seguinte: #include <stdio.h> #include <math.h>/*funçoes matematica*/ int main() { unsigned int d1/*dia_1*/,h1/*hora_1*/,m1/*minuto1_*/,s1/*segundo_1*/,d2/*dia_2*/,h2/*hora_2*/,m2/*minuto_2*/,s2/*segundo_2*/; unsigned long int tempo,tempo1,tempo2; printf(" Introduza o tempo no.1 (dia)d (hora)h (minuto)m (segundo)s:\n "); scanf("%ud %uh %um %us",&d1,&h1,&m1,&s1); printf(" Introduza o tempo no.2 (dia)d (hora)h (minuto)m (segundo)s:\n "); scanf("%ud %uh %um %us",&d2,&h2,&m2,&s2); /*Converter o tempo em segundos*/ tempo1= ((d1*24 + h1)*60 +m1)*60 +s1; tempo2= ((d2*24 + h2)*60 +m2)*60 +s2; /*Obrigar a lidar no máximo 1000dias*/ if( tempo1<=86400000 && tempo2<=86400000 ){ /*Subtração dos tempos*/ tempo= tempo1 -tempo2; tempo= abs(tempo);/*modulo do tempo*/ /*Tempo final*/ d1= tempo/86400; h1= (tempo/3600)-(d1*24); m1= (tempo/60)-(h1*60); s1= (tempo/60)-(m1*60); /*resposta final*/ printf("A diferença entre os dois tempos é de %lu segundos = %ud %uh %um %us\n",tempo,d1,h1,m1,s1); } else printf("Desculpe, mas o numero maximo para cada um dos tempos é de 1000dias.Tende novamente"); } Espero que tenham gostado, ASSISSI
×
×
  • Criar Novo...