Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > ввод нескольких значений в одной строке ?


Автор: Remiznik 20.12.2008, 20:42
може кто сталквался подскажит как реализовать ввод нескольких значений в одной строке !

выглядеть должно как-то  так !

Введите первое значение X введите второе значение Y !

все функции ввода закнчивают ввод ENTER и автоматически перебрасывают на новую строку как с этим бороться ? 

Автор: GoldFinch 20.12.2008, 21:30
а как твоя прога узнает что ты уже ввел значение если ты не нажал [enter] ?

Автор: Remiznik 20.12.2008, 21:44
я вот и незнаю ... !!!но лудше бы чтоб при нажатие на энтер фугкция не перебрасывал на новую строчку а печатала следуюший текст в этой же строке !!! только как это реализовать ? 

Автор: Dov 20.12.2008, 21:47
Код
    int X, Y, Z;
    cout <<"Enter X, Y and Z: ";
    cin >> X >> Y >> Z; // вводи значения через пробел

Автор: Remiznik 20.12.2008, 21:53
это вариант ! но нужно вводить сразу два значения подряд ... но текст между ними не вставить (

Автор: IKM2007 20.12.2008, 22:35
Цитата(Remiznik @  20.12.2008,  21:53 Найти цитируемый пост)
это вариант ! но нужно вводить сразу два значения подряд ... но текст между ними не вставить (

То есть вводишь 423, и хочешь, чтобы в первой переменной было 4, а во втором 23? Компилятор не телепат. Сам никогда не узнает...

Автор: Remiznik 20.12.2008, 22:40
нет я хочут так !


какойто текст ПЕРЕМЕНАЯ(пробел) какойто текст ПЕРЕМЕНЯ(ЭНТЕР)
новая строка 

Автор: GoldFinch 20.12.2008, 22:47
ну так и сделай как хочешь... делов-то...

Автор: Remiznik 20.12.2008, 22:50
как это сделать ? 

Автор: Dov 21.12.2008, 00:12
Код
#define LEN 12
 
void gotoXY(short x, short y)
{
    HANDLE StdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD  coord  = {x, y};

    SetConsoleCursorPosition(StdOut, coord);
}

int whereX()
{
    HANDLE StdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO csbi;

    GetConsoleScreenBufferInfo(StdOut, &csbi); 

    return int(csbi.dwCursorPosition.X);
}

int main()
{
    char   buf[LEN];
    int    x, y, A, B;

    printf("Enter A: ");
    x = whereX();   
    scanf("%d", &A);

    sprintf(buf, "%d", A);
    gotoXY(x + strlen(buf), 0);    
   
    printf(" Enter B: ");
    scanf("%d", &B); 

    return 0;
}

Автор: 586 21.12.2008, 01:01
Код
#include <windows.h>
#include <conio.h>
#include <stdio.h>

void gettext(char *s_out, unsigned int nSize)
{
    unsigned int pos = 0;
    while(1)
    {
        switch(char c = getch())
        {
        case VK_RETURN:
            s_out[pos++] = 0;
            return;

        case VK_BACK:
            if(pos) {
                --pos;
                putch(VK_BACK);
                putch(' ');
                putch(VK_BACK);
            }
            break;

        case 3:     // CTRL+C
            //GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);   // иногда не завершает выполнение программы - заменил на функцию exit
            s_out[pos] = 0;
            exit(0);
            return;

        default:
            if(pos < (nSize-1))
                putch(s_out[pos++] = c);
            else
                putch('\a');    // beep
        }
    }
}

int main(int argc, char* argv[])
{
    char a[12], b[12], c[12];
    printf("A=");
    gettext(a, 12);
    printf("  B=");
    gettext(b, 12);
    printf("  C=");
    gettext(c, 12);

    printf("\n\nResults: A=%s  B=%s  C=%s\n", a, b, c);

    getch();
    return 0;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)