Форум программистов, компьютерный форум, киберфорум
Наши страницы

классы и объекты. структура-пара - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Метод Монте-Карло http://www.cyberforum.ru/cpp-beginners/thread408389.html
Подскажите правильно ли реализована программа на С++ Builder? N стрелков стреляют поочередно по одной мишени. Стрельба ведется до первого попадания. Вероятность попасть в мишень для каждого...
C++ Вылетаеет компилятор ошибок ни каких нет,может где то надо поставит return 0 или getch () #include "stdafx.h" #include <iostream>//i/o #include <conio.h> //getch #include <cmath> //fabs, abs #include <stdlib.h>... http://www.cyberforum.ru/cpp-beginners/thread408371.html
Простейшая Графика в C++ C++
Добрый вечер! Есть массив данных (чисел). Подскажите, как в С++ реализовать построение графика по этим точкам.
C++ файлы
Написать программу, которая считывает текст из файла и записывает его в новый файл, заменив первую букву в каждом слове на прописную . Текстовый файл создать в блокноте. помогите пожайлуста
C++ Как работает оператор new? http://www.cyberforum.ru/cpp-beginners/thread408363.html
Обязательно ли использовать оператор delete в коде (см.ниже.).После использования оператора new старая область память выделенная для pStr разве автоматически не затрётся? Есть код: ...
C++ Описать структуру. Погомогите пожалуйста. Описать структуру с именем WORKER, содержащую следующие поля: фамилию и инициалы работника; название занимаемой должности; год поступления на работу. Написать программу выполняющую следующие... подробнее

Показать сообщение отдельно
Bers
Заблокирован
19.12.2011, 09:49
Цитата Сообщение от s92p Посмотреть сообщение
трудность с 1. Init. как реализовать этот метод???
По заданию метод должен проконтролировать валидность аргументов.
А какие аргументы валидны?

Смотрим задание:
Цитата Сообщение от s92p Посмотреть сообщение
поле first- дробное положительное число
Цитата Сообщение от s92p Посмотреть сообщение
поле second - дробное положительное число
Метод должен проконтролировать, что введенное число - дробное, и положительное.

Как это можно сделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Init(double a,double b)
    {
        //так как метод принимает только 
       //дробный тип данных
       //то априори данным-членам класса будит 
       //присвоено только дробные значения
        //поэтому первое требование задания 
       //(должны быть дробными) - выполнено.
 
        if(a<=0|| b<=0)   //данная проверка пропустит
                                  // только положительные числа
        {
             std::cout << "ОШИБКА! Аргументы должны быть больше нуля!\n";
             first=1; second=1; return;   //результатом выполнения функции 
                            //всегда будут положительные числа
                            //Поэтому, второе требование задания выполнено.
         }
        first=a;    second=b;
    }
Поскольку данный метод - своего рода сеттер данных класса, то использовать его нужно везде, где нужно проконтролировать валидность входящих данных. Поэтому, метод Read() нужно переписать вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
 void read()
    {
 
        double _f, _s;
        cout << "Введите катет А: ";
        cin >> _f;
        cout << "Введите катет В: " ;
        cin >> _s;
        Init(_f,_s); //теперь мы можем быть уверены, 
                        //что класс не пропустит не_корректные данные 
                        //от пользователя
    }
Добавлено через 10 минут
Но и этого не достаточно. Если сеттер может потенциально забраковать входящие аргументы, то он должен уметь сообщить об этом вызывающей стороне:

C++
1
2
3
4
5
6
7
8
9
10
11
int Init(double a,double b)
    {
        if(a<=0|| b<=0) 
        {
             std::cout << "ОШИБКА! Аргументы должны быть больше нуля!\n";
             first=1; second=1; return 1;   //вызывающая сторона получит ответ - 1.
                                      // Что значит, что сеттер пофиксил неисправность
         }
        first=a;    second=b; 
        return 0; //если вернётся ноль, значит все в порядке
    }
Теперь научим пользователя вводить то что нужно, а не все подряд:
C++
1
2
3
4
5
6
7
8
9
10
11
void read()
    {
       double _f, _s;
      do  
      {
             cout << "Введите катет А: ";   cin >> _f;
             cout << "Введите катет В: " ;   cin >> _s;
      }while ( Init(_f,_s)==1 );    //если сеттер вернёт ошибку,
                                          // заставим пользователя вводить 
                                         //нормальные данные заново!
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru