Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
2 / 2 / 0
Регистрация: 17.11.2013
Сообщений: 96
1

Даны три действительных числа, выбрать (вывести на экран) те из них, которые пренадлежат интервалу

18.11.2013, 21:31. Просмотров 1704. Ответов 12
Метки нет (Все метки)

Задание такое: Даны три действительных числа, выбрать (вывести на экран) те из них, которые пренадлежат интервалу (4,7)... При написании кода использовать указатели и функцию возвращающую более одного результата...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2013, 21:31
Ответы с готовыми решениями:

Даны три действительных числа, выбрать из них те, которые принадлежат интервалу от 1 до 3
Даны три действительных числа, выбрать из них то которые принадлежат интервалу от 1 до 3....

Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1,3) и найти большее из них
Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1,3) и найти...

Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1,3)
Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1,3).

Даны три действительных числа, выбрать из них то которые принадлежат интервалу
Даны три действительных числа, выбрать из них то которые принадлежат интервалу от 1 до 3....

12
1 / 1 / 0
Регистрация: 18.11.2013
Сообщений: 33
18.11.2013, 22:14 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
49
50
51
52
53
54
55
56
57
#include <iostream> // Подключаем потоки
#include <vector>   // Подключаем векторы
 
// Создаем возвращаемую структура для массива
struct ARRAY
{
    double *_val; // Первый элемент
    size_t  _size;  // Размер массива
};
 
// Функция, возвращающая структуру подходящих величин
ARRAY* fFindBeyond(ARRAY *l_array)
{
    // Переменная для подсчета количества подходящих элементов
    size_t _count = 0;
 
    // Первый проход массива
    for(size_t i = 0; i<l_array->_size; i++)
        if(l_array->_val[i] > 4.0 && l_array->_val[i]<7.0) _count++;
 
    // Создаем структуру
    ARRAY *_result  = new ARRAY();
    _result->_size = _count;
    _result->_val = new double[_count];
 
    // Второй проход массива
    for(size_t i = 0, j=0; i<l_array->_size; i++)
        if(l_array->_val[i] > 4.0 && l_array->_val[i]<7.0)
        {
            _result->_val[j] = l_array->_val[i];
            j++;
        }
 
    // Возвращаем результат
    return _result;
}
 
int main()
{
    // Создаем массив
    ARRAY _array;
    _array._val  = new double[3];
    _array._size = 3;
 
    // Заполняем его
    _array._val[0] = 1.2;
    _array._val[1] = 4.3;
    _array._val[2] = 6.5;
 
    // Находим результат
    ARRAY *_result;
    _result = fFindBeyond(&_array);
 
    // Выводим
    for(size_t i = 0; i<_result->_size; i++)
        std::cout<<_result->_val[i]<<std::endl;
}
Реализация, в общем-то, примитивная, но для разового использования в качестве результата лабораторной работы вполне сгодится.
0
2 / 2 / 0
Регистрация: 17.11.2013
Сообщений: 96
19.11.2013, 03:46  [ТС] 3
Всем привет! Срочно нужна помощь!
Задание такое:
Сколько существует четырехзначных чисел, кратных 45, две средние цифры которых 7 и 9? Напечатать общее количество и сами числа. Напишите функцию, определяющую, удовлетворяет ли число заданному критерию.
Использовать функции (возвращающие более одного результата) и указатели...
0
457 / 382 / 326
Регистрация: 05.11.2013
Сообщений: 1,043
Записей в блоге: 6
19.11.2013, 06:53 4
Цитата Сообщение от Kostia1012 Посмотреть сообщение
Использовать функции (возвращающие более одного результата) и указатели...
ишь ты, еще и срочно... если числа 4-значные, просто перебери их и проверь той самой функцией.
зачем ей возвращать более 1 результата и работать с указателем - неясно совершенно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int f45 (int n) {
 int d2 = (n%1000)/100;
 int d3 = (n%100)/10;
 return (n%45==0 && ((d2==7 && d3==9) || (d3==7 && d2==9)) ? 1 : 0);
}
#include <iostream.h>
int main () {
 int i,k=0;
 for (i=1000; i<10000; i++) if (f45(i)) { k++; cout << i << " "; }
 cout << endl << "Всего: " << k;
 cin.get();
 return 0;
}
2790 2970 6795 6975
Всего: 4
0
2 / 2 / 0
Регистрация: 17.11.2013
Сообщений: 96
19.11.2013, 10:15  [ТС] 5
А как сделать с функцией возвращающую более одной переменной и указателем?...
0
2 / 2 / 0
Регистрация: 17.11.2013
Сообщений: 96
19.11.2013, 10:17  [ТС] 6
Нужно без массива... Эти числа вводит сам пользователь, они проверяются...
0
Почетный модератор
Эксперт С++
5838 / 2846 / 390
Регистрация: 01.11.2011
Сообщений: 6,883
19.11.2013, 10:21 7
Kostia1012, в C++ непосредственно функция не может вернуть более одного значения. А вот с помощью указателей вполне.
1
1 / 1 / 0
Регистрация: 18.11.2013
Сообщений: 33
19.11.2013, 10:35 8
Тогда так:

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
#include <iostream> // Подключаем потоки
 
// Создаем возвращаемую структура для массива
struct ARRAY
{
    double *_val; // Первый элемент
    size_t  _size;  // Размер массива
};
 
// Функция, возвращающая структуру подходящих величин
ARRAY* fFindBeyond(ARRAY *l_array)
{
    // Переменная для подсчета количества подходящих элементов
    size_t _count = 0;
 
    // Первый проход массива
    for(size_t i = 0; i<l_array->_size; i++)
        if(l_array->_val[i] > 4.0 && l_array->_val[i]<7.0) _count++;
 
    // Создаем структуру
    ARRAY *_result  = new ARRAY();
    _result->_size = _count;
    _result->_val = new double[_count];
 
    // Второй проход массива
    for(size_t i = 0, j=0; i<l_array->_size; i++)
        if(l_array->_val[i] > 4.0 && l_array->_val[i]<7.0)
        {
            _result->_val[j] = l_array->_val[i];
            j++;
        }
 
    // Возвращаем результат
    return _result;
}
 
int main()
{
    // Создаем массив
    ARRAY _array;
    _array._val  = new double[3];
    _array._size = 3;
 
    // Вводим числа
    for(size_t i=0; i<_array._size; i++)
    {
        std::cout<<"Please input value "<<i+1<<": ";
        std::cin>>_array._val[i];
    }
 
 
    // Находим результат
    ARRAY *_result;
    _result = fFindBeyond(&_array);
 
    // Выводим
    std::cout<<std::endl<<"Result:"<<std::endl;
    for(size_t i = 0; i<_result->_size; i++)
        std::cout<<_result->_val[i]<<std::endl;
}
0
Почетный модератор
Эксперт С++
5838 / 2846 / 390
Регистрация: 01.11.2011
Сообщений: 6,883
19.11.2013, 10:42 9
Пыщь
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
#include <math.h>
#include <iostream.h>
 
#define THREE 3
#define LIMMIN 4
#define LIMMAX 7
 
bool ret3Num( double &x1, double &x2, double &x3, bool *flag3Num )
{
bool retValue = false;
 
  if( x1 > LIMMIN && x1 < LIMMAX ) { flag3Num[0] = true; retValue = true; }
  if( x2 > LIMMIN && x2 < LIMMAX ) { flag3Num[1] = true; retValue = true; }
  if( x3 > LIMMIN && x3 < LIMMAX ) { flag3Num[2] = true; retValue = true; }
 
return retValue;
}
 
int main()
{
double x1, x2, x3;
 cin >> x1;
 cin >> x2;
 cin >> x3;
 
bool flag3Num[THREE] = {false};
 
cout << endl;
if( ret3Num( x1, x2, x3, flag3Num ) )
  {
  if( flag3Num[0] ) cout << x1 << endl;
  if( flag3Num[1] ) cout << x2 << endl;
  if( flag3Num[2] ) cout << x3 << endl;
  }
else
  {
  cout << "No one";
  }
 
cin.ignore(2);
return 0;
}
1
2 / 2 / 0
Регистрация: 17.11.2013
Сообщений: 96
19.11.2013, 10:42  [ТС] 10
Так я же говорю, что без массива надо...
0
2 / 2 / 0
Регистрация: 17.11.2013
Сообщений: 96
19.11.2013, 10:48  [ТС] 11
А как это сделать, подскажите?...
0
Почетный модератор
Эксперт С++
5838 / 2846 / 390
Регистрация: 01.11.2011
Сообщений: 6,883
19.11.2013, 10:52 12
Совсем-совсем без массива
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
#include <math.h>
#include <iostream.h>
 
#define LIMMIN 4
#define LIMMAX 7
 
bool ret3Num( double &x1, double &x2, double &x3, bool &flag1Num, bool &flag2Num, bool &flag3Num )
{
bool retValue = false;
 
  if( x1 > LIMMIN && x1 < LIMMAX ) { flag1Num = true; retValue = true; }
  if( x2 > LIMMIN && x2 < LIMMAX ) { flag2Num = true; retValue = true; }
  if( x3 > LIMMIN && x3 < LIMMAX ) { flag3Num = true; retValue = true; }
 
return retValue;
}
 
int main()
{
double x1, x2, x3;
 cin >> x1;
 cin >> x2;
 cin >> x3;
 
bool flag1Num = false, flag2Num = false, flag3Num = false;
 
cout << endl;
if( ret3Num( x1, x2, x3, flag1Num, flag2Num, flag3Num ) )
  {
  if( flag3Num1 ) cout << x1 << endl;
  if( flag3Num2 ) cout << x2 << endl;
  if( flag3Num3 ) cout << x3 << endl;
  }
else
  {
  cout << "No one";
  }
 
cin.ignore(2);
return 0;
}
0
457 / 382 / 326
Регистрация: 05.11.2013
Сообщений: 1,043
Записей в блоге: 6
19.11.2013, 13:55 13
Спорю, он скажет, что это неправильно

Не по теме:

Блин, во бред-то

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2013, 13:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу
1. Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1,3) 2....

Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1, 3)
Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1, 3).

Даны три вещественных числа. Вывести на экран те из них, которые принадлежат интервалу (1,6-3,8)
помогите пожалуйста

Даны три вещественных числа. Вывести на экран те из них, которые принадлежат интервалу
Было задание: Даны три вещественных числа. Вывести на экран: а) те из них, которые принадлежат...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.