Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Пропускается ввод строки через gets (http://forum.oszone.net/showthread.php?t=311660)

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 Adlinaint i)
{
    
printf(" Задайте элементы множества А :\n");
    
gets(Ainput);
    
Adlina=strlen(Ainput);
}
void Bmnojestvo(char Binput[], int Bdlinaint i)
{
    
printf(" Задайте элементы множества B :\n");
    
gets(Binput);
    
Bdlina=strlen(Binput);
}
int main()///////////////////////////////////////////////    MAIN
{
    
setlocaleLC_ALL,"Russian" );
    
    
int tmenun=100i;
    
int AdlinaBdlina;
    
int start=1;
    
char Ainput[n], Binput[n], temp[n];
    
    
Menu();
    while (
start)
    {
        
TakeMenu(tmenu);
        switch (
tmenu)
        {
            case 
1Amnojestvo(AinputAdlinai); break;
            case 
2Bmnojestvo(BinputBdlinai); break;
            default: 
printf(" Ошибка: такой команды не существует."); break;
        }    
    }
    
    
system("pause");



lxa85 17-02-2016 18:12 2607149

Во первых у вас void который значений не возвращает.
Переменные вы передаете как таковые (не через указатель), а значит изменения в процедуре "обратной силы" не имеют. Т.е. переменная ADlina будучи измененная в процедуре, в основной функции останется неизменной.
В данном случае я бы рекомендовал сделать процедуры не void, a int и через конструкцию return Adlina; возвращать нужное значение.


Время: 06:52.

Время: 06:52.
© OSzone.net 2001-