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

Определить, существует ли треугольник со сторонами a, b, c - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ класс Символьное дифференцирование. http://www.cyberforum.ru/cpp-beginners/thread65209.html
Помогите пожалуйста с созданием такого класса. НОВЫЕ ПОНЯТИЯ: наследование, виртуальные методы. Реализовать абстрактный класс Expression с чисто виртуальными методами Expression *diff(); void print(); реализовать классы Number, Variable, Add (сумма), Sub (разность) с реализациями операции diff (дифференцирование) и print (печать на экран). Пример: Expression *e = new Add(new Number(1),...
C++ Надо решить контрольную. Помогите пожалуйста решить контрольную работу по информатике: 1) Написать программу на языке Visual Studio 2008, которая бы принимала в себя два числа, а затем делала бы их сложения. 2) Написать программу, которая бы сщитала окружность по ширине радиуса. 3)Написать программу, которая бы определяла вид переменной, которую принимает. Если можно объясните, как выучить язык Visual Studio... http://www.cyberforum.ru/cpp-beginners/thread65177.html
Несколько заданий - действия над числами C++
Если кто может, может поможет?? не успеваю и не знаю как это делать пока.... Задача 1: Написать программу на Си для решения задачи в соответствии с вариантом. Варианты: 16) Вводиться трехзначное число. Определить: а) больше ли числа а сумма его цифр; б) кратна ли сумма его цифр числу а. Число а вводиться с клавиатуры. Задача 2: Написать программу на Си для решения задачи в соответствии с...
C++ Рекурсия:написать функцию которая возвращает степень числа
помогите написать рекурсию которая возводит число в степень..из книги Напишите рекурсивную функцию которая возводит число в степень путем многократного умножения числа самого на себя,напрмер если ввели число 2 и степень 4 то ответ должен быть 16 у меня геморня с рекурсией,не могу представить как работает
C++ Конечный автомат http://www.cyberforum.ru/cpp-beginners/thread65156.html
реализовать метод поиска строки в текстовом файле с помощью конечного автомата
C++ Упорядочивание массивов Помогите, пожалуйста, решить задачу... Написать программу упорядочивание массивов типа int, float и complex по убыванию. Функции, упорядочивающие массивы имеют одно и тоже имя. Это надо в с++ в Visual Studio подробнее

Показать сообщение отдельно
Neys
-1 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 14
28.11.2009, 19:02     Определить, существует ли треугольник со сторонами a, b, c
При работе над программой с массивами возник такой вот вопрос: ввожу элементы масива из файла с помощью ifstream. Программа сделана так, что в файле первый элемент должен был указывать число элементов массива, над которыми будут производиться операции. Столкнулся с проблемой: файл создан, но он пустой. Тогда вылетает ошибка. Как можно её предотвратить? Можно ли сделать ввод из файла, не указывая первым элементом число всех элементов массива?

Фрагмент программы:
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <iostream>
#include <fstream>
#include <sstream>
#include <cfloat>
#include <cmath>
 
using namespace std;
 
bool StrToNum (string sz, int & number)
{
    istringstream stream(sz);
    stream >> number;
    return (!stream.fail()) && (int(stream.tellg()) == sz.length()) && (number >= 0);
}
 
bool StrToNum (string sz, float & number)
{
    istringstream stream(sz);
    stream >> number;
    return (!stream.fail()) && (int(stream.tellg()) == sz.length()) && (fabs(number) <= FLT_MAX);
}
 
bool ReadNumber (int & x)
{
    string a;    
    do
    {
        cin >> a;
        if (StrToNum(a, x)) break;
        cout << endl << "Число введено неверно или оно не входит в допустимый диапозон значений!" << endl
             << "Повторите ввод." << endl << endl;
    }
    while (true);
    return true;
}
 
bool ReadNumber (float & x)
{
    string a;    
    do
    {
        cin >> a;
        if (StrToNum(a, x)) break;
        cout << endl << "Число введено неверно или оно не входит в допустимый диапозон значений!" << endl
             << "Повторите ввод." << endl << endl;
    }
    while (true);
    return true;
}
 
int ProgramSecondBody()
{
        ifstream first("first.txt");
        ifstream second("second.txt");
 
        if(!first.is_open())
        {
                cout << "Ошибка! Файл first.txt не найден!" << endl << endl;
                cin.get();
                cin.get();
                return 0;
        }
        if(!second.is_open())
        {
                cout << "Ошибка! Файл second.txt не найден!" << endl << endl;
                cin.get();
                cin.get();
                return 0;
        }
        float *masA, *masB, min1, min2, max, count=0;
        int  n, m, i;
        bool fl = true;
 
        first >> n;
        second >> m;
 
        masA = new float[n];
        
        if (!masA)
        {
                cout << "Программе не хватает памяти для работы!" << endl;
                delete [] masA;
                cin.get();
                cin.get();
                return 1;
        }
        
        masB = new float[m];
 
        if (!masB)
        {
                cout << "Программе не хватает памяти для работы!" << endl;
                delete [] masB;
                cin.get();
                cin.get();
                return 1;
        }
        
        for(int i = 0; i < n; i++)
                first >> masA[i]; 
 
        for(int i = 0; i < m; i++)
                second >> masB[i];
                
        cout << "Внимание! При наличии ошибок в файле содержимое может отображаться некорректно." << endl << endl
        << "Исходный массив 1:" << endl;
             for(i = 0; i < n; i++)
                 cout << masA[i] << " " << endl;
                 
        cout << endl << "Исходный массив 2:" << endl;
             for(i = 0; i < m; i++)
                 cout << masB[i] << " " << endl;
        
        min1 = masA[0]; //Начало поиска минимального элемента
        for(i = 0; i < n; i++)
            if(min1 > masA[i])
                min1 = masA[i];
                min2 = min1-1;
                max = masA[0];
                for(i = 0; i < n; i++)
                         if(max < masA[i])
                         max = masA[i];
                while(fl && count <= n)
                {
                        fl = false;
                        min1 = max;
                        for(i = 0; i < n; i++)
                                 if(min1 > masA[i] && masA[i] > min2)
                                 min1 = masA[i];
                        for(i = 0; i < m; i++)
                                 if(min1 == masB[i])
                                        {
                                                fl = true;
                                                min2 = min1;
                                        }
                        count++;
                }
                if (count == n+1)
                        cout << endl << "Искомого элемента нет." << endl
                        << "Для выхода нажмите Ctrl+C." << endl;
                else
                        cout << endl << "Искомый элемент равен " << min1 << "." << endl
                        << "Для выхода нажмите Ctrl+C." << endl;
        cin.get();
        cin.get();
        return 0; 
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru