0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 7
1

Cin за пределами функции main

20.12.2014, 16:00. Показов 922. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, у меня есть код. Я хочу в функции inputMass задать какое-то значение переменной х. Но компилятор при запуске пропускает этот момент. у меня ввести ничего не получается... Что делать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <Windows.h>
#include <conio.h>
 
using namespace std;
 
void inputMass(){
    int x;
    system("cls");
 
    cout << "Ввод массива\n";
 
    cout << "Выберите способ ввода: \n";
    
    cout.width(83);
    cout << " 1. Ручной ввод.\n";
 
    cout.width(80);
    cout << " 2. Рандомный ввод.\n";
 
    cin >> x;
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    char accName;
    char mainItem;
 
    system("color F1");
    setlocale(LC_ALL, "Russian");
    system("mode con cols=170 lines=50");
 
    cout << "\n\n\n\n\n\n\n\n" << *A << "\n\n\n\n";
 
    cout.width(90);
    cout << "Введите Ваше имя : ";
    cin >> accName;
 
    system("cls");
 
    bool bMENU = true;
    while (bMENU)
    {
        mainMaenu();
        switch (mainItem = _getch())
        {
        case '1': inputMass();
            break;
        case '2': changeElements();
            break;
        case '3': changeDimension();
            break;
        case '4': outputMass();
            break;
        case '5': firstTask();
            break;
        case '6': secondTask();
            break;
        case '0': bMENU = false;
            break;
        }
    }
 
    cout << "\n";
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2014, 16:00
Ответы с готовыми решениями:

Ошибка при компиляции In function"int main()"; expected ';', before "cin", [Build Error] [main.o] Error 1
Книга &quot;Основы программирования на C++ том 1&quot;(Стэнли Б.Липпман). Приводится пример кода. #include...

Как работает cin.peek, cin,get, cin.ignore, cin.clear?
Здравствуйте, товарищи и не товарищи!:) Я только начал изучать C++, а уже использую вещи, которые...

Отличие функции cin.get и cin.getline
Добрый день! Изучаю функции get и getline, сказано, что они отличаются тем, что функция get...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита от дурака&quot; на ввод....

13
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
20.12.2014, 16:19 2
У вас что, имя из одной буквы состоит?
Цитата Сообщение от magorik_sulin Посмотреть сообщение
C++
1
char accName;
Цитата Сообщение от magorik_sulin Посмотреть сообщение
C++
1
2
cout << "Введите Ваше имя : ";
cin >> accName;
0
Модератор
Эксперт С++
13496 / 10751 / 6406
Регистрация: 18.12.2011
Сообщений: 28,687
20.12.2014, 17:00 3
Еще одна странность. В функции inputMass переменная x локальная,
т.е. ее значение теряется при выходе из функции.
Так какой смысл тогда ее вводить?
0
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 7
21.12.2014, 01:40  [ТС] 4
Мне она и нужна локально. Хочу в этой функции все сделать и все. Вопрос в том почему я не могу ввести значение для х
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
21.12.2014, 01:42 5
Цитата Сообщение от magorik_sulin Посмотреть сообщение
Вопрос в том почему я не могу ввести значение для х
На вопрос ответьте:
Цитата Сообщение от lss Посмотреть сообщение
У вас что, имя из одной буквы состоит?
0
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
21.12.2014, 02:53 6
Предполагаю, что г-н lss намекает на то, что в качестве имени вы принимаете 1 букву, остальные символы в выводе записываются в следующие моменты ввода (извиняюсь за "кривую" формулировку, не знаю как иначе сказать).
При вводе, к примеру, "MastAKK" в переменную имени запишется только M. А остальные будут записываться далее, в другие переменные, по мере запроса ввода (cout, getch, etc.).
В общем, грубо говоря, программа тупо не заходит в inputMass(), ибо значение переменной никогда не равно '1'.

Не по теме:

inputMass - фу. Вы либо пишите на английском (inputArray), либо транслитом (vvestiMass)
Транслит - фу. Так что лучше полностью на английском приучаться писать.

0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
21.12.2014, 03:08 7
Цитата Сообщение от MastAKK Посмотреть сообщение
В общем, грубо говоря, программа тупо не заходит в inputMass(), ибо значение переменной никогда не равно '1'.
Даже если зайдёт легче не станет, там ввод числа ожидается, сin >> попытается прочитать букву из оставшихся в очереди, ввод вообще сломается.
0
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
21.12.2014, 03:10 8
lss, ну... Ввод не сломается точно. Просто символы будут приводиться к int в соответствии с кодировкой. И всё.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
21.12.2014, 03:14 9
Цитата Сообщение от MastAKK Посмотреть сообщение
Ввод не сломается точно. Просто символы будут приводиться к int в соответствии с кодировкой. И всё.
Попробуй, при вводе int, вместо числа ввести букву, потом рассказывать будешь.
0
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
21.12.2014, 03:16 10
Цитата Сообщение от lss Посмотреть сообщение
Попробуй, при вводе int, вместо числа ввести букву, потом рассказывать будешь.
В переменную запишется число - код символа согласно кодировке. Вроде...
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
21.12.2014, 03:19 11
Цитата Сообщение от MastAKK Посмотреть сообщение
В переменную запишется число - код символа согласно кодировке.
Попробуй сначала, потом сказки рассказывай.
Вот тебе код и работа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main()
{
    int x;
    cin >> x;
    cout << x << endl;
    char ch;
    cin >> ch;
    cout << ch << endl;
 
    system("pause");
    return 0;
}
Миниатюры
Cin за пределами функции main  
0
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 7
21.12.2014, 03:22  [ТС] 12
Я вас понял! Спасибо. Буду пробовать! А как исправить, чтобы имя все заходило?
0
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
21.12.2014, 03:26 13
Да, моя ошибка.
Странно, мне казалось, что вводится код символа...

Цитата Сообщение от magorik_sulin Посмотреть сообщение
Я вас понял! Спасибо. Буду пробовать! А как исправить, чтобы имя все заходило?
C++
1
2
char* name = new char[50]; //вместо 50 длина имени, как угодно
cin >> name;
Вместо char* я бы рекомендовал std::string
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
21.12.2014, 03:27 14
Цитата Сообщение от magorik_sulin Посмотреть сообщение
А как исправить, чтобы имя все заходило?
Массив char объяви.
0
21.12.2014, 03:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2014, 03:27
Помогаю со студенческими работами здесь

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до этого c++ не...

Определение функции за пределами шаблона класса
не могу определить функцию за пределами класса, не компилится подсобите советом template&lt;...

А почему ошибка, что функции print и read не определены в функции main()?
Что-то не понимаю. Они определены в заголовочном файле. А подчеркивается красным что нет.... ...

Написать три функции, которые будут вызываться из функции main()
Доброго времени суток... уважаемые форумчане может кто поможет с моей бедой. а беда вроде проста но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru