Gostaria de que alguém me ajudasse a sanar uma duvida
estou aprendendo a linguagem c++ e estou tentando resolver um exercício.
o exercício diz que tenho que fazer um programa financeiro que será informado se a conta é a pagar ou a receber, a descrição da conta, o mês e ano inicial da conta, numero de parcelas da conta e o valor da conta.
na impressão final será informado em ordem em data menor o ano e mês inicial da conta, saldo anterior, total de saldo, total despesas e saldo.
exemplo:
se declaro três contas
1ª conta
conta a receber
descrição da conta: salario
mês inicial: 8
ano inicial:2013
numero de parcelas: 3
valor da conta: 1500
2ª conta
conta a pagar
descrição da conta: luz
mês inicial: 7
ano inicial:2013
numero de parcelas:1
valor da parcela:149,50
3ª conta
conta a pagar
descrição da conta: festa
mes inicial 10
ano inicial 2013
numero de parcelas 2
valor da parcela: 600
na impressão deverá organizar as contas em ordem e sairá assim
mês: 7
ano: 2013
saldo anterior: 0
total saldo: 0
total despesas: 149,50
saldo:-149,50
mês: 8
ano: 2013
saldo anterior: -149,50
total saldo: 1350,50 ( primeira parcela salario + o saldo anterior)
total despesas:0
saldo total:1350,50
mês 9
ano: 2013
saldo anterior: 1350,50
total saldo: 2850,50 ( segunda parcela salario + o saldo anterior)
total despesas:0
saldo total:2850,50
mês 10
ano: 2013
saldo anterior: 2850,50
total saldo: 4350,50 ( terceira parcela salario + o saldo anterior)
total despesas: 600
saldo total:3750,50
mês 11
ano: 2013
saldo anterior: 3750,50
total saldo: 3750,00 ( como não tem mais nada a receber fica apenas o saldo anterior)
total despesas: 600 (segunda parcela da conta)
saldo total:3150,50
eu comecei a fazer e já começaram os problemas
a ordenação eu não estou conseguindo fazer
consegui colocar para ordenar mas o saldo anterior está dando problema pois o primeiro saldo anterior tem que ser =0 e quando ordena o saldo anterior tb ordena
o código ainda não está pronto pois também falta somar as parcelas
se alguém tiver alguma ideia de como fazer isso a ajuda também é bem vinda ^^
e desde já agradeço
estou aprendendo a linguagem c++ e estou tentando resolver um exercício.
o exercício diz que tenho que fazer um programa financeiro que será informado se a conta é a pagar ou a receber, a descrição da conta, o mês e ano inicial da conta, numero de parcelas da conta e o valor da conta.
na impressão final será informado em ordem em data menor o ano e mês inicial da conta, saldo anterior, total de saldo, total despesas e saldo.
exemplo:
se declaro três contas
1ª conta
conta a receber
descrição da conta: salario
mês inicial: 8
ano inicial:2013
numero de parcelas: 3
valor da conta: 1500
2ª conta
conta a pagar
descrição da conta: luz
mês inicial: 7
ano inicial:2013
numero de parcelas:1
valor da parcela:149,50
3ª conta
conta a pagar
descrição da conta: festa
mes inicial 10
ano inicial 2013
numero de parcelas 2
valor da parcela: 600
na impressão deverá organizar as contas em ordem e sairá assim
mês: 7
ano: 2013
saldo anterior: 0
total saldo: 0
total despesas: 149,50
saldo:-149,50
mês: 8
ano: 2013
saldo anterior: -149,50
total saldo: 1350,50 ( primeira parcela salario + o saldo anterior)
total despesas:0
saldo total:1350,50
mês 9
ano: 2013
saldo anterior: 1350,50
total saldo: 2850,50 ( segunda parcela salario + o saldo anterior)
total despesas:0
saldo total:2850,50
mês 10
ano: 2013
saldo anterior: 2850,50
total saldo: 4350,50 ( terceira parcela salario + o saldo anterior)
total despesas: 600
saldo total:3750,50
mês 11
ano: 2013
saldo anterior: 3750,50
total saldo: 3750,00 ( como não tem mais nada a receber fica apenas o saldo anterior)
total despesas: 600 (segunda parcela da conta)
saldo total:3150,50
eu comecei a fazer e já começaram os problemas
a ordenação eu não estou conseguindo fazer
consegui colocar para ordenar mas o saldo anterior está dando problema pois o primeiro saldo anterior tem que ser =0 e quando ordena o saldo anterior tb ordena
Código:
#include <iostream.h> int main(){ int x, i,op, parcela, j, aux1; float aux; char descricao[50]; //leitura de numero de contas que o usuário irá declarar cout<<"numeros de contas \n"; cin>>x; //declaraçao da struct que irá armazenar dados para impressão final struct dados{ int mes; int ano; float saldoAnterior; float saldoTotal; float totalDespesas; float saldo; float pagar, receber; }; struct dados saida[x]; /*laço para leitura dos dados e salvando no vetor da struct enquanto o i valer menos que o numero de contas que o usuário informou */ for(i=0;i<x;i++){ cout<<"\n\nescolha opcao"; cout<<"\n1- conta a pagar"; cout<<"\n2- conta a receber\n"; cin>>op; cin.sync(); cout<<"\nInforme a descricao da conta: "; gets(descricao); cout<<"\ninforme o mes inicial da conta: "; cin>>saida[i].mes; cout<<"\ninforme o ano inicial da conta: "; cin>>saida[i].ano; cout<<"\ninforme a quantidade de parcelas: "; cin>>parcela; //condicional para saber se a conta é a pagar ou a receber if(op==1){ cout<<"\ninforme o valor da conta: "; cin>>saida[i].pagar; saida[i].receber = 0; } if(op==2){ cout<<"\ninforme o valor da conta: "; cin>>saida[i].receber; saida[i].pagar = 0 ; } } //laço para calculo dos dados final for(i=0; i<x; i++){ //condicional para o saldo anterior valer 0 na primeira vez que passar if(i==0){ saida[i].saldoAnterior=0; } else{ saida[i].saldoAnterior = saida[i-1].saldo; } //o saldo total será o que o usuario tem para receber mais o saldo anterior saida[i].saldoTotal = saida[i].receber + saida[i].saldoAnterior; //o saldo total de despesas são o que o usuário declarou em contas a pagar saida[i].totalDespesas = saida[i].pagar; //o saldo é o resultado do saldo total menos as contas a pagar saida[i].saldo = saida[i].saldoTotal - saida[i].pagar; } //ordenaçao de vetor pelo metodo buble-sort (bolha) for(j=1; j<x; j++){ for(i=x-1; i>=j; i--){ //condicional para ordenar o menor ano informado if(saida[i].ano < saida[i-1].ano){ //troca das pocições dos vetores caso a condicional seja verdadeira aux1 = saida[i].mes; saida[i].mes = saida[i-1].mes; saida[i-1].mes = aux1; aux1 = saida[i].ano; saida[i].ano = saida[i-1].ano; saida[i-1].ano = aux1; aux = saida[i].saldoAnterior; saida[i].saldoAnterior = saida[i-1].saldoAnterior; saida[i-1].saldoAnterior = aux; aux = saida[i].saldoTotal; saida[i].saldoTotal = saida[i-1].saldoTotal; saida[i-1].saldoTotal = aux; aux = saida[i].totalDespesas; saida[i].totalDespesas = saida[i-1].totalDespesas; saida[i-1].totalDespesas = aux; aux = saida[i].saldo; saida[i].saldo = saida[i-1].saldo; saida[i-1].saldo = aux; } //caso não haja um ano menor informado irá ordenar pelo menor mês else //condicional para ordenar o menor mês informado if(saida[i].ano == saida[i-1].ano){ if(saida[i].mes < saida[i-1].mes){ aux1 = saida[i].mes; saida[i].mes = saida[i-1].mes; saida[i-1].mes = aux1; aux1 = saida[i].ano; saida[i].ano = saida[i-1].ano; saida[i-1].ano = aux1; aux = saida[i].saldoAnterior; saida[i].saldoAnterior = saida[i-1].saldoAnterior; saida[i-1].saldoAnterior = aux; aux = saida[i].saldoTotal; saida[i].saldoTotal = saida[i-1].saldoTotal; saida[i-1].saldoTotal = aux; aux = saida[i].totalDespesas; saida[i].totalDespesas = saida[i-1].totalDespesas; saida[i-1].totalDespesas = aux; aux = saida[i].saldo; saida[i].saldo = saida[i-1].saldo; saida[i-1].saldo = aux; } } } } for(i=0;i<x;i++){ cout<<"\nMes inicial da conta: "<<saida[i].mes<<" "; cout<<"\nAno inicial da conta: "<<saida[i].ano<<" "; cout<<"\nSaldo Anterior: "<<saida[i].saldoAnterior<<" "; cout<<"\nSaldo Total: "<<saida[i].saldoTotal<<" "; cout<<"\nTotal de despesas: "<<saida[i].totalDespesas<<" "; cout<<"\nSaldo: "<<saida[i].saldo<<" "; cout<<"\n\n\n"; } system("pause"); }
se alguém tiver alguma ideia de como fazer isso a ajuda também é bem vinda ^^
e desde já agradeço
Comment