Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com digito verificador


Digaummax

Pergunta

Boa noite!

Estou com um problema em uma atividade da faculdade, não consigo gerar o numero certo no programa de acordo com o txt. Ou seja o numero que você digita não bate com o txt gerado.

Vou postar o codigo abaixo.

#include<iostream>

#include<time.h>

#include<fstream>

#include<math.h>

#include <iomanip>

using namespace std;

// 2 >>>FUNÇÃO DESCOBRE SE DIA é DOMINGO<<<<<<

int diasemana ( int dia, int mes, int ano) {

time_t hora;

struct tm *phora;

time(&hora);

phora=localtime(&hora);

phora->tm_year = ano - 1900;

phora->tm_mon = mes - 1;

phora->tm_mday = dia;

mktime(phora);

return phora->tm_wday;

}

int main()

{

int Mes, Ano, QtdDia,DiasUteis,hora, *phora,aux,aux2,testarmes,domingo,diasmes,diaa,i,data,quantidade,j; // excluir var diaa,testarmes

char S[50],D[10],ch;

float valor;

// 1 SOLICITAR DADOS DE ENTRADA

srand(time(0));

cout<<" Programa Gerador ";

do{

cout<<"\n Digite o Mes: ";

cin>>Mes;}

while(!(Mes>=1 && Mes<=12));

do{

cout<<"\n Digite o Ano: ";

cin>>Ano;}

while(Ano<=2010);

do{

cout<<"\n Digite a Quantidade de PRODUTOS VENDIDOS em um dia: ";

cin>>QtdDia;}

while(!(QtdDia>=25 && QtdDia<=50));

diaa=1;

domingo=0;

DiasUteis=0;

if(Mes <=7)

{

if (Mes % 2 == 0)

diasmes=30;

else

diasmes=31;

if (Mes == 2)

diasmes=28;

if (Mes == 8)

diasmes=31;

}

else

{

if (Mes % 2 == 0)

diasmes=31;

else

diasmes=30;

}

for (aux2=1;aux2<=diasmes;aux2++)

{

aux=diasemana(aux2, Mes,Ano);

cout<<"\n Codigo : "<<aux;

cout<<"\n Dia: "<<diaa;

if(aux==0)

domingo++;

diaa++;

}

DiasUteis=diasmes - domingo;

cout<<"\n Esse mes tem: "<<DiasUteis<<" dias uteis ";

cout<<"\n Esse mes tem: "<<domingo<<" domingos ";

// >> 3 E 4 << GERAR TXT COM A QUANTIDADE DE LINHAS QTDDIAS*DIASUTEIS

// DIGITO

data=0;

cout<<"\n AGUARDE GERANDO TXT !! ";

int codigo[10],digito,index,dv,cu; //DECLARAR NO TOPOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

ofstream fout ("SAIDA.TXT");

i=1;

for (data=1;data<=diasmes;data++)

{

aux=diasemana(data, Mes,Ano);

if(aux!=0)

{

// GERAR O CODIGO

for(i=1;i<=QtdDia;i++)

{

// cout<<"\n CODIGO: "<<codigo<<"\n ";

dv=0;

j=4;

cu=6;

codigo[0]=1;

for(index=1;index<=3;index++){

if(index==1)

digito=rand() % (5)+1;

else

digito=rand() % cu;

codigo[index]=digito;

dv=(j*codigo[index])+dv;

j--;

if (cu<10)

cu+=4;

}

dv=(dv+5)%7;

// GRAVANDO NO TXT <<<

for(index=0;index<4;index++)

fout<<codigo[index];

fout<<" - "<<dv;

fout<<" ; ";

fout<<data<<"/"<<Mes<<"/"<<Ano<<" ; ";

quantidade=rand() % 100 +1;

fout<<quantidade<<" ; ";

valor=rand() /199.99;

fout<< setprecision(2) << fixed <<valor<<" ; \n"; // SETPRECISION FIXED ... FIXA O VALOR DA VAR VALOR EM 2 CASAS DECIMAIS

}

}

}

cout<<"\n TXT GERADO COM SUCESSO !! ";

system("pause");

}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...