Ir ao conteúdo

Daniel Oliveira

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

2
  1. Estou tentando fazer uma calculadora gráfica com SFML. O problema está na função cin. Ela não está lendo as posições do vetor coef. Ele pede para ler mas depois o programa fecha sem retornar 0. O código abaixo: #include<SFML/Graphics.hpp> #include<iostream> #include<cmath> using namespace std; using namespace sf; int main(){ vector<RectangleShape> pixel; vector<float> coef; // COEFICIENTES int ncoef; // NUMERO DE COEFICIENTES float x, y; cout << "Digite o numero de coeficientes: "; cin >> ncoef; for(int i=0; i<ncoef; i++){ cout << "Digite o coeficiente " << i+1 << ": "; cin >> coef[i]; printf("Ok.\n"); } RenderWindow window(VideoMode(201,201), "Calculadora Grafica"); for(x=-201; x<201; x++) for(int i=0; i<ncoef; i++){ y += (float)coef[ncoef]*pow(x,ncoef-i); pixel[x].setPosition(Vector2f(x+101,y+101)); } while(window.isOpen()){ Event e; while(window.pollEvent(e)) if(e.type == Event::Closed) window.close(); for(int i=0; i<201; i++){ pixel[i].setFillColor(Color::Green); pixel[i].setSize(Vector2f(1,1)); } window.clear(Color::Black); for(int i=0; i<201; i++) window.draw(pixel[i]); window.display(); } getch(); return 0; }
  2. @devair1010 , muito obrigado pela ajuda e pela boa explicação! Mas o problema não foi solucionado. Aí eu vi que a variável "mensagem" não suportava a quantidade de texto pedido naquele while. // Na declaração char mensagem[100], email[10000], ContaAtual[100], // Veja que "mensagem" só suporta 100 caracteres texto[10000], email2[100], tempo[20], nome[50], sobrenome[50]; while(fgets(mensagem,10000,CaixaEntrada)!=NULL){ // E aqui eu estava pedindo 10.000 caracteres printf("-> %s\n",mensagem); }
  3. Eu estou tentado fazer uma espécie de e-mail em C, mas estou com um pequeno problema: o fclose da linha 39 (que está depois do término de um for, no primeiro programa) não está funcionando. O programa compila normalmente mas, na hora da execução (desse comando), fica apenas carregando. Vou colocar os scripts abaixo para vocês entenderem. #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<string.h> #include<locale.h> #include<time.h> int main(){ setlocale(LC_CTYPE,"Portuguese"); FILE *CaixaEntrada; int a, i, op, hor; char mensagem[100], email[10000], ContaAtual[100]; char texto[10000], email2[100], tempo[20]; char nome[50], sobrenome[50]; struct tm * tm; time_t t; CxEnt: CaixaEntrada = fopen("ContaAtual.txt","r"); if(feof(CaixaEntrada)) system("EntrarConta.exe"); fgets(ContaAtual,100,CaixaEntrada); strcpy(email,ContaAtual); strcat(email,"CaixaEntrada"); strcat(email,".txt"); fclose(CaixaEntrada); CaixaEntrada = fopen(ContaAtual,"r"); fgets(nome,50,CaixaEntrada); fgets(sobrenome,50,CaixaEntrada); nome[strlen(nome)-1] = '\0'; sobrenome[strlen(sobrenome)-1] = '\0'; fclose(CaixaEntrada); system("cls"); printf("CAIXA DE ENTRADA de %s %s\n\n",nome,sobrenome); CaixaEntrada = fopen(email,"r"); printf("Mensagens novas:\n\n"); for(;;){ fgets(mensagem,1000,CaixaEntrada); if(strcmp(mensagem,"\n")!=0) printf("-> %s\n",mensagem); else break; } fclose(CaixaEntrada); CaixaEntrada = fopen(email,"w"); fclose(CaixaEntrada); printf("\n(1) Sair da Conta\n"); printf("(2) Escrever\n"); printf("(3) Sair\n"); op = getchar(); op-=48; if(op==1){ fclose(CaixaEntrada); CaixaEntrada = fopen("ContaAtual.txt","w"); fclose(CaixaEntrada); system("cls"); printf("Saindo..."); Sleep(500); system("EntrarConta.exe"); } if(op==2){ fclose(CaixaEntrada); system("cls"); printf("\t\tESCREVER\n\n"); printf("Digite o endereço de e-mail do destinatário (sem @nimail.com): "); scanf("%s",email2); printf("Digite o e-mail (não dê ENTER até acabar): "); fflush(stdin); gets(texto); strcpy(email,email2); strcat(email,"CaixaEntrada"); strcat(email,".txt"); CaixaEntrada = fopen(email,"a"); time(&t); tm = localtime(&t); sprintf(tempo,"%s",asctime(tm)); tempo[strlen(tempo)-1] = '\0'; printf("(%s)\n",tempo); fprintf(CaixaEntrada,"%s | ",tempo); fprintf(CaixaEntrada,"%s | De %[email protected]\n\n",texto,ContaAtual); fclose(CaixaEntrada); printf("Texto enviado con sucesso!\n"); j: printf("(1) Voltar para a caixa de entrada\n"); printf("(2) Sair da conta\n"); op = getch(); printf("%c\n",op); if(op=='1') goto CxEnt; else if(op=='2'){ CaixaEntrada = fopen("ContaAtual.txt","w"); fclose(CaixaEntrada); system("cls"); printf("Saindo..."); Sleep(500); system("start EntrarConta.exe"); } else{ printf("Opção inválida!! Digite 1 ou 2.\n"); goto j; } } if(op==3){ getch(); exit(2); } } #include<stdio.h> #include<stdlib.h> #include<string.h> #include<locale.h> int main(){ FILE *nconta; FILE *GeraConta; FILE *email; setlocale(LC_CTYPE,"Portuguese"); struct nascimento{ int dia; int mes; int ano; }; char email2[100]; struct conta{ char nome[50]; char sobrenome[50]; char endereco[20]; char senha[30]; int idade; struct nascimento data; char sexo; }contas; int numconta, a, i, anoi; char data[10], anoc[5]; printf("CRIAR CONTA NO NIMAIL\n\n"); printf("Seu primeiro nome: "); scanf("%s",&contas.nome); printf("\nSeu sobrenome: "); scanf("%s",&contas.sobrenome); printf("\nDigite um endereço de email: "); GeraEndereco: scanf("%s",&contas.endereco); GeraConta = fopen(contas.endereco,"r"); if(GeraConta != NULL){ fclose(GeraConta); printf("Esse endereço já foi usado. Tente outro!"); goto GeraEndereco; } fclose(GeraConta); GeraConta = fopen(contas.endereco,"a"); printf("\nDigite o dia de seu nascimento: "); scanf("%d",&contas.data.dia); printf("Digite o mês de seu nascimento: "); scanf("%d",&contas.data.mes); printf("Digite o ano de seu nascimento: "); scanf("%d",&contas.data.ano); _strdate(data); a=0; for(i=6; i<strlen(data); i++){ anoc[a] = data[i]; a++; } anoi = atoi(anoc)+2000; contas.idade = anoi - contas.data.ano; printf("\nQual é seu sexo ('M' para masculino, 'F' para feminino): "); contas.sexo = getch(); printf("%c\n",contas.sexo); printf("\nDigite sua senha: "); scanf("%s",&contas.senha); fprintf(GeraConta,"%s\n%s\n",contas.nome,contas.sobrenome); fprintf(GeraConta,"%d/%d/%d\n",contas.data.dia,contas.data.mes,contas.data.ano); fprintf(GeraConta,"%c\n",contas.sexo); fprintf(GeraConta,"%s\n",contas.senha); fclose(GeraConta); system("pause"); system("cls"); printf("Cadastramento feito com sucesso.\n"); printf("Você já pode sair! Pressione qualquer tecla para sair...\n"); getch(); strcpy(email2,contas.endereco); strcat(email2,"CaixaEntrada"); strcat(email2,".txt"); email = fopen(email2,"a"); fclose(email); } #include<stdio.h> #include<string.h> #include<stdlib.h> #include<locale.h> #include<windows.h> void erro(){ printf("Erro! Email ou senha inválidos!\n"); getch(); } int main(){ setlocale(LC_CTYPE,"Portuguese"); FILE *EntraConta; int a, i, op; char email[50], senha[20], senha1[20]; char nome[50], sobrenome[50], h=0; //REDIRECIONA PARA CAIXA DE ENTRADA SE JÁ TIVER NUMA CONTA... EntraConta = fopen("ContaAtual.txt","r"); if(EOF) goto escolha; fscanf(EntraConta,"%s",&email); fclose(EntraConta); EntraConta = fopen(email,"r"); fgets(nome,50,EntraConta); fgets(sobrenome,50,EntraConta); nome[strlen(nome)-1] = '\0'; sobrenome[strlen(sobrenome)-1] = '\0'; printf("Redirecionado para caixa de entrada de %s %s...",nome,sobrenome); fclose(EntraConta); Sleep(1000); system("cls"); system("Email.exe"); //----------------------------------------------------------------- //ENTRAR NUMA CONTA OU CRIAR CONTA escolha: system("cls"); printf("Escolha uma opção:\n"); printf("(1) Entrar na minha conta\n"); printf("(2) Criar uma conta\n"); fflush(stdin); op=getchar(); op-=48; //ENTRAR NA CONTA if(op==1){ entrar: system("cls"); printf("Digite 1 para voltar.\n"); printf("Digite seu endereço de email (sem @nimail.com): "); scanf("%s",&email); if(atoi(email)==1) goto escolha; EntraConta = fopen(email,"r"); printf("Senha: "); scanf("%s",&senha); if(EntraConta == NULL){ erro(); goto entrar; } while(fgets(senha1,20,EntraConta) != NULL); senha1[strlen(senha1)-1]='\0'; if(strcmp(senha,senha1)==0){ EntraConta = fopen("ContaAtual.txt","w"); fprintf(EntraConta,"%s",email); fclose(EntraConta); EntraConta = fopen(email,"r"); fgets(nome,50,EntraConta); fgets(sobrenome,50,EntraConta); nome[strlen(nome)-1] = '\0'; sobrenome[strlen(sobrenome)-1] = '\0'; printf("Redirecionado para caixa de entrada de %s %s...",nome,sobrenome); fclose(EntraConta); Sleep(1000); system("cls"); system("Email.exe"); } else{ erro(); goto entrar; } } //----------------------------------------------------------------- //CRIAR CONTA else if(op==2){ system("cls"); system("CadastramentoNiMail.exe"); goto escolha; } //----------------------------------------------------------------- //OPÇÃO INVÁLIDA else{ printf("Opção inválida!!\n"); getch(); goto escolha; } //----------------------------------------------------------------- }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!