Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 23.02.2021
Сообщений: 48
1

метод инициализации с проверкой значений на корректность, введены с клавиатуры

08.10.2021, 12:31. Показов 1058. Ответов 7

Author24 — интернет-сервис помощи студентам
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
#include <iostream>
#include <math.h>
using namespace std;
 
 
class Progression{
private:
    float first;
    int second;
public:
    Progression(float a0, int d){
        this->first = a0;
        this->second = d;
    }
    float operator()(int j){
        return this->first+this->second*(j-1);
    }
    
     
};
 
int main(){
    float a0;
    int d, j;
    
    cout<<"a0 = ";
    cin>>a0;
    
    cout<<"d = ";
    cin>>d;
    
    cout<<"j = ";
    cin>>j;
    
   if(a0==round(a0))
    {
        cout<<"Eror!первый елемент должен быть дробовым";
       
    }else if(d<0)
    {
        cout<<"Eror!Разность должна быть положительной";
        
    }else{
        Progression pg(a0, d);
        cout <<"Результат прогресии: "<< pg(j) <<endl;
    }
return 0;


Нужно проверку значений, которую я делала через if переделать так чтобы это сделать через Метод
Очень прошу вашей помощи
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2021, 12:31
Ответы с готовыми решениями:

Форма для регистрации с проверкой на корректность введенных данных.
Добрый всем вечер! Ребята, в общем, такая &quot;запара&quot;. Условие: Создать форму для...

Написать анализатор, который бы проверял корректность инициализации числовых переменных
Анализатор, который бы проверял корректность инициализации числовых переменных. На входе в...

Как найти минимум в массиве, элементы которого введены с клавиатуры?
Здравствуйте. Почему при вводе только положительных чисел программа за минимальное число принимает...

Сформировать файл из символов, которые должны быть введены с клавиатуры
Составить программы, с помощью которых: - сформировать файл из символов, которые должны быть...

7
440 / 283 / 183
Регистрация: 23.06.2018
Сообщений: 651
08.10.2021, 12:55 2
Ну так... Просто вынесите в метод? Правда непонятно какой метод вам нужен, по заголовку с инициализацией, а по тексту без. А может вы вообще перегрузить оператор >> хотели?
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
#include <iostream>
#include <cmath>
using namespace std;
 
class Progression {
private:
    float first;
    int second;
public:
    Progression(float a0, int d) {
        this->first = a0;
        this->second = d;
    }
    float operator()(int j) {
        return this->first + this->second * (j - 1);
    }
};
 
bool init(float& a0, int& d, int& j) {
    cout << "a0 = ";
    cin >> a0;
    
    cout << "d = ";
    cin >> d;
    
    cout << "j = ";
    cin >> j;
    
    bool result = true;
    if (a0 == round(a0)) {
        cout << "Error! Первый элемент должен быть дробным." << endl;
        result = false;
    }
    if (d < 0) {
        cout << "Error! Разность должна быть положительной." << endl;
        result = false;
    }
    return result;
}
 
int main() {
    float a0;
    int d, j;
    if (init(a0, d, j)) {
        Progression pg(a0, d);
        cout << "Результат прогрессии: " << pg(j) << endl;
    }
}
0
0 / 0 / 0
Регистрация: 23.02.2021
Сообщений: 48
08.10.2021, 13:58  [ТС] 3
да, с инициализацией

Добавлено через 11 минут
только с помощью конструктора

Добавлено через 10 минут
Нужно как то по-другому, а не с init
0
0 / 0 / 0
Регистрация: 23.02.2021
Сообщений: 48
08.10.2021, 14:15  [ТС] 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
#include <iostream>
#include <cmath>
using namespace std;
 
class Progression {
private:
    float first;
    int second;
public:
    Progression(float a0, int d) {
        this->first = a0;
        this->second = d;
    }
    float operator()(int j) {
        return this->first + this->second * (j - 1);
    }
};
 
bool init(float& a0, int& d, int& j) {
    cout << "a0 = ";
    cin >> a0;
    
    cout << "d = ";
    cin >> d;
    
    cout << "j = ";
    cin >> j;
    
    bool result = true;
    if (a0 == round(a0)) {
        cout << "Error! Первый элемент должен быть дробным." << endl;
        result = false;
    }
    if (d < 0) {
        cout << "Error! Разность должна быть положительной." << endl;
        result = false;
    }
    return result;
}
 
int main() {
    float a0;
    int d, j;
    if (init(a0, d, j)) {
        Progression pg(a0, d);
        cout << "Результат прогрессии: " << pg(j) << endl;
    }
}


Как сделать метод инцилизации с проверкой на корректность значения только с помощью конструктора
0
0 / 0 / 0
Регистрация: 23.02.2021
Сообщений: 48
08.10.2021, 14:16  [ТС] 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bool init(float& a0, int& d, int& j) {
    cout << "a0 = ";
    cin >> a0;
    
    cout << "d = ";
    cin >> d;
    
    cout << "j = ";
    cin >> j;
    
    bool result = true;
    if (a0 == round(a0)) {
        cout << "Error! Первый элемент должен быть дробным." << endl;
        result = false;
    }
    if (d < 0) {
        cout << "Error! Разность должна быть положительной." << endl;
        result = false;
    }
    return result;
}



Как сделать метод инцилизации с проверкой на корректность значения только с помощью конструктора
0
2528 / 1247 / 461
Регистрация: 08.11.2016
Сообщений: 3,428
08.10.2021, 14:29 6
Lesr, вызовите инит в конструкторе

C++
1
2
3
4
Progression(void)
{
    while (!init(first, second));
}
0
0 / 0 / 0
Регистрация: 23.02.2021
Сообщений: 48
08.10.2021, 15:58  [ТС] 7
по заданию вообще не нужно использовать init
0
440 / 283 / 183
Регистрация: 23.06.2018
Сообщений: 651
08.10.2021, 21:50 8
Цитата Сообщение от Lesr Посмотреть сообщение
Как сделать метод инцилизации с проверкой на корректность значения только с помощью конструктора
Просто вынесите код инициализации в конструктор.
Но вообще уточните, что вы именно хотите. Чтение из cin'а в конструкторе уже плохое решение, но оно хоть какой-то смысл имеет, а вот с чтением всех чисел есть 3 варианта:
1) класс начинает хранить j тоже, а operator() теряет свой единственный аргумент;
2) конструктор инициализирует только first и second, а j инициализируется снаружи;
3) конструктор принимает j по ссылке, но это уже выходит за рамки моего здравого смысла в ООП.
0
08.10.2021, 21:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2021, 21:50
Помогаю со студенческими работами здесь

Память: куда записываются данные, которые были введены с клавиатуры?
вопрос1. куда записываются данные, которые были введены с клавиатуры? при динамическом выделении...

Не считываются значения, которые введены в DatePicker с клавиатуры, а не выбором даты
Всем доброго времени суток. У меня следующая проблема. При работе с контролом DatePicker значения,...

Сформировать файл из целых чисел, которые должны быть введены с клавиатуры
помогите написать программу в паскале пожалуйста. завтра сдавать.:( две программы нужно написать ....

Сформировать текстовый файл из строк, которые должны быть введены с клавиатуры
Составить программы, с помощью которых: -сформировать текстовый файл из строк, которые должны быть...

Сформировать файл из целых чисел, которые должны быть введены с клавиатуры
-сформировать файл из целых чисел, которые должны быть введены с клавиатуры. -исключить из файла...

Сформировать файл из вещественных чисел, которые должны быть введены с клавиатуры
Составить программы, с помощью которых: - сформировать файл из вещественных чисел, которые должны...


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

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