Ir para conteúdo
Fórum Script Brasil

good guy

Membros
  • Total de itens

    19
  • Registro em

  • Última visita

Posts postados por good guy

  1. Olá Luis,

    Em um outro post já respondi com um código semelhante ao que você quer. Mas vou repetir aqui:

    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    
    main()
    {
    int DiaNasc, MesNasc,  AnoNasc, DiaAtual, MesAtual, AnoAtual, Anos, Meses, Dias;
    
    printf("Digite a data do nascimento \n");  // O formato é dd mm yyyy . Não utilize a barra invertida !!!
    scanf("%d %d %d",&DiaNasc, &MesNasc, &AnoNasc);
    fflush(stdin);
    printf("Digite a data de hoje: \n"); // // O formato é dd mm yyyy . Não utilize a barra invertida !!!
    scanf("%d %d %d", &DiaAtual,&MesAtual, &AnoAtual);
    fflush(stdin);
    
    Anos = AnoAtual - AnoNasc;
    Meses= MesAtual- MesNasc;
    Dias = DiaAtual - DiaNasc;
    
    if ((Anos<0) || ((Anos==0) && (Meses<0)) || ((Anos==0) && (Meses ==0) && (Dias<0)))
            printf("Data de nascimento invalida !");
    else
          {
           if (Meses < 0)
                   {
                    Anos = Anos -1;
                    Meses = Meses + 12;
                    }
           if (Dias < 0)
                    {
                    if (Meses > 0)
                              Meses = Meses - 1;
                    else
                              Anos = Anos -1;
                    switch (MesNasc)
                              {
                              case 2:
                                         {
                                         if (AnoAtual % 4 == 0)
                                                    Dias = Dias + 29;
                                         else
                                                    Dias = Dias + 28;
                                         break;
                                         }
                               case 4:case 6:case 9:case 11:
                                                               {
                                                                Dias = Dias + 30;
                                                                 break;
                                                                }
                               default: Dias = Dias + 31;
                                };
                            }
                printf("Idade = %d ano(s), %d mes(es) e %d dia(s) \n\n", Anos, Meses, Dias);
                                                    getch();
                                                    system("PAUSE");
                }
    }

    Falta acrescentar o método que calcula em semanas, mas isso não é difícil. você pode resolver ...

  2. Conheço um código do Jaime Evaristo que calcula sem problemas:

    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    
    main()
    {
    int DiaNasc, MesNasc,  AnoNasc, DiaAtual, MesAtual, AnoAtual, Anos, Meses, Dias;
    
    printf("Digite a data do nascimento \n");  // O formato é dd mm yyyy . Não utilize a barra invertida !!!
    scanf("%d %d %d",&DiaNasc, &MesNasc, &AnoNasc);
    fflush(stdin);
    printf("Digite a data de hoje: \n"); // // O formato é dd mm yyyy . Não utilize a barra invertida !!!
    scanf("%d %d %d", &DiaAtual,&MesAtual, &AnoAtual);
    fflush(stdin);
    
    Anos = AnoAtual - AnoNasc;
    Meses= MesAtual- MesNasc;
    Dias = DiaAtual - DiaNasc;
    
    if ((Anos<0) || ((Anos==0) && (Meses<0)) || ((Anos==0) && (Meses ==0) && (Dias<0)))
            printf("Data de nascimento invalida !");
    else
          {
           if (Meses < 0)
                   {
                    Anos = Anos -1;
                    Meses = Meses + 12;
                    }
           if (Dias < 0)
                    {
                    if (Meses > 0)
                              Meses = Meses - 1;
                    else
                              Anos = Anos -1;
                    switch (MesNasc)
                              {
                              case 2:
                                         {
                                         if (AnoAtual % 4 == 0)
                                                    Dias = Dias + 29;
                                         else
                                                    Dias = Dias + 28;
                                         break;
                                         }
                               case 4:case 6:case 9:case 11:
                                                               {
                                                                Dias = Dias + 30;
                                                                 break;
                                                                }
                               default: Dias = Dias + 31;
                                };
                            }
                printf("Idade = %d ano(s), %d mes(es) e %d dia(s) \n\n", Anos, Meses, Dias);
                                                    getch();
                                                    system("PAUSE");
                }
    }

  3. Olá, estude este código e veja se ajuda:

    struct dado aluno[2];

    int i,j;

    float aux,soma,media;

    clrscr();

    for(i=0;i<2;i++){

    printf("\n\Digite o nome do %d§ aluno: ",i+1);

    gets(aluno.nome);

    for(j=0;j<4;j++){

    printf("Digite o valor da %d¦ nota do aluno:",j+1);

    scanf("%f",&aux);

    aluno.nota[j]=aux;

    fflush(stdin);

    }

    }

    Minha sugestão :

    ......

    for(j=0;j<50;j++){

    printf("Digite a disciplina do aluno:");

    scanf("%s",&nomed);

    aluno.disciplina[j]=nomed;

    fflush(stdin);

    }

  4. Ola ovelha,

    Retire o cont_c referente a essas variáveis nas printf e substitua pelas nova variáveis (codigo, modelo[30], marca[30], preço.

    Abaixo de scanf coloque fflush(stdin);

    Tire o cont_c e cont_m.

    A formatação não é %u, mas:

    %d , codigo

    %s , modelo[50]

    %s , marca[50]

    %.2f , preço // tire a cedilha e coloque c

    Defina uma constante k:

    #define const float k = (0.30 * preço) + preço

    Nas últimas linhas do código ficará assim:

    printf("preço: %.2f \n", func[ i ].k);

  5. Olá Ovelha,

    Crie duas constantes float assim:

    float percentual = (p / 100.0); // x% constante percentual

    float k = percentual+ 0.3*valor;//constante k

    p é a variável no lugar de idade.

    valor é a variável no lugar do nome.

    Ex.: p==5;

    O resultado seria assim:

    printf("O resultado e : %f ", k);

    Veja bem refaça o programa para atender a seu gosto. Sugestão: Troque funcionario por Calculo, nome por float valor e idade por float p e mantenha n como o número de iterações.

  6. Olá ovelha,

    Eis um exemplo simples tirado da internet pelo Google:

    /*  EXEMPLO BASICO DE STRUCT EM C
        DESENVOLVIDO POR MARCOS VINICIUS
        EMAIL: MARCOS.VINICIUS.SECURITY@GMAIL.COM
    */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    struct funcionario {
                         char nome[50];
                         int idade;
                                            };
    
    main () {
                    struct funcionario func[50];
                    int i = 0;
                    //int n; //variavel "n" de numero de iterações sugerida por mim
    
    
                  /*ATENÇÃO ovelha : para variar o numero de iterações faça assim:
                    printf("Digite o numero de funcionarios a cadastrar: ");
                    scanf("%d",&n);
                    fflush(stdin);
                    for (i=1;i<n;i++)*/
    
                    for (i=1;i<3;i++)
                    {
                      printf("\nNome do %uo Funcionario: ", i);
                      scanf("%s", &func[ i ].nome);
    
                      printf("Idade do %uo Funcionario: ", i);
                      scanf("%u", &func[ i ].idade);
                    };
    
                    system("clear");  /*ou system("cls"); Limpa a tela acima e emite o relatório abaixo. Se clear não funcionar use o cls. Dica sugerida por mim*/
                    //for (i=1;i<n;i++) //variavel "n" de numero de iterações sugerida por mim
                    
                    for (i=1; i<3; i++)
                    {
                      printf("-----------------------------------\n");
                      printf("Nome do %uo Funcionario: %s ", i, &func[ i ].nome);
                      printf("\nIdade do %uo Funcionario: %u \n", i, func[ i ].idade);
                      printf("-----------------------------------\n");
                      printf("\n");
                    };
                 system("PAUSE"); //Acrescentado por mim. Conclue o programa pedindo para pressionar uma tecla
                 return 0;
                 }

  7. Olá Rodrigo,

    Para trabalhar com arquivos textuais, você precisa aprender a declarar um ponteiro para o tipo FILE.

    Ex.: FILE *arq;

    arq = fopen("alunos.txt", "r"); /*r abre um arquivo existente para leitura de dados; se o arquivo não existir irá ocorrer um erro.*/

  8. Bom dia,

    Estou tentando editar este código para emitir um relatório de valores fornecidos em um looping quando falta valor para realizar combinação com valor pago ou quando ultrapassa o valor pago. O programa emite sem problema um relatório quando a soma de valores fornecidos bate com o valor pago. É possível?

    #include <iostream>

    #include <stdio.h>

    #include <conio.h>

    /*

    Name: Combinação de Valores de Ordem Bancária

    Copyright: 2010

    Author: Eduardo Vieira Machado

    Date: 23/07/10 16:00

    Description: Uso de looping para calcular e comparar valores

    */

    int main(void) {

    int i,n,p=0;

    float Med; //vetor de valores das medições

    //float *Med= new float[n];

    char resp;

    float soma=0;

    float valorpago;

    system("cls"); //limpa a tela acima

    printf("***********************************************************************\n");

    printf(" COMBINACAO DE VALORES DE ORDEM BANCARIA\n\n");

    printf("***********************************************************************\n\n\n");

    printf("Separe por ponto as casas decimais\n\n");

    printf("\n\n\Digite o valor pago: ");

    scanf("%f",&valorpago);

    fflush(stdin);

    printf("\n\nDigite o numero de medicoes a somar: ");

    scanf("%d",&n);

    fflush(stdin);

    for (i = 0;i<n;i++) //gera um looping para inserir valores em sequência

    {

    printf("\nDigite o %2do. valor: ",i+1 );

    scanf("%f",&Med);//scanf("%f",&Med);

    fflush(stdin);

    soma = soma + Med; //soma a cada looping os valores que são inseridos

    printf("\nTotal: %.2f\n",soma);

    fflush(stdin);

    {

    if (soma==valorpago){

    printf("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n");

    printf("VALOR ENCONTRADO. BATE COM VALOR PAGO. BAIXE OS DEBITOS !!!\n\n");

    printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n");

    system("PAUSE");

    system("cls"); //limpa a tela acima

    //Relatório de valores fornecidos e aparece normalmente

    printf("\n\n\nxxxxxxxxxx RELACAO DE VALORES FORNECIDOS xxxxxxxxxxxxxxx");

    printf("\n\nValor Pago: %.2f \t\n\nQtde de Valores: %d\t\n\nSoma Calculada: %.2f\n ", valorpago, n, soma);

    for (i=0;i<n;i++) //Lista todos os valores do cálculo se a comparação tem sucesso

    {

    printf("\n\n %d.o Valor Fornecido: %.2f ",i+1,Med);

    }

    printf("\n\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

    break;

    }

    else

    if (soma<valorpago){

    printf("\n==>Falta: %.2f\n",valorpago-soma);

    fflush(stdin);

    continue;

    system("PAUSE");

    system("cls"); //limpa a tela acima

    //Relatório de valores fornecidos. MAS não aparece

    printf("\n\n\nxxxxxxxxxx RELACAO DE VALORES FORNECIDOS xxxxxxxxxxxxxxx");

    printf("\n\nValor Pago: %.2f \t\n\nQtde de Valores: %d\t\n\nSoma Calculada: %.2f\n ", valorpago, n, soma);

    for (i=0;i<n;i++) //Lista todos os valores do cálculo se a comparação tem sucesso

    {

    printf("\n\n %d.o Valor Fornecido: %.2f ",i+1,Med);

    }

    printf("\n\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

    break;

    }

    else{

    printf("\n\n==>Ultrapassou: %.2f\n",soma-valorpago);

    fflush(stdin);

    continue;

    system("PAUSE");

    system("cls"); //limpa a tela acima

    //Relatório de valores fornecidos. MAS não aparece

    printf("\n\n\nxxxxxxxxxx RELACAO DE VALORES FORNECIDOS xxxxxxxxxxxxxxx");

    printf("\n\nValor Pago: %.2f \t\n\nQtde de Valores: %d\t\n\nSoma Calculada: %.2f\n ", valorpago, n, soma);

    for (i=0;i<n;i++) //Lista todos os valores do cálculo

    {

    printf("\n\n %d.o Valor Fornecido: %.2f ",i+1,Med);

    }

    printf("\n\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

    break;

    }

    getch();

    }

    }

    printf("\n\nFim do Programa...");

    getch();

    }

  9. Bem pessoal,

    Em meu último tópico postado consegui resolver meu problema de compilação, mas agora surgiu um outro, como liberar a memória em meus programas de cálculo. Aprendi a usar fflush(stdin); após scanf, mas mesmo assim quando meu programa se reinicia ou após um looping empregado para reiniciar resíduos do cálculo anterior voltam na efetivação do cálculo. Por exemplo: soma= soma + valor; O total desta soma utilizando este vetor volta ao reiniciar o programa e a soma se repetir. Algum amigo pode ajudar?

  10. Dei uma melhorada no programa e ficou assim:

    códigos aqui
    
    #include <iostream>
    #include <stdio.h>
    #include <conio.h>
    /*
      Name: Combinação de Valores de Ordem Bancária
      Copyright: 2010
      Author: Eduardo Vieira Machado
      Date: 23/07/10 16:00
      Description: Uso de looping para calcular e comparar valores
    */
    
    int main(void) {
           
           
           int i,n,p=0;
           float Med[i]; //vetor de valores das medições
           //float *Med= new float[n];
           char resp;
           float soma=0;
           float valorpago;
           
           system("cls"); //limpa a tela acima
           printf("***********************************************************************\n");
           printf("        COMBINACAO DE VALORES DE ORDEM BANCARIA\n\n");
           printf("***********************************************************************\n\n\n");
    
           printf("Separe por ponto as casas decimais\n\n");
           printf("\n\n\Digite o valor pago: ");
           scanf("%f",&valorpago);
           fflush(stdin);
           printf("\n\nDigite o numero de medicoes a somar: ");
           scanf("%d",&n);
           fflush(stdin);
           for (i = 0;i<n;i++) //gera um looping para inserir valores em sequência
           { 
               printf("\nDigite o %2do. valor: ",i+1 );
               scanf("%f",&Med[i]);//scanf("%f",&Med);
               fflush(stdin);         
                    
           soma = soma + Med[i]; //soma a cada looping os valores que são inseridos
      
           printf("\nTotal: %.2f\n",soma);
           fflush(stdin);
           {
           if (soma==valorpago){
              printf("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n");                  
              printf("VALOR ENCONTRADO. BATE COM VALOR PAGO. BAIXE OS DEBITOS !!!\n\n");
              printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n");
              system("PAUSE");
              system("cls"); //limpa a tela acima
              printf("\n\n\nxxxxxxxxxx RELACAO DE VALORES FORNECIDOS xxxxxxxxxxxxxxx");
              printf("\n\nValor Pago: %.2f \t\n\nQtde de Valores: %d\t\n\nSoma Calculada: %.2f\n ", valorpago, n, soma);
              for (i=0;i<n;i++) //Lista todos os valores do cálculo se a comparação tem sucesso
                  {
                      printf("\n\n %d.o Valor Fornecido: %.2f ",i+1,Med[i]);
                      }
              printf("\n\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");                   
              break;
              }
            else 
                 if (soma<valorpago){
                 printf("\n==>Falta:  %.2f\n",valorpago-soma);
                                                     continue;
                 }
            else{
                 printf("\n\n==>Ultrapassou:  %.2f\n",soma-valorpago);
                                                     continue; 
                 }
            getch();     
                 }       
    }
        printf("\n\nFim do Programa...");
        getch();
    }

    OK Pessoal, o programa está funcionando perfeitamente !!!

  11. Boa observação Jonathan ,

    Misturei as bolas aqui porque também programo em Java e VB.Net que utilizam esta diretiva de inclusão de bibliotecas.

    Obrigado também Ronaldo. Mas NÃO está ainda imprimindo a mensagem somente quando a condição é satisfeita ou imprime a mensagem mesmo não satisfeita a condição ao final das iterações. Mas melhorou um pouco, pois na primeira compilação estava imprimindo a mensagem a cada iteração.

    #include <stdio.h>
    #include <conio.h>
    
    int main() {
           
           
           int i,n;
           //float Med[i];
           float *Med= new float[n];
           float soma=0;
           float valorpago;
           printf("Digite o valor pago: ");
           scanf("%f",&valorpago);
           printf("Digite o numero de medicoes a somar: ");
           scanf("%d",&n);
               
           for (i = 1;i<=n;i++)
           { 
               printf("Digite um valor: ");
               scanf("%f",&Med[i]);
               fflush(stdin);         
           soma = soma + Med[i];
                   
           printf("Total: %.2f\n\n",soma);
           }
           if (soma = valorpago)
          
            {
                printf("VALOR ENCONTRADO. FAVOR BAIXAR DEBITO");
                }
                 
           printf("\n");
           getch();
    }

  12. Oi pessoal, tenho andado um pouco afastado do estudo de C/C++. Surgiu um probleminha em meu serviço e eu sugeri a um colega que poderia fazer um programinha em C para resolver o problema. Só que não consigo detectar rapidinho um probleminha de compilação em meu código abaixo. Alguém pode ajudar?

    #import <stdio.h>
    #import <conio.h>
    
    int main() {
           
           
           int i,n;
           float Med[i];
           float soma=0;
           float valorpago;
           printf("Digite o valor pago: ");
           scanf("%f",&valorpago);
           printf("Digite o numero de medicoes a somar: ");
           scanf("%d",&n);
               
           for (i = 1;i<n;i++)
           { 
               printf("Digite um valor: ");
               scanf("%f",&Med[i]);
               fflush(stdin);         
           soma = soma + Med[i];
                   
           printf("Total: %.2f\n\n",soma);
           }
           if (soma = valorpago)
          
            {
                printf("VALOR ENCONTRADO. FAVOR BAIXAR DEBITO");
                }
                 
           printf("\n");
           getch();
    }

  13. Bom dia amigos,

    Quero agradecer ao Dr. Mahala, Kassi e quitZaummm que contribuíram com as informações sobre como alterar a cor de fundo no ambiente Dev/C++. Pareceu-me mais prático utilizar a biblioteca conio atualizada baixada do link fornecido pelo Dr. Mahala, sem desmerecer o esforço dos demais amigos.

    Só aconteceu um pequeno inconveniente Dr. Mahala, a alteração da cor só envolve o ambiente até o início da primeira participação do usuário ao imprimir dados na tela e não em todo o ambiente visualizado pelo usuário.

    O que pode ser corrigido aqui?

    Os outros códigos fornecidos não funcionaram a contento.

    Muito obrigado a todos !!!

  14. Bom dia Micheus,

    Meus problemas:

    (1)A linha de código corrigido que você enviou aponta para alguns erros. Dentre eles, a não declaração de str1, conflito de tipos para char str... Naquele caso que tipo de declaração é a mais apropriada?str1 é um vetor ou um ponteiro? :huh:

    (2)No antigo código, eu inseri a função "fflush(stdin)" para armazenar os bytes da mensagem do vetor str[30] na memória e resolver o problema anterior, mas surgiu outro problema: o programa compila e eu posso digitar o texto, só que o programa não termina dentro da quantidade de caracteres permitida pelo vetor "str". Parece que é permitido digitar interminavelmente o texto.

    Mesmo alterando o código da seguinte maneira:

    printf("Entre com o texto a ser codificado:\n");

    for (i=0; i<30; i++)

    {

    scanf("%c",&texto);

    fflush(stdin);

    if ((texto == '.')&&(i==30))

    Dá pra ajudar? :rolleyes:

  15. Bom dia Micheus,

    Obrigado pela ajuda. Mas, o programa corrigido compila e dá erro quando você acaba de digitar um texto, do tipo "Este programa executou uma ação ilegal".

    Estou ciente de que o programa codifica, mas não necessariamente decodifica. Como não sei qual seria a formula correta para reverter a codificação, tive a idéia de desenvolver um programa que fizesse uma brincadeira para o usuário e também praticar o pouco que sei da linguagem C.

    Você saberia qual a fórmula correta de decodificação ou levar-me a pesquisar na fonte certa?

    E quanto ao código corrigido, saberia apontar onde está o problema?

    Muito obrigado !!!

  16. Ao compilar surge um erro na linha "printf("%c",str1);" . Alguém saberia solucionar o problema?
    no código que você postou não aparece a declaração de str1, qual seria?

    Ah! O ideal é que você poste a mensagem de erro que ocorre (original), assim é mais fácil de alguém auxiliá-lo. ;)

    Abraços

    Boa tarde Micheus,

    Obrigado pela resposta. Realmente eu esqueci de declarar a variável str1. O código compila normalmente, mas não decodifica a mensagem. Dá pra solucionar?

    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    #include <conio.h>
    
    int main(int args, char * arg[])
    {
      int i,j,n;
      char optei;
      char texto[30];
      char *str, *str1;
      str="texto[i]";
      do
      {
        system("CLS");
        printf("Entre com o texto a ser codificado:\n");
        for (i=0; i<30; i++)
        {
          scanf("%c",&texto[i]);
          char *strncpy(char *str1,char *str);
          if (texto[i] == '.')
            break;
        }
         
        n = i;
        printf("Texto com %d caracteres.\n", n);
        for (i = 0; i<n; i++)
          texto[i] = (5*texto[i] + 100) % 256;
        printf("Texto codificado:\n");
        for (i=0;i<n;i++)
          printf("%c",texto[i]);
        printf("\n");
          
        printf("Texto decodificado:\n");
        printf("%c",str1);
        printf("\n\n"); 
             
        printf("Continua? (S/N): ");
        optei = toupper(getche());
      }
      while (optei == 'S');
        printf("\n");
      system("PAUSE");
      return 0;
    }

  17. Bom dia Pessoal,

    Gostaria de saber se alguém poderia identificar qual o erro no seguinte código:

    // Programa p14.c
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    #include <conio.h>
    
    int main(int args, char * arg[])
    {
        int i,j,n;
        char optei;
        char texto[100];
        char *str;
        str="texto[i]";
        do
        {
         system("CLS");
         printf("Entre com o texto a ser codificado:\n");
         for (i=0; i<100; i++)
         {
              scanf("%c",&texto[i]);
              if (texto[i] == '.')
              break;
         char *strncpy(char *str1,char *str);
         }
         n = i;
         printf("Texto com %d caracteres.\n", n);
         for (i = 0; i<n; i++)
            texto[i] = (5*texto[i] + 100) % 256;
         printf("Texto codificado:\n");
          for (i=0;i<n;i++)
            printf("%c",texto[i]);
          printf("\n");
          
          printf("Texto decodificado:\n");
              printf("%c",str1);
              printf("\n\n"); 
             
          printf("Continua? (S/N): ");
          optei = toupper(getche());
          }
          while (optei == 'S');
          printf("\n");
          system("PAUSE");
          return 0;
    }

    Modifiquei a estrutura básica que só codificava e usei a seguinte lógica: acrescentei o ponteiro "*str" que grava a mensagem inicial para depois reapresentá-la no final. Não sei se utilizei a lógica certa. Ao compilar surge um erro na linha "printf("%c",str1);" . Alguém saberia solucionar o problema? Minha lógica estaria errada?

×
×
  • Criar Novo...