Jump to content
Fórum Script Brasil

brunoandrad

Membros
  • Posts

    30
  • Joined

  • Last visited

About brunoandrad

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

brunoandrad's Achievements

0

Reputation

  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; }
×
×
  • Create New...