1 / 1 / 4
Регистрация: 18.10.2017
Сообщений: 232
1

Какой тип данных для слов?

18.10.2018, 20:36. Показов 13781. Ответов 6

Есть программа -
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
#include <iostream>
#include <cstdlib>
#include <cmath>
 
using namespace std;
class CState{
};
    void INF(){
        char stran ;
        char stolic ;
        int ZITELI;
        int PLOSCHA;
    std::cout << "Укажите страну  ->  " ;
    std::cin >> stran;
    std::cout << "Укажите столицу  ->  ";
    std::cin >> stolic;
    std::cout << "Укажите кол-ство жителей в стране  ->  ";
    std::cin >> ZITELI;
    std::cout << "Укажите площать страны  ->  ";
    std::cin >> PLOSCHA;
    }
    void RESULT (){
        int ZITELI;
        int PLOSCHA;
        char stran=10;
        char stolic=10;
        float R;
        R = ZITELI/PLOSCHA;
 
        std::cout << "Страна -   " << stran <<endl;
        std::cout << "Столица -   " << stolic <<endl;
        std::cout << "К-ство жителей =   " << ZITELI <<endl;
        std::cout << "Площадь =   " << PLOSCHA <<endl;
        std::cout << "Средняя плотность населения =   " <<R <<endl;
 
    }
int main()
{
     setlocale(LC_CTYPE, "rus");
     INF();
     RESULT();
 
    return 0;
}
НУжно чтоб я в 1 и 2 случае писал слова,а потом оно их выводило,но когда пытаюсь написать более 2 букв,то прога срабатывает до конца и не дает больше ничего ввести.Когда пишу 1 букву или цифру,то пропускает дальше

И еще 1 трабл: Хоть R - float ,но при делении мне выдает целое число.Подскажите как исправить?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2018, 20:36
Ответы с готовыми решениями:

Какой тип данных нужен для возведения в степень
Добрый день. При возведении числа в степень столкнулся с проблемой, что при возведении числа 9 в 8...

Какой тип данных использовать для работы с большими числами?
Здравствуйте! Какой тип данных можно использовать для больших чисел( unsigned long long не...

Enum и типы данных. Как задать тип значений явно, и какой тип будет при переполнении?
Пытаюсь сделать функцию с передачей нескольких параметров,используя битовые операции. В качестве...

Какой тип данных лучше подойдет для приложения, которое делит числа int или float?
Ответ написал int Хотя нутром чую, что float

6
Мозгоправ
1735 / 1029 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
18.10.2018, 20:53 2
Лучший ответ Сообщение было отмечено dastreba как решение

Решение

Для названия страны и столицы используй тип string (#include <string>). Тип char может хранить только один символ.
setlocale(LC_CTYPE, "rus") влияет только на вывод кириллицы. Если ввести кириллицу, а потом вывести, тебя ждёт сюрприз.
Используй заголовок <Windows.h> и, вместо setlocale(), используй
C++
1
2
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
Цитата Сообщение от dastreba Посмотреть сообщение
Хоть R - float ,но при делении мне выдает целое число
ZITELI и PLOSCHA оба типа int. Значение выражения ZITELI/PLOSCHA будет int, и будет использовано целочисленное деление. Потом результат будет преобразован к float.

Что бы выражение считалось правильно нужно что бы хотя бы один из операндов был плавающего типа. Решения два:
  1. Сделать PLOSCHA типом float. Я бы сказал, что это логично.
  2. Привести один из операндов к типу float. Например так: ZITELI/(float)PLOSCHA
1
1 / 1 / 4
Регистрация: 18.10.2017
Сообщений: 232
18.10.2018, 21:31  [ТС] 3
Спасибо большое
0
1 / 1 / 4
Регистрация: 18.10.2017
Сообщений: 232
20.10.2018, 14:36  [ТС] 4
Вот рабочая программа -
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
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <Windows.h>
 
using namespace std;
class CState{
    char stran[10];
    char stolic[10];
    int ZITELI;
    float PLOSCHA;
 public:
 
    void First();
    void Second();
};
int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    CState Info;
    CState Result;
 
 
    Info.First();
 
 
 
    Info.Second();
 
    return 0;
}
void  CState::First()
{
    cout << "Країна : ";
      cin.getline(stran, 10);
    cout << "Столиця : ";
      cin.getline(stolic, 10);
        cout << "К-ство жителей  : ";
      cin>>ZITELI;
    cout << "Площа : ";
      cin >> PLOSCHA;
 
 
 
};
void  CState::Second()
{
    cout << " " << endl;
    cout << "Країна : "<<  stran << endl;
    cout<< "Столиця : "<< stolic << endl;
    cout<< "К-сть жителiв  :  "<<ZITELI << endl ;
    cout<< "Площа :  "<<PLOSCHA<< endl;
    cout << " " << endl;
    cout << "                                          Средняя плотность населения =   " << ZITELI/PLOSCHA <<endl;
    cout << " " << endl;
};
0
1 / 1 / 4
Регистрация: 18.10.2017
Сообщений: 232
25.10.2018, 11:30  [ТС] 5
Вот еще вариант -
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
#include <iostream>
#include <cstdlib>
#include <cmath>
 
using namespace std;
class CState
{
private:
    char stran[10];
    char stolic[10] ;
    double ZITELI;
    double PLOSCHA;
public:
    void INF()
    {
        std::cout << "Укажите страну  ->  " ;
        std::cin >> stran;
        std::cout << "Укажите столицу  ->  ";
        std::cin >> stolic;
        std::cout << "Укажите кол-ство жителей в стране  ->  ";
        std::cin >> ZITELI;
        std::cout << "Укажите площать страны  ->  ";
        std::cin >> PLOSCHA;
    }
    void RESULT ()
    {
 
 
        std::cout << "Страна -   " << stran <<endl;
        std::cout << "Столица -   " << stolic <<endl;
        std::cout << "К-ство жителей =   " << ZITELI <<endl;
        std::cout << "Площадь =   " << PLOSCHA <<endl;
 
    }
    double SERCH(){
    return ZITELI/PLOSCHA;
    }
};
 
int main()
{
    system("chcp 1251");
    CState kr;
    kr.INF();
    cout << "Средняя площадь -  " << kr.SERCH() << endl;
    kr.RESULT();
 
    return 0;
}
0
7415 / 5011 / 2889
Регистрация: 18.12.2017
Сообщений: 15,694
25.10.2018, 15:37 6
Цитата Сообщение от dastreba Посмотреть сообщение
Вот рабочая программа
введите Мадагаскар с его столицей и посмотрите какая она рабочая
выше ведь ясно говорилось:
Цитата Сообщение от L0M Посмотреть сообщение
Для названия страны и столицы используй тип string (#include <string>).
1
1 / 1 / 4
Регистрация: 18.10.2017
Сообщений: 232
28.10.2018, 14:32  [ТС] 7
Я сделал чуть проще
C++
1
2
char stran[30];
    char stolic[30] ;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2018, 14:32
Помогаю со студенческими работами здесь

Какой тип лучше использовать для расположения тестовых данных?
доброго времени суток имеется файл, в котором есть последовательность данных для теста -...

Путаница с типами данных TCHAR и char. Какой тип данных выбрать?
Я создавал тему в соседнем разделе:https://www.cyberforum.ru/cpp-networks/thread1119035.html...

Как проверить какой тип данных вводится?
Доброго времени суток. Подскажите пожалуйста!С клавиатуры вводится два целых числа.Как после ввода...

Геометрическая прогрессия: какой тип данных определить
Привет, форумчане! В CPP я еще очень и очень зеленый, поэтому, нужна ваша помощь. Есть...


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

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

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