Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Retorno para uma funcao causa problema


nothing at all

Pergunta

Ola amigos , sou novo aqui .

Tenho como hobby programacao , sei um pouco de c/c++ , sempre estou tentando melhorar.

estou com um problema que gostaria que me desse dicas. bom ,

antes de passar o codigo vou descrever o erro que ocorre.

existe o menu do meu programa , um cadastro pessoal , criei esse menu com ifs(prefiro do que o switch) , pois bem ,

tudo ocorre bem , porem quando eu fui melhorar o codigo , por exemplo , se o usuario digitar um valor que o menu não tenha , coloquei um if com comandos bolianos " else if (option != 1 || option || 2 || option != 3) " dentro do bloco desse if ele executuara a funcao que inicia o menu , sendo a start();

porem se eu coloco esse bloco para rodar , meu menu fica meio doido , exemplo a opcao (3)Exit , não funciona de primeira , parece que fica em um loop , bastante estranho , sei que isso 'e um erro de novato bem cabaco jhehhehehe

espero ter sido claro

abaixo o codigo:

#include <iostream>

#include <cstdlib>

#include <string>

#include <conio.h>

using namespace std;

int start();

int cont = 0;

int number_of_students = 1;

char temp;

int exit_program();

struct students

{

int age[];

char name[32];

};

students in_program[32];

int main()

{

start();

}

int start()

{

system("cls");

char option;

cout << " **** \tStudents Control **** " << endl;

cout << "(1)Add Student\n(2)List Students\n(3)Exit" << endl << ":" ;

option = getch();

if(option == '1')

{

system("cls");

cout << " **** \tStudents Control **** " << endl;

cout << "Name:";

cin >> in_program[number_of_students].name;

number_of_students++;

main();

}

if(option == '2')

{

system("cls");

cout << " **** \tStudents Control **** " << endl;

cout << " Name \n" << endl;

int counter_of_while = 1;

while(counter_of_while < number_of_students)

{

cout << "(" << counter_of_while << ")" << in_program[counter_of_while].name << endl;

counter_of_while++;

}

temp = getch();

}

if(option == '3')

{

cout << "bye";

}

else if (option != 1 || option != 2 || option != 3)

{

cout << "Invalid command , please try again.";

main();

}

}

Editado por nothing at all
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Seria melhor se você colocasse os ifs assim:

...
if(opcao == '1')
{
  ...
}
else if(opcao == '2')
       {
         ...
       }
       else if(opcao == '3')
              {
                 exit(0);
              }
              else cout << "Opcao invalida";
...
Acho também que chamando a função main sucessivamente deve sobrecarregar o programa com o empilhamento das funções, pois você não termina a função anterior e chama outra e outra e mais outra. Seria melhor se você colocasse um loop no main:
int main()
{
   while(1)
   {
      start();
   } 
}

Abraço.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...