Форум программистов, компьютерный форум CyberForum.ru

Структура-пара - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
29.01.2011, 21:22     Структура-пара #1
Здравствуйте, форумчане.
Помогите пожалуйста с задачкой.Некоторые условия мне вообще не понятны, о них позже....
Вот где я сейчас:
Поле n дробное число, поле p целое число, показатель степени. Реализовать метод power() возведение
числа n в степень p. Метод должен правильно работать при всех допустимых значениях n и p .
...обязательно должны присутствовать:
ввод с клавиатуры read()
вывод на экран display()
метод инициализации init() ; метод должен контролировать значения аргументов на корректность

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cmath>
using namespace std;
struct Pair
{
    float n; // число
    int p; // степень
    void read(){ cout << "Введите число "; cin >> n; cout << "Введите степень(целое число)  " ; cin >> p; }
    void display() { cout << power(n,p); cout << endl;}
    float power(float n, int p){return pow(n, p);}
};
 
int main()
{
    setlocale(LC_ALL,"Rus");
    Pair obj1;
    while(1)
    {
    obj1.read();
obj1.display();
    }
}
Что то не нравится мне как я реализовал первые два пункта, особенно этот obj1
Может кто получше вариант предложит?

А вот с методом init() вообще не знаю как проверить что в переменную p вводится именно число и
именно целое. Помню в Basic с этим было просто -
PureBasic
1
if isnumber(p)
Спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
29.01.2011, 21:35     Структура-пара #2
Цитата Сообщение от TheMachinist Посмотреть сообщение
не знаю как проверить что в переменную p вводится именно число и
именно целое.
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
#include <iostream>
#include <string>
#include <sstream>
 
template<class T>
T  correct_input(const std::string&  prompt)
{
    for(;;)
    {
        std::cout << prompt;
        std::string  str_val;
        std::cin >> str_val;
        std::istringstream  ssin(str_val);
        T  val;
        if(ssin >> val)
        {
            std::string  tmp;
            if(!(ssin >> tmp))
                return  val;
            else
                std::cerr << "INPUT ERROR" << std::endl;
        }
        else
            std::cerr << "INPUT ERROR" << std::endl;
    }
};
 
int main()
{
    int n = correct_input<int>("Input int val: ");
    return 0;
}
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
29.01.2011, 22:45  [ТС]     Структура-пара #3
Народ, может кто-нибудь подскажет ????
Объявлена переменная типа int или float. Как реализовать проверку ввода чтобы вводилось только
число?(а не символ не слово и не еще что-нибудь)
Я два месяца не занимался С++, трудно все вспоминать. Мне бы только начать
asics спасибо конечно но в моем случае string не нужен.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
29.01.2011, 22:48     Структура-пара #4
TheMachinist, Ну тогда пробуй так
C++
1
2
3
4
5
6
int n;
std::cin >> n;
if(!std::cin)
{
    //ERORR
}
Сработает ошибка, если будет введенно не число.
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
31.01.2011, 19:33  [ТС]     Структура-пара #5
Сработает ошибка, если будет введенно не число.
Без цикла работает, а в бесконечном цикле зацикливается. А хотелось бы чтобы выводилось сообщение об ошибке и далее предлагалось ввести число.
Помогите пожалуйста. Для местных корифеев пустяк задачка то
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
31.01.2011, 19:44     Структура-пара #6
TheMachinist, Ну так в посте #2, как по мне, самый оптимальный вариант решение проблемы.
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
01.02.2011, 19:15  [ТС]     Структура-пара #7
asics прежде чем предлагать какое-либо решение не мешает проверить работает ли код
Буду очень признателен если лично ты оставишь мои посты без ответов.Спасибо

Народ, кто-нибудь занимался с задачником Лаптева? Условия первой же задачи вызывают непонятки.
То ли задачник дурацкий то ли я еще не дорос до этих задач ....
Вот условие задачи:
Структурой-парой называется структура с двумя полями , которые обычно имеют имена first и
second. Требуется реализовать тип данных с помощью такой структуры. Во всех заданиях обязательно
должны присутствовать:
1 метод инициализации init; метод должен контролировать значения аргументов на корректность.
2 ввод с клавиатуры read.
3 вывод на экран display.
Реализовать внешнюю функцию с именем make_mun(), где mun - тип реализуемой структуры. Функция должна получать в качестве аргументов значения для полей структуры и возвращать структуру требуемого типа. При передаче ошибочных параметров следует выводить сообщение и заканчивать работу.


Не понимаю зачем здесь функция init. Если речь идет о контроле ввода, то это можно сделать в read
Что касается внешней функции make_mun() вообще не пойму задания.

Я не прошу готового решения, помогите решить пожалуйста
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2011, 19:21     Структура-пара
Еще ссылки по теме:

C++ Структура-пара. Реализовать метод rangecheck() – проверку заданного числа
C++ Структура-пара Задача
Структура - пара: число и его степень C++

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

Или воспользуйтесь поиском по форуму:
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
01.02.2011, 19:21     Структура-пара #8
Цитата Сообщение от TheMachinist Посмотреть сообщение
asics прежде чем предлагать какое-либо решение не мешает проверить работает ли код
.....
Миниатюры
Структура-пара  
Yandex
Объявления
01.02.2011, 19:21     Структура-пара
Ответ Создать тему
Опции темы

Текущее время: 04:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru