You can return the value of tot
from within the function CadastroDespesas
by changing void
to the type of variable you want to return, in your case it is float
, its function would have this header:
public float CadastroDespesa(){
}
And at the end of it you return tot
:
return tot;
Now you need to change the MostrarDespesas
method by asking for a float to be displayed:
public void MostrarDespesas(float valorTotalDespesas)
{
}
The most correct is first you receive the value of CadastroDespesa
and then call MostrarDespesas
passing the received value:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Rextester
{
public class Program
{
public static void Main(string[] args)
{
Ex4 DespesaManager = new Ex4();
float tot = DespesaManager.CadastroDespesa();
DespesaManager.MostrarDespesas(tot);
}
}
}
This is how you would use the changes. Your code itself looks like this:
class Ex4
{
List<String> descricaodespesas = new List<string>();
List<float> valordespesas = new List<float>();
List<String> descricaoreceitas = new List<string>();
List<float> valorreceitas = new List<float>();
public float CadastroDespesas()
{
string descricao;
float valor;
float soma = 0,tot;
Console.Write("Informe o valor: ");
valor = Convert.ToSingle(Console.ReadLine());
valordespesas.Add(valor);
Console.WriteLine("Informe uma descrição:");
descricao = (Console.ReadLine());
descricaodespesas.Add(descricao);
foreach (float som in valordespesas)
{
soma += valor;
}
tot = soma;
return tot;
}
public void MostrarDespesas(float valorTotalDespesas)
{
Console.WriteLine("------Despesas Informadas------");
Console.WriteLine();
for(int i = 0; i < descricaodespesas.Count; i++)
{
string desc = descricaodespesas.ElementAt(i);
float valor = valordespesas.ElementAt(i);
Console.Write("Descrição: "); Console.WriteLine(desc);
Console.Write("Valor: "); Console.WriteLine(valor);
}
Console.WriteLine("Valor total: ");
Console.WriteLine(valorTotalDespesas);
Console.ReadLine();
}
This is your way of doing, however I think it would be more interesting to use the valordespesas
list to add, you can use LINQ like this:
valordespesas.Sum();
So you would not have to return anything in your functions, MostrarDespesas
looks like this:
public void MostrarDespesas()
{
Console.WriteLine("------Despesas Informadas------");
Console.WriteLine();
for(int i = 0; i < descricaodespesas.Count; i++)
{
string desc = descricaodespesas.ElementAt(i);
float valor = valordespesas.ElementAt(i);
Console.Write("Descrição: "); Console.WriteLine(desc);
Console.Write("Valor: "); Console.WriteLine(valor);
}
Console.WriteLine("Valor total: ");
Console.WriteLine(valordespesas.Sum());
Console.ReadLine();
}