Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/114: Рейтинг темы: голосов - 114, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 19.11.2009
Сообщений: 7

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

19.11.2009, 09:22. Показов 23432. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1) поределить существует ли треугольник со сторонами a,b,c, и если существует,то является ли он равносторонним,равнобедренным или разносторонним
2) вычислить r=p!где P третье число делящееся на 9 в диапазоне от 20 до 100
3)вывести на экран третье,пятое и шестое число,кратное 3и 7 в диапазоне от 120 до 270
4)задан массив Z(n) целых чисел.удалить из массива наибольший и наименьший элементы.в преобразованом массиве найти среднее арифметическое тени наибольших элементов.
5)задан массив z(k) целых чисел.поределить в массиве количество простых двухзначных чисел.если таких чисел больше двух,удалить их из массива.проверить,изменился ли максимальный элемент массива
заранее благодарен за помощь!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2009, 09:22
Ответы с готовыми решениями:

Определить, существует ли треугольник со сторонами a, b, c
Задача: Определить, существует ли треугольник со сторонами a, b, c. Примечание: Стороны a, b, c вводятся с клавиатуры

Определить, существует ли треугольник с заданными сторонами
Даны три натуральных числа A, B, C. Определите, существует ли треугольник с такими сторонами. Если треугольник существует, выведите строку...

Определить, существует ли треугольник с заданными сторонами, и если “да”, то определить его тип
Даны три натуральных числа — длины стороны треугольника. Определите, существует ли треугольник с такими сторонами, и если “да”, то...

28
Быдлокодер
 Аватар для Darky
512 / 298 / 85
Регистрация: 22.11.2009
Сообщений: 892
22.11.2009, 15:08
Студворк — интернет-сервис помощи студентам
2) вычисление факториала 45.
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <iostream.h>
const int maxElem=99999;
 
int main(int argc, char* argv[])
{
printf("-----------------------------------");
printf("Naxogdenie factoriala\n");
printf("");
int BigElem=0;
int fact;// факториал, который нужно найти(вводится пользователем)
int sizeEl=0;//размер числа(факториала)
int num[maxElem];//факториал в виде массива
int numtmp[maxElem];//временный массив для хранения промежуточного факториала
for(int pp=0;pp<maxElem;pp++)//цикл инициализации массивов
{num[pp]=0;numtmp[pp]=0;}
num[0]=1;
numtmp[0]=1;
printf("Vvedite chislo factorial kotorogo nado poschitat: ");
scanf("%i",&fact);
printf("Start search factorial %i\n ",fact);
for(int i=1;i<fact;i++)
{//for 1 st
cout<<i*100/fact<<"%"<<'\r';// вывод процента выполненых работ
for(int tm=0;tm<=sizeEl;tm++){numtmp[tm]=num[tm];}
for(int j=1;j<=i;j++)
{//for 2 st
    for(int k=0;k<=sizeEl;k++)
    {
num[k]=num[k]+numtmp[k];
if(num[k]>9)
{//st if 1
    num[k+1]=num[k+1]+num[k]/10;num[k]=num[k]-(num[k]/10*10);
    if((k+1)>sizeEl){sizeEl++;if(sizeEl>maxElem-1){i=fact+1;j=i+1;BigElem=-1;};break;}
}//if 1 end
    }
}//for 2 end
 
}//for 1 end
if(BigElem==-1)
{printf("Size of element is too big, Sorry...",&sizeEl);scanf("%i",fact);}
else
{
printf("Factorial of %i is : ",fact);
for(int t=sizeEl;t>=0;t--)//вывод числа на консоль
{printf("%i",num[t]);}         
}
printf("\n\n");
  system("pause");
}
Сделано для числа, вводимого с клавиатуры
1
-1 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 14
28.11.2009, 19:02
При работе над программой с массивами возник такой вот вопрос: ввожу элементы масива из файла с помощью 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; 
}
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
28.11.2009, 19:32
Столкнулся с проблемой: файл создан, но он пустой. Тогда вылетает ошибка.
Какая ошибка у Вас вылетает?

Можно ли сделать ввод из файла, не указывая первым элементом число всех элементов массива?
Вы имеете ввиду если в файле будут записаны просто элементы массива?
0
-1 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 14
29.11.2009, 03:32
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Какая ошибка у Вас вылетает?
при использовании MS Visual 2008 вылетает "Debug Error. Invalid allocation size: 4294967285 bytes".
Используя Dev-CPP, при запуске программы на экране в столбец проставляются нули.

Цитата Сообщение от valeriikozlov Посмотреть сообщение
Вы имеете ввиду если в файле будут записаны просто элементы массива?
Да, именно это я и хотел спросить.
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
29.11.2009, 09:55
Да, действительно, так все и есть (проверил на 2008, Dev-CPP у меня отсутствует). А происходит это вот почему:
строки 75 и 76 Вашего кода
C++
1
2
        first >> n;
        second >> m;
здесь вы считываете первые числа из first.txt и second.txt, а затем динамически выделяете память
строка 78:
C++
1
masA = new float[n];
и строка 89:
C++
1
 masB = new float[m];
Если у Вас в файлах first.txt и second.txt числа есть (а значит и в переменных n и m тоже), то память будет выделена. Но если в файлах отсутствуют числа (и в переменных n и m значит тоже отсутствуют значения), то тогда выдается именно такая ошибка. Так и должно быть.
Теперь ответы на Ваши вопросы:
Цитата Сообщение от Neys Посмотреть сообщение
Столкнулся с проблемой: файл создан, но он пустой. Тогда вылетает ошибка. Как можно её предотвратить?
Записать в файлы first.txt и second.txt необходимые значения.

Цитата Сообщение от Neys Посмотреть сообщение
Можно ли сделать ввод из файла, не указывая первым элементом число всех элементов массива?
Можно, но тогда нужно будет два раза считывать данные из каждого файла - первый раз считывая, вычисляем кол-во элементов в файле и заносим это значение в переменную n или m соответственно. Затем выделяем динамически память (как у Вас и сделано) используя значение n или m. Затем считываем сами элементы из файла.
1
-1 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 14
29.11.2009, 10:02
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Первый раз считывая, вычисляем кол-во элементов в файле и заносим это значение в переменную n или m соответственно.
Подскажите, как это можно сделать?
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
29.11.2009, 10:28
Вообще-то это не самый лучший способ. Проще, если бы Вы считывали сначало кол-во элементов массива, а потом сами элементы в уже созданный массив. Ну ладно, вот Вам вариант:
После того как открыли файл
C++
1
2
3
4
5
    while(!first.eof())
        {
            first>>count;
            n++;
        }
На этом этапе у Вас в n количество чисел в массиве. Здесь Вы создаете (с помощью оператора new свой массив). Затем так:
C++
1
2
3
4
5
6
7
8
    first.clear();
    first.seekg(0);
                       i=0;
        while(!first.eof())
        {
            first>>masA[i];
                                  i++;
        }
Можно эту часть и не через while а через for описать. Аналогично и для второго файла и массива.
0
0 / 0 / 0
Регистрация: 28.10.2009
Сообщений: 9
04.12.2009, 20:21
А не подскажите алгоритм нахождения мин. элемента? Как я понял, за минимальный берем первый элемент, потом сравниваем его со следующим, а что дальше, я не допонимаю. В частности, для чего max и count.
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
05.12.2009, 07:41
Beg1ner, Я так понимаю, что Вас интересует код в строках: 115-144.
Вот этот кусок кода с комментариями:
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
       min1 = masA[0]; //Начало поиска минимального элемента
        for(i = 0; i < n; i++)
            if(min1 > masA[i])
                min1 = masA[i];
                min2 = min1-1; // вот в этом месте минимальное значение массива masA[] находится в переменной min1, и переменной min2 присваивается значение на 1 меньше чем min1 
                max = masA[0];
                for(i = 0; i < n; i++)
                         if(max < masA[i])
                         max = masA[i];
                while(fl && count <= n) // в этой строке максимальное значение массива masA[] в max
                {
                        fl = false;
                        min1 = max; // в переменной min1 теперь максимальное значение массива masA[]
                        for(i = 0; i < n; i++) // после этого цикла min1 снова минимальное значение masA[]
                                 if(min1 > masA[i] && masA[i] > min2)
                                 min1 = masA[i];
                        for(i = 0; i < m; i++) // в этом цикле идет сравнение min1 со всеми элементами массива masB, если хоть раз будет совпадение, то выполнится условие в скобках. Если нет то будет выход из цикла while(fl && count <= n)
                                 if(min1 == masB[i])
                                        {
                                                fl = true;
                                                min2 = min1;
                                        }
                        count++; // повышается на единицу
                }
                if (count == n+1) // это условие получается выполнится, если в массиве masA нет одинаковых элементов, и если все элементы массива masA, присутствуют в массиве masB
                        cout << endl << "Искомого элемента нет." << endl
                        << "Для выхода нажмите Ctrl+C." << endl;
                else // это условие выполнится, когда в min1 будет самое минимальное значение массива masA[] которого нет в массиве masB[]
                        cout << endl << "Искомый элемент равен " << min1 << "." << endl
                        << "Для выхода нажмите Ctrl+C." << endl;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.12.2009, 07:41

Выяснить существует ли треугольник со сторонами x,y,z , и определить его вид
Даны действительные положительные числа x,y,z . Выяснить существует ли треугольник со сторонами x,y,z , и определить его вид.

Программа, определяющая, существует ли треугольник со сторонами a, b, c, и является ли он тупоугольным
Даны вещественные положительные числа a, b, c. Составить программу, определяющую: существует ли треугольник со сторонами a, b, c, и...

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

Определить, является ли треугольник со сторонами a, b, c равносторонним
1.Определить, является ли треугольник со сторонами a, b, c равносторонним.

Определить существует ли треугольник со сторонами а, b, c и если существует, то является ли он равностонним равнобедренным или разносторонним
Определить существует ли треугольник со сторонами а, b, c и если существует, то является ли он равностонним равнобедренным или...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru