Value is not added to a variable within a function

1

I'm doing a simple quiz program with questions and answers, with punctuation. My problem is this: I made a function so that every time the answer is right, +1 is added to the punctuation variable.

public static int pontu1 { get; set; }

    public static int pont(int pontu1)
    {
        pontu1++;
        return pontu1;
    }

So apparently it is working, I have decided to create the "right answer" function, so every time the answer is right, this function will be called:

public static void rcerta()
    {
        Console.WriteLine("Resposta certa");
        pont(pontu1);
        System.Threading.Thread.Sleep(2000);
        Console.Clear();
    }

The problem is, I went to test the code, sent the question, I put the right answer. Okay, the function ran normal, gave correct answer, however, when I went to see how much my score was, with the following code (it gets inside a switch from a menu I did):

case 2:
                    Console.WriteLine("Sua pontuação é: " + pontu1);
                    Console.WriteLine("Pressione ENTER para continuar....");
                    break;

The score appears as 0, even with the right answer. Can someone help me? Follow the whole program and class below.

Program:

class Program
{
    public static int pontu1 { get; set; }

    public static int pont(int pontu1)
    {
        pontu1++;
        return pontu1;
    }

    public static void rcerta()
    {
        Console.WriteLine("Resposta certa");
        pont(pontu1);
        System.Threading.Thread.Sleep(2000);
        Console.Clear();
    }

    public static void rerrada()
    {
        Console.WriteLine("Resposta errada");
        Console.Clear();
    }

    public static void resetar()
    {
        string r;
        Console.WriteLine("Sua pontuação atual é: " + pontu1);
        Console.WriteLine("Deseja reiniciar sua pontuação?      S  / N");
        r = Console.ReadLine();
        if (r == "S")
        {
            pontu1 = 0;
            Console.WriteLine("Pontuação reiniciada.");
            Console.WriteLine("Sua pontuação atual é: " + pontu1);
            Console.WriteLine("Pressione ENTER para voltar ao menu...");
        }
        else
        {
            Console.WriteLine("Pontuação mantida.");
            Console.WriteLine("Sua pontuação atual é: " + pontu1);
            Console.WriteLine("Pressione ENTER para voltar ao menu...");
        }
    }

    public static void QuizIncio()
    {
        int opcao;
        Console.WriteLine("Escolha um assunto!");
        Console.WriteLine("[ 1 ] teste");
        Console.WriteLine("[ 2 ] teste2");
        Console.WriteLine("-------------------------------------");
        Console.Write("Digite uma opção: ");
        opcao = Int32.Parse(Console.ReadLine());
        switch (opcao)
        {
            case 1:
                Class1.teste();
                break;
            case 2:
                break;
            default:
                break;
        }
        Console.ReadKey();
        Console.Clear();
    }
    static void Main(string[] args)
    {
        int opcao;
        do
        {
            Console.WriteLine("[ 1 ] Iniciar");
            Console.WriteLine("[ 2 ] Ver Pontuação");
            Console.WriteLine("[ 3 ] Resetar Pontuação");
            Console.WriteLine("[ 0 ] Sair do Programa");
            Console.WriteLine("-------------------------------------");
            Console.Write("Digite uma opção: ");
            opcao = Int32.Parse(Console.ReadLine());
            switch (opcao)
            {
                case 1:
                    Console.Clear();
                    QuizIncio();
                    break;
                case 2:
                    Console.WriteLine("Sua pontuação é: " + pontu1);
                    Console.WriteLine("Pressione ENTER para continuar....");
                    break;
                case 3:
                    Console.Clear();
                    resetar();
                    break;
                case 0:
                    break;
            }
            Console.ReadKey();
            Console.Clear();
        }
        while (opcao != 0); 
    }




}

Class:

class Class1 : Program
{
    public static void teste()
    {
        string r1, r2, r3, r4, r5;
        Console.WriteLine("Quanto é 2 + 2?");
        Console.WriteLine("a) 4");
        Console.WriteLine("b) 3");
        r1 = Console.ReadLine();
        if (r1 == "a")
        {
            rcerta();
        }
        else
        {
            rerrada();
        }
    }
}
    
asked by anonymous 12.03.2017 / 15:49

1 answer

1

This code is confusing and full of problems. I will not even try to fix it because it would give too much work and the focus of the question is just one. If the code were more organized the error would not occur. You are using the same name for the class property and for the local parameter of the method that has priority, so you are adding in the local variable that disappears at the end of the method execution, and does not affect the property. I changed the property name, which is even more according to the C # style , and the problem has been resolved.

using System;

public class Program
{
    public static int Pontu1 { get; set; }

    public static int pont(int pontu1)
    {
        Pontu1++;
        return pontu1;
    }

    public static void rcerta()
    {
        Console.WriteLine("Resposta certa");
        pont(Pontu1);
        System.Threading.Thread.Sleep(2000);
//        Console.Clear();
    }

    public static void rerrada()
    {
        Console.WriteLine("Resposta errada");
        Console.Clear();
    }

    public static void resetar()
    {
        string r;
        Console.WriteLine("Sua pontuação atual é: " + Pontu1);
        Console.WriteLine("Deseja reiniciar sua pontuação?      S  / N");
        r = Console.ReadLine();
        if (r == "S")
        {
            Pontu1 = 0;
            Console.WriteLine("Pontuação reiniciada.");
            Console.WriteLine("Sua pontuação atual é: " + Pontu1);
            Console.WriteLine("Pressione ENTER para voltar ao menu...");
        }
        else
        {
            Console.WriteLine("Pontuação mantida.");
            Console.WriteLine("Sua pontuação atual é: " + Pontu1);
            Console.WriteLine("Pressione ENTER para voltar ao menu...");
        }
    }

    public static void QuizIncio()
    {
        int opcao;
        Console.WriteLine("Escolha um assunto!");
        Console.WriteLine("[ 1 ] teste");
        Console.WriteLine("[ 2 ] teste2");
        Console.WriteLine("-------------------------------------");
        Console.Write("Digite uma opção: ");
        opcao = Int32.Parse(Console.ReadLine());
        switch (opcao)
        {
            case 1:
                Class1.teste();
                break;
            case 2:
                break;
            default:
                break;
        }
 //       Console.Clear();
    }
    public static void Main(string[] args)
    {
        int opcao;
        do
        {
            Console.WriteLine("[ 1 ] Iniciar");
            Console.WriteLine("[ 2 ] Ver Pontuação");
            Console.WriteLine("[ 3 ] Resetar Pontuação");
            Console.WriteLine("[ 0 ] Sair do Programa");
            Console.WriteLine("-------------------------------------");
            Console.Write("Digite uma opção: ");
            opcao = Int32.Parse(Console.ReadLine());
            switch (opcao)
            {
                case 1:
 //                   Console.Clear();
                    QuizIncio();
                    break;
                case 2:
                    Console.WriteLine("Sua pontuação é: " + Pontu1);
                    Console.WriteLine("Pressione ENTER para continuar....");
                    break;
                case 3:
                    Console.Clear();
                    resetar();
                    break;
                case 0:
                    break;
            }
//            Console.Clear();
        }
        while (opcao != 0); 
    }




}

class Class1 : Program
{
    public static void teste()
    {
        string r1, r2, r3, r4, r5;
        Console.WriteLine("Quanto é 2 + 2?");
        Console.WriteLine("a) 4");
        Console.WriteLine("b) 3");
        r1 = Console.ReadLine();
        if (r1 == "a")
        {
            rcerta();
        }
        else
        {
            rerrada();
        }
    }
}

See running on .NET Fiddle . And No Coding Ground . Also put it on GitHub for future reference .

    
12.03.2017 / 16:10