Jump to content
Fórum Script Brasil

brunoandrad

Membros
  • Posts

    30
  • Joined

  • Last visited

Everything posted by brunoandrad

  1. Consegui fazer o código para fazer os cálculos, meu problema esta em como imprimir o resultado de acordo como o enunciado pede. Só consigo imprimir na hora que eu faço o calculo... O código que eu fiz: #include <stdio.h> #include <stdlib.h> int calcula_Taxas(float); int main() { int car=1; float horas; float taxa_total; printf("Bem vindo ao programa Garagem!! \n\n\n"); for (car=1; car<=3; car++){ printf("\n\nDigite o numero de horas para o carro %d: ", car); scanf("%f", &horas); calcula_Taxas(horas); } printf("\n\nTaxa Total: %f", taxa_total); return 0; } int calcula_Taxas(float x){ float taxa=2; float taxa_total=0; if (x<=3) taxa=2; if (x>=24) taxa=10; if ((x>=3) && (x<24)) taxa+=(x-3)*0.5; taxa_total+=taxa; printf("\n\n Horas: %f - Taxa: %f\n",x,taxa); return taxa_total; } O que eu tenho que alterar ou adicionar para conseguir imprimir os resultados consolidados igual o enunciado pede?
  2. você esta utilizando o fopen? Não lembro se o fopen aceita váriavel de nome... caso sim, basta pedir o nome/caminho do arquivo, gravar em uma string e passar a string na sintaxe do fopen.
  3. Quais erros esta dando? Se o /n é para pular linha, o correto é com a barra invertida: \n No switch você não usa else, e sim default: No case ao menos em C, não se coloca ' ' entre o número. Corrija isso e poste o que mais esta dando erro...
  4. Ola amigo, segue um código que eu tenho de criptografia, esta em C ao invés de C++, mas acredito que sirva para te dar uma ideia de como fazer: #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> // Configuracao da chave para criptografia char CHAVE[500]; int TAM_CHAVE = strlen(CHAVE); bool set_chave(char chave[]){ if(strlen(chave)<500){ strcpy(CHAVE,chave); TAM_CHAVE = strlen(CHAVE); return true; }else{ return false; } } //---------------------------// // Vetor de entrada do texto a ser criptografado: char TEXTO[10000]; int TAM_TEXTO = 10000; //---------------------------------------------- int TEXTO_CRIPT[10000]; bool Criptografar(){ int aux = 0; int CHAVE_int; int pos_texto; for (int i=0; i < strlen(TEXTO); i++){ TEXTO_CRIPT[i] = TEXTO[i]; } printf("\n -- %d\n",TEXTO_CRIPT[0]); for (aux=0; aux<strlen(TEXTO); ){ for (int i=0; i<TAM_CHAVE; i++){ TEXTO_CRIPT[aux] *= CHAVE[i]; // Também pode ser: TEXTO_CRIPT[aux] = TEXTO_CRIPT[aux] * CHAVE[i]; aux++; } } printf("\n -- %d\n",TEXTO_CRIPT[0]); return true; } bool Descriptografar(){ FILE *arquivo; int valor; int pos_chave; int pos_texto; arquivo = fopen("c:\\cript\\arquivos_recebidos\\criptografado.txt","r"); if(arquivo==NULL){ return false; } pos_chave = 0; pos_texto = 0; while(!feof(arquivo)){ fscanf(arquivo,"%d",&valor); valor /= CHAVE[pos_chave]; TEXTO[pos_texto] =(char)valor; pos_texto++; if(pos_chave==TAM_CHAVE-1){ pos_chave = 0; }else{ pos_chave++;} } fclose(arquivo); return true; } // ------------- Menus ---------------// void Recebe_texto(char tipo[]){ char aux[TAM_TEXTO]; char pause; bool ok; FILE *arquivo; char palavra[100]; if(strcmp(tipo,"msg")==0){ printf("\n\nReceber Texto para criptografar\n\n"); printf("\n\nDigite o texto: "); gets(aux); if(strlen(aux) <= TAM_TEXTO){ strcpy(TEXTO,aux); printf("\n\nTexto recebido com sucesso\n\n"); printf("\n\nCriptografando texto...\n\n"); ok = true; }else{ printf("\n\nErro!\n Tamanho do texto excede o limite de caracteres\n\n"); ok = false; system("pause"); } }else if(strcmp(tipo,"arquivo")==0){ printf("\n\tInstrucoes para importar um arquivo texto"); printf("\n\n 1 - Renomeio o arquivo para original.txt"); printf("\n\n 2 - Copie o arquivo para a pasta que sera aberta a seguir)"); printf("\n\n 3 - Feche o explorador e retorne a aplicacao"); printf("\n\n Pressione enter para abrir a pasta"); scanf("%c", &pause); setbuf(stdin,NULL); system("explorer c:\\Cript\\arquivos_originais\\"); printf("\n\n Pressione enter apos colar o arquivo na pasta...\n"); scanf("%c", &pause); setbuf(stdin,NULL); printf("\n\n Importanto arquivo...\n\n"); arquivo = fopen("c:\\Cript\\arquivos_originais\\original.txt","r"); if(arquivo==NULL){ printf("\n\n Erro ao abrir o arquivo..\n\n"); }else{ while(!feof(arquivo)){ fscanf(arquivo,"%s",palavra); strcat(aux," "); strcat(aux,palavra); } fclose(arquivo); if(strlen(aux) <= TAM_TEXTO){ strcpy(TEXTO,aux); printf("\n\nTexto recebido com sucesso\n\n"); printf("\n\nCriptografando texto...\n\n"); ok = true; }else{ printf("\n\nErro!\n Tamanho do texto excedo o limite de caracteres\n\n"); ok = false; system("pause"); } } }else{ printf("\n\nErro ao receber texto\n\n"); } if(ok){ if(Criptografar()){ printf("\n\nTexto criptografado com sucesso\n\n"); arquivo = fopen("c:\\cript\\arquivos_gerados\\criptografado.txt","wt"); if(arquivo==NULL){ printf("\n\n Erro ao criar o arquivo..\n\n"); }else{ for (int i=0; i<strlen(TEXTO); i++){ fprintf(arquivo,"%d ",TEXTO_CRIPT[i]); } } fclose(arquivo); printf("\n\nPressioner enter para abrir a pasta do arquivo gerado \n\n"); scanf("%c", &pause); setbuf(stdin, NULL); system("explorer c:\\cript\\arquivos_gerados\\"); }else{ printf("\n\nNao foi possivel criptografar o texto\n\n"); } } } void Receber_Arquivo_cript(){ char pause; printf("\n\tInstrucoes para importar um arquivo criptografado"); printf("\n\n 1 - Renomeie o arquivo para criptografado, mantendo sua extensao original"); printf("\n\n 2 - Copie o arquivo para a pasta que sera aberta a seguir)"); printf("\n\n 3 - Feche o explorador e retorne a aplicacao"); printf("\n\n Pressione enter para abrir a pasta"); scanf("%c", &pause); setbuf(stdin,NULL); system("explorer c:\\Cript\\arquivos_recebidos\\"); printf("\n\n Pressione enter apos colar o arquivo na pasta...\n"); scanf("%c", &pause); setbuf(stdin,NULL); printf("\n\n Importanto arquivo...\n\n"); if(Descriptografar()){ printf("\n Arquivo descriptografado com sucesso\n"); system("pause"); system("cls"); printf("\n%s\n\n",TEXTO); system("pause"); }else{ printf("\n Nao foi possivel descriptografar o arquivo\n");} } void Menu_Criptografar(){ int opcao; printf("\n\tCriptografia de dados"); printf("\n\nCriptografar texto ou arquivo"); printf("\n\n 1 - Digitar texto"); printf("\n\n 2 - Importar arquivo (txt)"); printf("\n\n 3 - Voltar ao menu princiapl"); printf("\n\n Informe a opcao desejada: "); scanf("%d", &opcao); setbuf(stdin, NULL); switch(opcao){ case 1: system("cls"); Recebe_texto("msg"); break; case 2: system("cls"); Recebe_texto("arquivo"); break; case 3: break; default: printf("Opcao invalida! Tente novamente..."); } } void Menu(){ char chave[500]; int opcao; while(1){ // while 1(um) é igual a infinito system("cls"); printf("\n\tCriptografia de dados"); printf("\n\n 1 - Criptografar Texto"); printf("\n\n 2 - Receber arquivo"); printf("\n\n 3 - Configurar Chave"); printf("\n\n 4 - Sair"); printf("\n\n Informe a opcao desejada: "); scanf("%d", &opcao); setbuf(stdin, NULL); switch(opcao){ case 1: system("cls"); Menu_Criptografar(); break; case 2: system("cls"); Receber_Arquivo_cript(); break; case 3: system("cls"); printf("\n\nInforme a chave: "); gets(chave); if(set_chave(chave)){ printf("\n\n Chave modificada com sucesso!\n"); }else{ printf("\n\n Chave não pode ser modificada!\n"); } system("pause"); break; case 4: printf("\nFinalizando... \n\n"); system("pause"); exit(0); break; default: printf("Opcao invalida! Tente novamente..."); } } } // ----------------------------------------------- int main() { set_chave("AbCd"); Menu(); system("pause"); return 0; }
  5. Pessoal, sofri para conseguir fazer o programa abaixo, mas gostaria de saber se minha lógica esta correta ou se há um modo mais 'limpo, direto' ou simples de se fazer. Escreva um programa que imprima o seguinte losango. * *** ***** ******* ********* ******* ***** *** * #include <stdio.h> #include <stdlib.h> int main() { int i, tam, espaco, asterisco, x, y, metade; asterisco=1; espaco=tam=10; metade=tam/2; printf("Bem vindo ao losango\n\n\n"); for (x=0; x<metade; x++){ //Começa a parte superior for (i=1; i<=espaco; i++) // Da espaco para alinhamento do losango, a cada vez reduz um espaco printf(" "); espaco--; //Decrementa o espaco for (y=0;y<asterisco;y++) //Imprime o losango printf("*"); printf("\n"); // Pula linha asterisco+=2; // Adiciona 2 * para cada linha que for impressa } // Atualiza asterisco-=2; espaco++; // Começa a imprimir a parte inferior for (x=0; x<metade; x++){ asterisco-=2; // Reduz 2 * para cada linha do losangulo espaco++; // Aumenta o espaço para proxima linha for (i=0; i<espaco;i++) printf(" "); for (y=0; y<asterisco;y++) printf("*"); printf("\n"); } return 0; }
  6. Por que você não pega os dias e divide por 365? O resultado será a quantidade de anos. Se quiser algo preciso, precisa tomar cuidado com os anos bissextos.
  7. Durub, acima de 7 dígitos ele começa a contar errado. Acho que o jeito é usar char mesmo igual o ReppiRT disse, com string.
  8. Ola Durub, deu certo! Entendi onde estava errando, eu deveria usar os próprios catetos nos contadores do for, ao invés de usar x,y ou i. Também gostei desse otimização de performance, ainda não havia visto nada assim antes. Obrigado!
  9. No link do video tem o link para http://codigosfontes-ccplus-plus.blogspot.com.br/2015/11/farol-em-linguagem-c.html E lá só tem o video também...
  10. Ola, acho que faltou colocar o código. De qualquer forma, é bem legar usar esse código com um arduino e fazer um 'farol de verdade'
  11. Pessoal, não estou conseguindo fazer a lógica para resolver o problema abaixo: Tentei da forma abaixo, mas não retorna nada: for (i=0; hipo<=500;i++){ hipo++; for (x=0; cat1<=500;x++) { cat1++; for (y=0; cat2<=500;y++) { cat2++; aux =hipo*hipo; pit=(cat1*cat1+cat2*cat2); if (aux == pit) printf("\nSão numeros de Pitagoras: %d - %d - %d", hipo,cat1,cat2); } } }Alguém poderia me dizer onde estou errando?
  12. Ola, meu professor disse para usar apenas inteiros... é possível sem usar string? Se eu fizer um vetor de inteiros ao invés de char da certo? Como colocaria o numero 1754737 em cada posição do vetor?
  13. Estou criando um programa de criptografia de um exercício do livro do Deitel: Já fiz o código de criptografia, mas tenho dois problemas, os numeros de 0 à 3 geram dois digitos, o que atrapalhará na descriptografia. E e também não sei como descriptografar, como inverter a função de resto de divisão: a = ((a+7)%10+7); Abaixo o que eu já fiz de código: #include <stdio.h> #include <stdlib.h> // ler um inteiro de 4 digitos // substituir cada digito por (digito+7)%10+(7) // trocar o primeiro pelo terceiro e o segundo pelo quarto // Imprimir o inteiro criptografado // Criar um que descriptografe void criptografa(){ int num,a,b,c,d; printf("\nDigite o numero de 4 digitos que sera criptografado: "); scanf("%d", &num); //Inicia Criptografia a = num/1000; b = (num%1000)/100; c = (num%100)/10; d = num%10; printf("separado: %d %d %d %d\n", a,b,c,d); a = ((a+7)%10+7); b = ((b+7)%10+7); c = ((c+7)%10+7); d = ((d+7)%10+7); printf("Ordenado: %d %d %d %d\n", a,b,c,d); printf("Descriptografado: %d\n", num); printf("Criptografado: %d%d%d%d\n", c,d,a,b); system("pause"); } void descriptografa() { // Inverter equacao a = ((a+7)%10+7) } void menu() { int op; do{ printf("\n\n Criptografia!!! \n\n"); printf("1 - Criptografar\n"); printf("2 - Descriptografar\n"); printf("3 - Sair\n\n"); printf("Escolha a opcao desejada:"); scanf("%d", &op); switch(op){ case 1: criptografa(); break; case 2: descriptografa(); break; case 3: break; default: break; } }while(op!=3); } int main() { menu(); system("pause"); return 0; } Alguém consegue me dar uma luz?
  14. Pessoal, estou tentando fazer o exercício abaixo, consegui fazer para 5 dígitos, mas eu gostaria de que ele fizesse o calculo para qualquer quantidade de dígitos. Poderiam me indicar uma forma de fazer? #include <stdio.h> #include <stdlib.h> int main() { int num,a,b,c,d,e,cont=0; printf("\n\nNumeros iguais a 7!!!\n\n\n"); printf("Digite um numero de 5 digitos: "); scanf("%d", &num); a = num/10000; if (a==7) cont++; b = (num%10000)/1000; if (b==7) cont++; c = (num%1000)/100; if (c==7) cont++; d = (num%100)/10; if (d==7) cont++; e = (num%10); if (e==7) cont++; printf("Quantidade de digitos iguais a 7: %d\n",cont); system("pause"); return 0; }
  15. Pessoal, estou com dificuldades para fazer um exercício do livro do Deitel, eis o qual eu fiz: Esse eu fiz beleza.. fácil. Mas depois ele pede para imprimir um quadrado vazado, este não sei se fiz da melhor forma. Gostaria de saber se existe alguma forma melhor e mais 'inteligente' de se fazer, ficou muito confuso os 'for': #include <stdio.h> #include <stdlib.h> int main() { int numero, i,x,y,aux; printf("Programa imprime quadrado \n\n\n"); printf("Digite o tamanho do quadrado: "); scanf("%d", &numero); aux=numero-2; printf("\n\n\n\n"); for (x=0;x<numero;x++) printf("*"); for (i=0;i<aux;i++){ printf("\n*"); for(x=0; x<aux;x++) printf(" "); for(x=0; x<1;x++) printf("*"); } printf("\n"); for (x=0;x<numero;x++) printf("*"); return 0; }
  16. Qual a sua duvida? Tentou fazer algum ao menos?
  17. Pessoal, como não encontrei resposta de alguns exercícios do livro do Deitel - C, Como programar - 6ª edição, vou postar nessa área alguns códigos resolvidos para quem estiver estudando poder tira duvidas e ver as resoluções. #include <stdio.h> #include <stdlib.h> void compara(int a, int b, int c){ int menor, maior; if (a>b){ if (a>c){ maior = a; }else{ maior = c; } } if (a<b){ if (a<c){ menor=a; }else{ menor=c; } } if (a<b){ if (b>c){ maior = b; }else{ maior = c; } } if (b<a){ if (b<c){ menor=b; }else{ menor=c; } } printf("\n Maior: %d", maior); printf("\n Menor: %d", menor); } int main() { int a,b,c,soma,media,produto; printf("Bem vindo ao programa 3 num\n"); printf("\nDigite tres numeros: "); scanf ("%d", &a); scanf ("%d", &b); scanf ("%d", &c); soma = a+b+c; produto = a*b*c; media = (a+b+c)/3; printf("\n SOMA: %d", soma); printf("\n Media: %d", media); printf("\n Produto: %d", produto); compara(a,b,c); printf("\n\n FIM!!! \n \n"); system("pause"); return 0; }
  18. Ola, porque você não cria um contador que incremente ele a cada vez que for feito um cadastro? Ai você joga esse contador na variavel codigo de cliente referente ao cliente cadastrado. Caso não consiga, coloque até onde do código você já fez.
  19. Segue o código funcionando. #include<iostream> #include<locale.h> #include <stdio.h> #include <stdlib.h> #include <string.h> struct estoque{ int cod_e; char nome_p[80]; float valor; }; estoque lj; int qte=0; void cadastro(){ fflush(stdin); printf("\t+------------------------------------------------------+\n"); printf("\t DIGITE O CODIGO DO PRODUTO "); scanf("\t%d",&lj.cod_e); fflush(stdin); printf("\t+------------------------------------------------------+\n"); printf("\t DIGITE O NOME DO PRODUTO "); gets(lj.nome_p); fflush(stdin); printf("\t+------------------------------------------------------+\n"); printf("\t DIGITE O VALOR UNITARIO DO PRODUTO R$"); scanf("%f",&lj.valor); printf("\t+------------------------------------------------------+\n"); fflush(stdin); qte++; } void imp_es(){ fflush(stdin); for(int i; i<qte; i++){ printf("\n\t+------------------------------------+\n"); printf("\tCODIGO: %d\n\tNOME: %s\n\tVALOR: R$%.2f\n", lj.cod_e, lj.nome_p, lj.valor); printf("\t+------------------------------------+\n"); } } void imp_cod(){ fflush(stdin); int i; char aux[50]; printf("DIGITE O NOME DO PRODUTO A BUSCAR"); scanf("%s",&aux[80]); for(int i=0;i<qte;i++){ if ( strcmp(aux, lj.nome_p) == 0 ); // if(aux[80]==lj.nome_p); printf("\ncomparacao ok!\n"); printf("COD:%d NOME:%s R$ %.2f",lj.cod_e,lj.nome_p,lj.valor); } } int menu(int op){ system("cls"); printf("\t+------------------------------------------------------+\n"); printf("\t| MENU |\n"); printf("\t+------------------------------------------------------+\n"); printf("\t| 1 - CADASTRAR PRODUTO |\n"); printf("\t| 2 - ESTOQUE |\n"); printf("\t| 3 - BUSCAR PRODUTO |\n"); printf("\t| 4 - SAIR |\n"); printf("\t+------------------------------------------------------+\n"); printf("\t| DIGITE A OPERAÇÂO |\n"); printf("\t+------------------------------------------------------+\n"); scanf("%d",&op); return(op); } main(){ setlocale(LC_ALL,""); int op; printf("\t+------------------------------------------------------+\n"); printf("\t| BEM VINDO AO CONTROLE DE ESTOQUE |\n"); printf("\t+------------------------------------------------------+\n"); printf("\t| APERTE QUALQUER TECLA PARA CONTINUAR |\n"); printf("\t+------------------------------------------------------+\n"); system("pause"); do{ op=menu(op); if(op==1){ cadastro();} else if(op==2){ imp_es(); system("pause"); } else if(op==3){ imp_cod(); system("pause"); } else if(op==4){ system("cls_clear"); return 0;} }while(op!=4); system("pause"); } Removi todos os [qte] da frente do lj. Qual era o motivo de estar utilizando-o?
  20. Ola, você não pode comparar strings igual compara numeros. Use a função "strcmp()" da biblioteca string.h, onde retornará valor 0 (zero), caso sejam iguais. Ficaria: if ( strcmp(aux, lj[qte].nome_p) == 0 );{ printf("COD:%dNOME:%sR$%.2f",lj.cod_e,lj.nome_p,lj.valor); } else { printf ("\nProduto nao encontrado!\n"); } Não esqueça de adicionar a biblioteca string.h no inicio do código... Testa ai e nos avise, qualquer duvida só perguntar.
  21. Vai postando conforme você for fazendo(com as duvidas), ou após entregar o trabalho coloca o código aqui para gente. Esses trabalhos/exercícios são legais para pessoas como eu que estudam por conta própria.
  22. Obrigado pela explicação.. comecei a entender. Eu estava confundindo o y=0 do for com valor, e não que ele significa a posição do vetor, sendo que o valor seria a posição. Agora entendi o if (a[y] > a[y+1]) Seria o valor na posição a[y] > que o valor na posição a[y+1] No caso: a[12] > a[9] Essa parte acho que ficou claro para mim... agora estou apanhando do restante, rs: { t=a[y]; a[y]=a[y+1]; a[y+1]=t; } Seria isso? t=a[12] a[12]=a[9] a[9]=a[12] Ficou as os valores na posição do vetor: a[0] = 9 a[1] = 12 Parece que agora compreendi... seria isso mesmo?
  23. Ola, até qual parte você já fez? Qual a dificuldade/erro que esta encontrando? Poste o código do que você já fez e as duvidas.
  24. Ola, segue o menu e submenu criado... agora é só implementar as funções que cada item do menu fará. Qualquer duvida pode perguntar. #include<stdio.h> #include<stdlib.h> main() { int opcao = 0; int opcao2 = 0; printf("Projeto menus \n"); while(opcao !=3){ printf("Escolha uma das opcoes: \n"); printf("1 - Vetor\n"); printf("2 - Matriz\n"); printf("3 - Sair\n"); printf("\nDigite a opcao desejada: "); scanf("%d", &opcao); switch(opcao) { case 1: printf("\nSubmenu vetor. \n"); printf("1 - produto escalar\n"); printf("2 - personalizado\n"); printf("3 - Voltar\n"); printf("\nDigite a opcao desejada: "); scanf("%d", &opcao2); switch(opcao2){ case 1: printf("\n1.1 - produto escalar\n"); system("pause"); break; case 2: printf("\n1.2 - personalizado\n"); system("pause"); break; case 3: break; } break; case 2: printf("\nSubmenu Matriz. \n"); printf("1 - Soma de Matrizes\n"); printf("2 - Multiplicação de Matrizes\n"); printf("3 - Voltar\n"); printf("\nDigite a opcao desejada: "); scanf("%d", &opcao2); switch(opcao2){ case 1: printf("\n1.1 - Soma de Matrizes\n"); system("pause"); break; case 2: printf("\n1.2 - Multiplicação de Matrizes\n"); system("pause"); break; case 3: break; } break; case 3: break; default: printf("Numero invalido"); } } system("pause"); return 0; }
×
×
  • Create New...