doubt C# stack

Asked

Viewed 174 times

-1

Good afternoon I followed a toturial of how to make a pile https://www.youtube.com/watch?v=Jc_tqYBCXws \ https://www.youtube.com/watch?v=-FmaKIZkfw0

but my code does not execute 2 3 and 0

follow:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace fila_teste
{
    class Program
    {
        static Boolean empilhar(int[] pilha, ref int topo, int dado)  // empilhar tem que conter a pilha e o topo
        {
            Boolean retorno = false;    // diz se nao vao conseguir receber o valor dentro da pilha
            if (topo < 10)
            {
                pilha[topo] = dado;
                topo = topo + 1;
                retorno = true; // recebeu +1
            }
            return retorno;
        }

        //static void Main(string[] args)
        //{
        //    int[] pilha = new int[10];          // criaçao de vetor 
        //    int topo = 0;        //define quantos valores estao defenidos ns pilha
        //}

        // este ja e para desempilhar
        static Boolean desempilhar(int[] pilha, ref int topo, ref int dado)  // empilhar tem que conter a pilha e o topo
        {
            Boolean retorno = false;    // diz se nao vao conseguir receber o valor dentro da pilha
            if (topo > 0)
            { topo = topo - 1;
                dado = pilha[topo];             //dado recebe topo da pilha 
                retorno = true; // recebeu +1
            }
            return retorno;
        }


        static void exibirdados(int[] pilha, int topo)       //exibe o que esta dentro da pilha quantidade
        {
        //    for (int i = 0; i < topo; i++)
        //        {

        //        Console.WriteLine(pilha[i]);
        //    }

        //}

        for (int i = topo-1; i >= 0; i--)
                {

                Console.WriteLine(pilha[i]);
            }

}


        static int exibirmenu() //exibe o menu que criei abaixo
        {
            int op = 0;
            Console.Clear(); // limpa 
            Console.WriteLine("menu de opçoes:"); //chuta as opçoes
            Console.WriteLine("1 empilhar:");    //chuta as opçoes
            Console.WriteLine("2 desempilhar:"); //chuta as opçoes
            Console.WriteLine("3 exibir pilha:");   //chuta as opçoes
            Console.WriteLine("0 sair:");   //chuta as opçoes
            Console.WriteLine("opçao: ");   //chuta as opçoes
            op = Convert.ToInt32(Console.ReadLine()); // converte op para numero pois era um inteiro 
            return op;
        }

        static void Main(string[] args)
        {
            int[] pilha = new int[10];          // criaçao de vetor 
            int topo = 0;        //define quantos valores estao defenidos ns pilha
            int valor = 0;
            int op = 0;
            string msg = ""; // mostra algo

            while (op != 4)
            {
                op = exibirmenu();
                if (op == 1)
                {


                    Console.Clear(); // limpa
                    Console.WriteLine("entrada de dados");
                    Console.Write("informe um dado");
                    valor = Convert.ToInt32(Console.ReadLine()); // converte valor em numero e le
                    msg = "erro! atingo o seu limite";
                    if (empilhar(pilha, ref topo, valor) == true) // caso seja true ele inserio
                    {
                        msg = "valor inserido corretamente na pilha";
                    }

                    Console.WriteLine(msg); // mostra a linha(no caso a mensagem)
                    Console.ReadKey();
                }
            }

            if (op == 2)

            {
                Console.Clear(); // limpa
                Console.WriteLine("saida de dados");
                msg = "erro! pilha esta vazia";
                if (desempilhar(pilha, ref topo, ref valor) == true) // caso seja true ele inserio
                {
                    msg = "valor removido da pilha foi " + valor;

                }
                Console.WriteLine(msg);
                Console.ReadKey();

            }

            if (op == 3)

            {
                Console.Clear(); // limpa
                Console.WriteLine("Dados presentes na pilha");
                exibirdados(pilha, topo);
                Console.ReadKey();
            }

            empilhar(pilha, ref topo, 10); //aqui exibe os valores no progrma
            empilhar(pilha, ref topo, 20); //aqui exibe os valores no progrma
            empilhar(pilha, ref topo, 30); //aqui exibe os valores no progrma
            desempilhar(pilha , ref topo, ref valor);   // aqui desempilha a pilha que faz referencia(ao fazer referencia altera) ao topo e valor
            exibirdados(pilha, topo);
            Console.ReadKey();
        }
    }
}

I would like a little help thank you

note: I am new here if you find that the theme and repeated warn me go easy on me

1 answer

0

on line 103, you are closing the while before passing by ifs, just remove the } and close after the last if

  • How can I get what I enter to support letters?(convert value to string?) the idea was to make me insert students show students and when inserting ask me age then answer if you want to re-enter, so I understood I have to convert the "value" in string but if you do it give me any help? thanks.

  • Study about object orientation, classes, etc. If you have any questions, feel free to ask in the community, but take a look at the tour. For now, if the answer solved the question problem, mark it. Thank you

Browser other questions tagged

You are not signed in. Login or sign up in order to post.