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

Попадание точки. Массивы чисел. Массивы записей. - C++

Восстановить пароль Регистрация
 
IseeYOU
 Аватар для IseeYOU
6 / 6 / 0
Регистрация: 14.01.2010
Сообщений: 42
13.05.2010, 14:39     Попадание точки. Массивы чисел. Массивы записей. #1
Всем привет. По языкам задали три контрольные на си. Я сам си не знаю, даже не представляю, поэтому очень нужна ваша помощь.

Контрольная 1:
1. Прочитать текст приведенного задания.
2. Определить исходные данные и результаты.
3. Определить формулы для границ приведенных областей.
4. Записать условие попадания точки в выделенные области как отдельную переменную типа boolean.
5. Написать текст программы.
6. Подготовить тестовые примеры для все вариантов ветвления.
7. Выполнить программу для тестовых данных.
8. Оформить отчет.


Даны числа a и b. Определить, попадет ли точка с координатами (a, b) в заштрихованную область и вывести на экран соответствующее сообщение.
Если точка попадет в эту область, вычислить z по формуле

Если точка не попадет в эту область, вычислить z согласно условию

. . . [ 0.1*a если a>b
z= <|
. . . [ 0.1*b если a=<b
Рисунок прилагается.









Контрольная 2:

Даны целочисленные массивы X и Y с разным количеством элементов. Найти максимальные элементы в этих массивах среди элементов, имеющих нечетный индекс. Ввод массивов выполнять в процедуре, а нахождение максимального элемента – в функции.





Контрольная 3:

Дан список товаров, содержащий следующие данные: название товара, стоимость покупки, стоимость продажи, количество проданного товара. Найти прибыль от каждого товара. Вывести список товаров с прибылью выше средней.




Заранее ооочень благодарен за помощь.
Миниатюры
Попадание точки. Массивы чисел. Массивы записей.  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
13.05.2010, 15:16     Попадание точки. Массивы чисел. Массивы записей. #2
Давайте начнем с вопросов, язык си или С++?

Задача 2:
Добавлено через 23 минуты
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
//Даны целочисленные массивы X и Y с разным количеством элементов. 
//Найти максимальные элементы в этих массивах среди элементов, имеющих нечетный индекс. 
//Ввод массивов выполнять в процедуре, а нахождение максимального элемента – в функции.
#include<iostream>
using namespace std;
void Find(int masx[],int masy[], int n, int q)
{
    int maxx,maxy;
    maxx=masx[0];
    maxy=masy[0];
    for(int i=1;i<n;i+=2)
    {
        if(maxx<masx[i])
            maxx=masx[i];   
    }
    for(int i=1;i<q;i+=2)
    {
        if(maxy<masy[i])
            maxy=masy[i];   
    }
    printf("%s%d\n","Максимальный эелемент массива Х равен: ",maxx);
    printf("%s%d\n","Максимальный эелемент массива Y равен: ",maxy);
 
}
void main()
{
    setlocale(LC_CTYPE,"Rus");
    const int n=10;
    const int q=8;
    int massx[n];
    int massy[q];
    for(int i=0;i<n;i++)
    {
        printf("%s%d%s","Введите ",i+1," элемент Х массива ");
        scanf("%d",&massx[i]);  
    }
        for(int i=0;i<q;i++)
    {
        printf("%s%d%s","Введите ",i+1," элемент Y массива ");
        scanf("%d",&massy[i]);  
    }
        printf("%s\n","Массив Х");
        for(int i=0;i<n;i++)
    {
        printf("%d\t",massx[i]);    
    }
        printf("\n%s\n","Массив Y");
        for(int i=0;i<q;i++)
    {
        printf("%d\t",massy[i]);    
    }
        printf("\n");
        Find(massx,massy,n,q);
 
 
 
}
Добавлено через 8 минут
в код внесены изменения
IseeYOU
 Аватар для IseeYOU
6 / 6 / 0
Регистрация: 14.01.2010
Сообщений: 42
14.05.2010, 14:23  [ТС]     Попадание точки. Массивы чисел. Массивы записей. #3
Язык C++

Добавлено через 21 час 31 минуту
Разобрался, работает спсибо)))
Помогите плиз с остальными((((
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
30.08.2010, 10:59     Попадание точки. Массивы чисел. Массивы записей. #4
1:
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
#include <iostream>
#include <cstdlib>
#include <cmath>
 
/*
 * Даны числа a и b. Определить, попадет ли точка с координатами (a, b) в заштрихованную область и вывести на экран соответствующее сообщение.
 * Если точка попадет в эту область, вычислить z по формуле
 
 * Если точка не попадет в эту область, вычислить z согласно условию
 
 * . . . [ 0.1*a если a>b
 *   z= <|
 * . . . [ 0.1*b если a=<b
 */
 
struct point
{
    double x;
    double y;
};
 
bool hit(const point& givenPoint)
{
    static const double rad = 20;
    static const double lim = 10;
    return ((fabs(givenPoint.x) <= lim) &&
            (givenPoint.x * givenPoint.x + givenPoint.y * givenPoint.y <= rad * rad));
}
 
int main()
{
    point pt;
    double z;
    std::cout << "Input the coordinates of the point" << std::endl;
    std::cout << "Input the x-coordinate: ";
    std::cin >> pt.x;
    std::cout << "Input the y-coordinate: ";
    std::cin >> pt.y;
    std::cout << "The point (" << pt.x << "; " << pt.y << ") ";
    if(hit(pt))
        std::cout << "hit the specified area" << std::endl;
    else
    {
        std::cout << "didn\'t hit the specified area" << std::endl;
        std::cout << "Calculating z..." << std::endl;
        z = 0.1 * (pt.x > pt.y ? pt.x : pt.y);
        std::cout << "z = " << z << std::endl;
    }
    return EXIT_SUCCESS;
}
3:
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <iostream>
#include <cstdlib>
#include <string>
#include <deque>
#include <fstream>
#include <iterator>
#include <sstream>
 
/*
 * Дан список товаров, содержащий следующие данные: название товара, стоимость
 * покупки, стоимость продажи, количество проданного товара. Найти прибыль от
 * каждого товара. Вывести список товаров с прибылью выше средней.
 */
 
class goods
{
 
public:
 
    goods(const std::string& name, double buyPrice, double sellPrice, size_t cnt)
        : m_sName(name), m_fbPrice(buyPrice), m_fsPrice(sellPrice), m_nCnt(cnt)
    {}
 
    double profit() const
    {
        return (m_fsPrice - m_fbPrice) * m_nCnt;
    }
 
    std::string name() const
    {
        return m_sName;
    }
 
private:
 
    std::string m_sName;
    double      m_fbPrice;
    double      m_fsPrice;
    size_t      m_nCnt;
};
 
class goodsList
{
 
public:
 
    goodsList()
    {}
 
    typedef std::deque<goods>::size_type        size_type;
    typedef std::deque<goods>::reference        reference;
    typedef std::deque<goods>::iterator         iterator;
 
    size_type size() const
    {
        return m_dGoods.size();
    }
 
    reference operator[](size_t index)
    {
        return m_dGoods.at(index);
    }
 
    iterator begin()
    {
        return m_dGoods.begin();
    }
 
    iterator end()
    {
        return m_dGoods.end();
    }
 
    double averageProfit()
    {
        double retVal = 0;
        for(std::deque<goods>::const_iterator it = m_dGoods.begin();
            it != m_dGoods.end();
            ++it)
            retVal += it->profit();
        return retVal / m_dGoods.size();
    }
 
    void push_back(const goods& rhs)
    {
        m_dGoods.push_back(rhs);
    }
 
private:
 
    std::deque<goods>   m_dGoods;
};
 
int main()
{
    const std::string inFile("input.txt");
    std::cout << "Opening file \'" << inFile << "\' for input." << std::endl;
    std::ifstream ifs(inFile.c_str());
    goodsList glist;
    if(!ifs)
    {
        std::cerr << "Can't open file \'" << inFile << "\' for input." << std::endl;
        return EXIT_FAILURE;
    }
    std::string line;
    while(std::getline(ifs, line))
    {
        if(ifs.bad())
        {
            std::cerr << "Error reading from file \'" << inFile << "\'" << std::endl;
            exit(EXIT_FAILURE);
        }
        std::istringstream iss(line);
        std::string name;
        double bP;
        double sP;
        size_t cnt;
        iss >> name >> bP >> sP >> cnt;
        goods g(name, bP, sP, cnt);
        glist.push_back(g);
    }
    double average = glist.averageProfit();
    std::cout << "Average profit = " << average << std::endl;
    std::cout << "Displaying goods names with profit above average:" << std::endl;
    for(goodsList::iterator it = glist.begin(); it != glist.end(); ++it)
        if(it->profit() > average)
            std::cout << it->name() << " : " << it->profit() << std::endl;
    return EXIT_SUCCESS;
}
Входной файл содержит записи в формате:
Код
название цена_покупки цена_продажи количество
Естественно, цена_покупки < цена_продажи
IseeYOU
 Аватар для IseeYOU
6 / 6 / 0
Регистрация: 14.01.2010
Сообщений: 42
30.08.2010, 20:02  [ТС]     Попадание точки. Массивы чисел. Массивы записей. #5
Спасибо огромное!!
Yandex
Объявления
30.08.2010, 20:02     Попадание точки. Массивы чисел. Массивы записей.
Ответ Создать тему
Опции темы

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