
good guy
Membros-
Total de itens
19 -
Registro em
-
Última visita
Tudo que good guy postou
-
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 ...
-
Olá Steel, você já verificou que ao clicar com o botão direito no arquivo compilado, você pode ir em propriedades => Programa=> Executar=>Maximizado e também na aba Tela => Uso=> Tela Inteira e assim poderá atenderá o que você quer?
-
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"); } }
-
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); }
-
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);
-
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.
-
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; }
-
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.*/
-
Limpe a memória utilizando fflush(stdin); abaixo da função scanf. Quando há recursividade, isto é, retorno ao início do programa após retornar um resultado, pode haver acúmulo de dados na memória e gerar erros no novo cálculo.
-
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(); }
-
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?
-
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 !!!
-
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(); }
-
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(); }
-
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 !!!
-
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:
-
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 !!!
-
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; }
-
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?