none
Varrer um vetor e validar se um valor já foi inserido RRS feed

  • Pergunta

  • Bom dia galera, tudo bom? é a primeira vez que estou usando então se cometi algum erro de antemão já peço desculpas. Eu estou precisando validar esta instrução: Se o usuário escolher a opção 1, seu programa deverá verificar se ainda é possível matricular aluno na disciplina (se o número máximo ainda não foi atingido e se ainda não foi cadastrado nenhuma nota). Caso seja permitido matricular aluno, seu programa deverá solicitar o RA do aluno a ser matriculado. Seu programa deverá conferir se esse número já não foi inserido no vetor ra. Caso já tenha sido inserido, deverá exibir uma mensagem e solicitar outro número, e ficar num loop até que o novo número seja um número diferente de todos os que já foram inseridos. O novo número deverá ser inserido no vetor ra.  Seu programa deve ter uma variável nroAluno para controlar o número de alunos que já foi inserido no vetor. Essa variável indica quantos alunos tem no vetor, e também representa o índice no vetor onde será inserido o próximo aluno

    Eu consegui validar se o maximo de alunos já foram inseridos mas não estou conseguindo validar o RA inserido, se eu inserir o mesmo RA duas vezes eu tenho que repetir até inserir um RA diferente.

    Segue o trecho do codigo:

    if (nroAluno < maxAlun)
                            {
                                Console.WriteLine("Digite o RA do aluno a ser cadastrado: ");
                                cont = int.Parse(Console.ReadLine());

                                for (int i = 0; i < ra[i]; i++)
                                {

                                }

                                if (cont != ra[nroAluno])
                                {
                                    ra[nroAluno++] = cont;
                                    Console.WriteLine("Aluno cadastrado com sucesso!");
                                    Console.WriteLine("\n");
                                    

                                }
                                else
                                {
                                    Console.WriteLine("RA já cadastrado!");

                                    do
                                    {
                                        Console.WriteLine("Digite o RA do aluno a ser cadastrado: ");
                                        cont = int.Parse(Console.ReadLine());

                                        ra[nroAluno++] = cont;
                                        Console.WriteLine("Aluno cadastrado com sucesso!");
                                        Console.WriteLine("\n");
                                       


                                    } while (cont == ra[nroAluno]);
                                }
                            }
                            else
                            {
                                Console.WriteLine("Não é possivel cadastrar mais alunos");
                                Console.WriteLine("\n");
                            }


    sexta-feira, 18 de novembro de 2016 10:35

Respostas

  • Walter,

    Realmente, da forma que mencionei ele tava pesquisando em apenas um item do seu vetor de RA, tenta dessa forma:

                if (nroAluno < maxAlun)
                {
                    do
                    {
                        Console.WriteLine("Digite o RA do aluno a ser cadastrado: ");
                        cont = int.Parse(Console.ReadLine());
    
                        if (!ra.Contains(cont))
                        {
                            ra[nroAluno++] = cont;
                            Console.WriteLine("Aluno cadastrado com sucesso!");
                            Console.WriteLine("\n");
                            break;
                        }
                        else
                            Console.WriteLine("RA já cadastrado! Tente novamente.");
                    } while (cont == ra[nroAluno]);
                }
                else
                {
                    Console.WriteLine("Não é possivel cadastrar mais alunos");
                    Console.WriteLine("\n");
                }

    DETALHE: Para poder usar o Contains, você precisa ter o using System.Linq; adicionado na sua classe


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco



    • Editado André SeccoMVP sexta-feira, 18 de novembro de 2016 11:25
    • Marcado como Resposta WalterMagni sexta-feira, 18 de novembro de 2016 13:09
    sexta-feira, 18 de novembro de 2016 11:17
  • Walter, qualquer coisa posta todo o código, fica mais fácil ajudar

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta WalterMagni sexta-feira, 18 de novembro de 2016 13:08
    sexta-feira, 18 de novembro de 2016 12:59

Todas as Respostas

  • Olá,

    Tenta dessa forma:

                if (nroAluno < maxAlun)
                {
                    do
                    {
                        Console.WriteLine("Digite o RA do aluno a ser cadastrado: ");
                        cont = int.Parse(Console.ReadLine());
    
                        if (cont != ra[nroAluno])
                        {
                            ra[nroAluno++] = cont;
                            Console.WriteLine("Aluno cadastrado com sucesso!");
                            Console.WriteLine("\n");
                            break;
                        }
                        else
                            Console.WriteLine("RA já cadastrado! Tente novamente.");
                    } while (cont == ra[nroAluno]);
                }
                else
                {
                    Console.WriteLine("Não é possivel cadastrar mais alunos");
                    Console.WriteLine("\n");
                }


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    sexta-feira, 18 de novembro de 2016 10:47
  • Olá Walter,

    Use assim:

    ra.Contains(nroAluno)

    Um exemplo para rodar no console rapidão:

                int[] vetor = new int[] {1,3,5,7,8,10 };
                Console.WriteLine( vetor.Contains(7));
                Console.ReadKey();

    sexta-feira, 18 de novembro de 2016 10:51
  • Olá,

    Tenta dessa forma:

                if (nroAluno < maxAlun)
                {
                    do
                    {
                        Console.WriteLine("Digite o RA do aluno a ser cadastrado: ");
                        cont = int.Parse(Console.ReadLine());
    
                        if (cont != ra[nroAluno])
                        {
                            ra[nroAluno++] = cont;
                            Console.WriteLine("Aluno cadastrado com sucesso!");
                            Console.WriteLine("\n");
                            break;
                        }
                        else
                            Console.WriteLine("RA já cadastrado! Tente novamente.");
                    } while (cont == ra[nroAluno]);
                }
                else
                {
                    Console.WriteLine("Não é possivel cadastrar mais alunos");
                    Console.WriteLine("\n");
                }



    Olá André bom dia, obrigado pela força mas não deu certo, eu continuo colocando o mesmo valor no RA e ele passa, deveria negar um valor igual.
    sexta-feira, 18 de novembro de 2016 11:02
  • Olá Walter,

    Use assim:

    ra.Contains(nroAluno)

    Um exemplo para rodar no console rapidão:

                int[] vetor = new int[] {1,3,5,7,8,10 };
                Console.WriteLine( vetor.Contains(7));
                Console.ReadKey();

    Olá Pablo bom dia, obrigado pela ajuda. Então eu não quero parecer muito cabaço mas eu acho que eu não posso usar essa instrução, é exercício da faculdade, então eu tenho que seguir a linha do enunciado. Eu acho que estou no caminho certo, esta dando erro no meu for
    sexta-feira, 18 de novembro de 2016 11:05
  • Walter,

    Realmente, da forma que mencionei ele tava pesquisando em apenas um item do seu vetor de RA, tenta dessa forma:

                if (nroAluno < maxAlun)
                {
                    do
                    {
                        Console.WriteLine("Digite o RA do aluno a ser cadastrado: ");
                        cont = int.Parse(Console.ReadLine());
    
                        if (!ra.Contains(cont))
                        {
                            ra[nroAluno++] = cont;
                            Console.WriteLine("Aluno cadastrado com sucesso!");
                            Console.WriteLine("\n");
                            break;
                        }
                        else
                            Console.WriteLine("RA já cadastrado! Tente novamente.");
                    } while (cont == ra[nroAluno]);
                }
                else
                {
                    Console.WriteLine("Não é possivel cadastrar mais alunos");
                    Console.WriteLine("\n");
                }

    DETALHE: Para poder usar o Contains, você precisa ter o using System.Linq; adicionado na sua classe


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco



    • Editado André SeccoMVP sexta-feira, 18 de novembro de 2016 11:25
    • Marcado como Resposta WalterMagni sexta-feira, 18 de novembro de 2016 13:09
    sexta-feira, 18 de novembro de 2016 11:17
  • Walter,

    Realmente, da forma que mencionei ele tava pesquisando em apenas um item do seu vetor de RA, tenta dessa forma:

                if (nroAluno < maxAlun)
                {
                    do
                    {
                        Console.WriteLine("Digite o RA do aluno a ser cadastrado: ");
                        cont = int.Parse(Console.ReadLine());
    
                        if (!ra.Contains(cont))
                        {
                            ra[nroAluno++] = cont;
                            Console.WriteLine("Aluno cadastrado com sucesso!");
                            Console.WriteLine("\n");
                            break;
                        }
                        else
                            Console.WriteLine("RA já cadastrado! Tente novamente.");
                    } while (cont == ra[nroAluno]);
                }
                else
                {
                    Console.WriteLine("Não é possivel cadastrar mais alunos");
                    Console.WriteLine("\n");
                }

    DETALHE: Para poder usar o Contains, você precisa ter o using System.Linq; adicionado na sua classe



    Obrigado André, resolveu em partes, eu estou fazendo isso dentro de um switch, caso eu digite um RA igual deveria se manter no case que estou, por exemplo continuar perguntando um RA. Eu devo conseguir resolver isso dentro do else, eu estou tentando aqui. muito obrigado!
    • Marcado como Resposta WalterMagni sexta-feira, 18 de novembro de 2016 13:09
    • Não Marcado como Resposta WalterMagni sexta-feira, 18 de novembro de 2016 13:09
    sexta-feira, 18 de novembro de 2016 11:35
  • Walter, qualquer coisa posta todo o código, fica mais fácil ajudar

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta WalterMagni sexta-feira, 18 de novembro de 2016 13:08
    sexta-feira, 18 de novembro de 2016 12:59
  • Walter, qualquer coisa posta todo o código, fica mais fácil ajudar

    A sim André, eu fiquei meio assim de postar tudo para não parecer que eu queria ajuda em todo o exercício (impressão minha). Eu estou no segundo CASE, caso eu tenha duvida eu posto aqui, muito obrigado mesmo!
    sexta-feira, 18 de novembro de 2016 13:08