Usuário com melhor resposta
Varrer um vetor e validar se um valor já foi inserido

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");
}
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
-
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
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 -
-
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. -
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();
-
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
-
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
- 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
-
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
-
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!