Здравствуйте!
Пишу программу - записную книгу,
Столкнулась с такой проблемой,что при добавлении нового элемента в книгу, ввод некоторых параметров пропускает и сразу переходит же к другому параметру,ниже прикреплю скриншот.
Проблема вроде бы исчезает,когда я после каждого fgets прописываю cin.ignore().
Подскажите пожалуйста в чем моя ошибка?
В коде представлены только структуры,перечисления и сама функция добавления:
Код:
#include "stdafx.h"
#include <iostream>
#include "conio.h"
#include "stdlib.h"
using namespace std;
struct PROG
{
char name [255];
char lastname [255];
int age;
enum Department;
char Department [50];
char Project [255];
char CPU [127];
int Memory;
char Customer [255];
int ProgrammersNum;
char Addres [255];
int Weight;
char Transport [20];
enum Transport;
};
struct Value
{
PROG prog;
Value *next;
};
enum Department
{
DEPT_PROGRAMMERS=1,
DEPT_MANAGEMENT=2,
DEPT_SHIPPING=3
};
enum Transport
{
TRANSP_TRAIN,
TRANSP_AUTO,
TRANSP_AERO,
TRANSP_SHIP
};
Value *first = NULL; //Указатель на первый элемент списка
void Menu ()
{
printf("'1' - Add\n");
printf("'2' - Delete\n");
printf("'3' - Save\n");
printf("'4' - Load\n");
printf("'5' - View\n");
}
void Add ()
{
Value *v;
int j;
int q;
system("cls");
printf("How many elements do you want to add?\n");
scanf("%d",&j);
cin.ignore();
system ("cls");
for(int i=0;i<j;i++)
{
v = new(Value); // новый элемент списка, выделяем память
printf("Enter the name: ");
gets(v->prog.name);
printf("Enter the lastname: ");
gets(v->prog.lastname);
printf("Enter the age: ");
scanf("%d",&v->prog.age);
printf("Choose the department:\n '1'-programmers;\n '2'-managment;\n '3'-shipping\n");
scanf("%d",&q);
if (q==DEPT_PROGRAMMERS)
{
printf("programmers\n",&v->prog.Department);
printf("Enter the project: ");
gets(v->prog.Project);
printf("Enter the CPU: ");
gets(v->prog.CPU);
printf("Enter the Memory: ");
scanf("%d",&v->prog.Memory);
}
if (q==DEPT_MANAGEMENT)
{
printf("managment\n",&v->prog.Department);
printf("Enter the project: ");
gets(v->prog.Project);
printf("Enter the customers: ");
gets(v->prog.Customer);
printf("Enter the numbers of programmers: ");
scanf("%d",&v->prog.ProgrammersNum);
system ("cls");
Menu();
}
if (q==DEPT_SHIPPING)
{
int q1;
printf("shiping\n",&v->prog.Department);
printf("Enter the address: ");
gets(v->prog.Addres);
printf("Enter the customers: ");
gets(v->prog.Customer);
printf("Enter the weight: ");
scanf("%d",&v->prog.Weight);
printf("Enter the transport:\n '1' - train;\n '2' - auto;\n '3' - aero;\n '4' - ship");
scanf("%d",&q);
cin.ignore(20,'\n');
if (q1=TRANSP_TRAIN)
{
printf("train",&v->prog.Transport);
}
if (q1=TRANSP_AUTO)
{
printf("auto",&v->prog.Transport);
}
if (q1=TRANSP_AERO)
{
printf("aero",&v->prog.Transport);
}
if (q1=TRANSP_SHIP)
{
printf("ship",&v->prog.Transport);
}
}
system("cls");
}
system("cls");
Menu();
}
http://saveimg.ru/show-image.php?id=...d2e6ca3e7e295f