|
|
kennydzzze |
16-02-2016 14:15 2606686 |
Пропускается ввод строки через gets
Проблема такая: при вызове функций Amnojestvo и Bmnojestvo в maine ввод строки через функцию gets пропускается. Никак не могу понять в чем дело. Возможно это как-то связано с выбором действий через enter.
PHP код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
void Menu()
{
printf(" Возможные действия:\n");
printf(" 1. Создать(изменить существующее) и заполнить множество А.\n");
printf(" 2. Создать(изменить существующее) и заполнить множество B.\n");
printf(" 3. Применить объединение (A и B).\n");
printf(" 4. Применить пересечение (A и B).\n");
printf(" 5. Применить разность (A и B).\n");
printf(" 6. Применить разность (B и A).\n");
printf(" 7. Применить симметричную разность (A и B).\n");
}
void TakeMenu(int &tmenu)
{
printf("\n Выберите номер действия: ");
scanf("%d", &tmenu);
}
void Amnojestvo(char Ainput[], int Adlina, int i)
{
printf(" Задайте элементы множества А :\n");
gets(Ainput);
Adlina=strlen(Ainput);
}
void Bmnojestvo(char Binput[], int Bdlina, int i)
{
printf(" Задайте элементы множества B :\n");
gets(Binput);
Bdlina=strlen(Binput);
}
int main()/////////////////////////////////////////////// MAIN
{
setlocale( LC_ALL,"Russian" );
int tmenu, n=100, i;
int Adlina, Bdlina;
int start=1;
char Ainput[n], Binput[n], temp[n];
Menu();
while (start)
{
TakeMenu(tmenu);
switch (tmenu)
{
case 1: Amnojestvo(Ainput, Adlina, i); break;
case 2: Bmnojestvo(Binput, Bdlina, i); break;
default: printf(" Ошибка: такой команды не существует."); break;
}
}
system("pause");
}
|
Во первых у вас void который значений не возвращает.
Переменные вы передаете как таковые (не через указатель), а значит изменения в процедуре "обратной силы" не имеют. Т.е. переменная ADlina будучи измененная в процедуре, в основной функции останется неизменной.
В данном случае я бы рекомендовал сделать процедуры не void, a int и через конструкцию return Adlina; возвращать нужное значение.
|
Время: 06:52.
© OSzone.net 2001-