Вопрос № 173119: Здравствуйте уважаемые эксперты! Помогите пожалуйста написать программы .Нужно создать программы по следующим условиям: 1. Задать генератором случайных чисел три вещественных числа в диапазоне от 0 до 10.0, которые соответствуют длинам сторон тре...
Вопрос № 173120: Здраствуйте, у меня снова вопрос о работе со строками, Если есть строка: "#Fusername#filename#musor" как мне из неё получить такую строку: "#Ffilename#musor" т.е. выбросить username, мне на ум приходит только такой способ: <...
Вопрос № 173132: Добрый день уважаемые эксперты. У меня вопрос. Как расшифровать такого типа запись в printf ? %10.7lf ...
Вопрос № 173119:
Здравствуйте уважаемые эксперты! Помогите пожалуйста написать программы .Нужно создать программы по следующим условиям: 1. Задать генератором случайных чисел три вещественных числа в диапазоне от 0 до 10.0, которые соответствуют длинам сторон треугольника. Нужно определить: ∙ можно ли их этих отрезков построить треугольник; ∙ какого вида треугольник (остроугольный, прямоугольный, тупоугольный, равносторонний, равнобедренный); ∙ определить величины углов треугольника. Для проверки
правильности работы программы предусмотреть возможность задания трёх чисел с клавиатуры. Вся информация о треугольника выводится на экран. 2. Найти корень нелинейного уравнения методом деления отрезка пополам Деление отрезка пополам. Пусть функция f(x) задана на отрезке [a,b] и имеет только один корень x*. ε, δ – малые значения.
Шаг1: Вычисляем значения функции f(x) на концах интервала - f(a), f(b). Шаг2: Определяем середину интервала xср
=(a+b)/2 и вычисляем в этой точке значение функции f(xср ) Шаг3: Вычисляем произведение - f(a)* f(xср ). Если f(a)* f(xср )<0, то присваиваем b=xср, иначе присваиваем a=xср Шаг4: Признак завершения счета. Если значения функции на границах интервала f(b) и f(a )<δ, то перейти к шагу 5, иначе перейти к шагу 2. Шаг5: Вычисляем x*=(a+b)/2 и f(x*)
Варианты функций Аргумент x определен в диапазоне [0÷1] 1.f(x)=-cos(3.14x/2)+2x 2.f(x)=sin(3.14x/2)-(1-x) 3.f(x)=sh(x)-cos(3.14x) 4.f(x)=1-x-tg(3.14x/4) 5.f(x)=e**x-sin(3.14x/2) 6.f(x)=(1-x)**2-2x 7.f(x)=arcsin(x)-(1-x)**2 8.f(x)=ln(1+x)-(1-x)
Перед
данными вариантами имеются два графика, кто сможет помочь пишите,тогда скину файл с ними.
ЗАРАНЕЕ БОЛЬШОЕ СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!
Отправлен: 09.10.2009, 23:59
Вопрос задал: Magma, Посетитель
Всего ответов: 2 Страница вопроса »
Отвечает Micren, Бакалавр :
Здравствуйте, Magma. Решение 1й задачи. C++. MS VS 2008.
// Решает задачу void solve(double_vector& sides) { // Сортируем стороны sort(sides.begin(),sides.end(),less<double>()); // Выведем их cout<<"Получены следующие значения для сторон:"<<endl<<sides; cout<<"Треугольник построить "; // Проверка возможности построения треугольника if(sides[0]+sides[1]>sides[2]) { cout<<"возможно"<<endl; // Вычислим
углы double_vector angles=calc_angles(sides); // Выведем их cout<<"Углы треугольника в радианах:"<<endl<<angles; cout<<"По величине углов:"; // Определим тип треугольника по его углам switch(by_internal_angles(angles)) { case ACUTE: cout<<"остроугольный"; break; case RIGHT: cout<<"прямоугольный"; break; case OBTUSE: cou
t<<"тупоугольный"; break; } cout<<endl <<"По числу равных сторон:"; // Определим тип треугольника по его сторонам switch(by_relative_length_of_sides(sides)) { case EQUILATERAL: cout<<"равносторонний"; break; case ISOSCELES: cout<<"равнобедренный"; break; case SCALENE: cout<<"разносторонний"; break; } cout<<endl; } else { cout<<"не
возможно"<<endl; } cout<<"-------------------------------------------"<<endl; }
int main() { srand(static_cast<unsigned int>(time(0))); setlocale(LC_ALL,"russian"); menu_user_choice choice; while((choice=menu())!=QUIT) { double_vector sides; switch(choice) { case MANUAL: sides=manual_sides(); break; case RANDO
M: sides=random_sides(); break; } solve(sides); } return 0; }
Пример работы:
Код:
1 - Ручной ввод длин сторон 2 - Автоматическая генерация длин сторон 3 - Выход Ваш выбор:2 Получены следующие значения для сторон: 4.39009 5.49883 7.16941 Треугольник
построить возможно Углы треугольника в радианах: 0.658418 0.873212 1.60996 По величине углов:тупоугольный По числу равных сторон:разносторонний ------------------------------------------- 1 - Ручной ввод длин сторон 2 - Автоматическая генерация длин сторон 3 - Выход Ваш выбор:1 Введите длины сторон вручную Длина 1 стороны:5 Длина 2 стороны:3 Длина 3 стороны:4 Получены следующие значения дл
я сторон: 3 4 5 Треугольник построить возможно Углы треугольника в радианах: 0.643501 0.927295 1.5708 По величине углов:прямоугольный По числу равных сторон:разносторонний ------------------------------------------- 1 - Ручной ввод длин сторон 2 - Автоматическая генерация длин сторон 3 - Выход Ваш выбор:2 Получены следующие значения для сторон: 2.63527 2.94259 5.69109 Треугольник построить не возможно ------------------------------------------- 1
- Ручной ввод длин сторон 2 - Автоматическая генерация длин сторон 3 - Выход Ваш выбор:1 Введите длины сторон вручную Длина 1 стороны:5 Длина 2 стороны:5 Длина 3 стороны:5 Получены следующие значения для сторон: 5 5 5 Треугольник построить возможно Углы треугольника в радианах: 1.0472 1.0472 1.0472 По величине углов:остроугольный По числу равных сторон:равносторонний -------------------------------------------1 - Ручной ввод длин сторон 2 - Автоматическая генерация длин сторон 3 - Выход Ваш выбор:1 Введите длины сторон вручную Д
лина 1 стороны:4 Длина 2 стороны:5 Длина 3 стороны:5 Получены следующие значения для сторон: 4 5 5 Треугольник построить возможно Углы треугольника в радианах: 0.823034 1.15928 1.15928 По величине углов:остроугольный По числу равных сторон:равнобедренный ------------------------------------------- 1 - Ручной ввод длин сторон 2 - Автоматическая генерация длин сторон 3 - Выход Ваш выбор:
Ответ отправил: Micren, Бакалавр
Ответ отправлен: 10.10.2009, 15:04
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 255252
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает leonid59, Студент :
Здравствуйте, Magma. Код в приложении Протокол работы
Ответ отправил: leonid59, Студент
Ответ отправлен: 15.10.2009, 14:31
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 255438
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 173120:
Здраствуйте, у меня снова вопрос о работе со строками, Если есть строка: "#Fusername#filename#musor" как мне из неё получить такую строку: "#Ffilename#musor" т.е. выбросить username, мне на ум приходит только такой способ:
в buff исходная строка, a tmp_buff результат. И то, у меня тут не до конца, у меня будет"#Ffilename" Подскажите как можно решить эту проблему более просто, чтобы код стал более читабельным? Зарамее спасибо.
Отвечает Micren, Бакалавр :
Здравствуйте, Станислав. Все зависит от того на каком именно языке Вам требуется ответ(C или C++), а так же от того какие возможности Вы хотите использовать. Вариантов более чем достаточно. Учитывая, что Вы использовали строковые функции C я остановился на них. Программа. С++. MS VS 2008.
Код:
#include <iostream> #include <cstring>
using namespace std;
// Функция выполняющая требуемое преобразование. Возвращает требуемый размер области памяти для размещения результата. // Если dst==0 на том и заканчивается. Иначе копирует согласно условия. size_t del_username(const char* const src,char* dst) { // Требуемый размер буфера size_t len=0; // Проверим начинается ли строка с "#F" if
(!strncmp(src,"#F",2)) { // Первый копируемый символ из filename const char* first=strchr(src+2,'#'); // Если есть то if(first) { len=strlen(++first)+3; // Если dst!=0 то копируем if(dst) { strncpy(dst,src,2); strcpy(dst+2,first); } } } return len; }
int main() { char src[]="#Fusername#filename#musor"; try { // Вычисляем размер области и выделяем память char* dst=new
char[del_username(src,0)]; // Копируем del_username(src,dst); // Выводим для проверки cout<<dst<<endl; delete[] dst; } catch(...) { } return 0; }
Вывод:
Код:
#Ffilenam
e#musor
Ответ отправил: Micren, Бакалавр
Ответ отправлен: 10.10.2009, 03:04
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 255242
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 173132:
Добрый день уважаемые эксперты. У меня вопрос. Как расшифровать такого типа запись в printf ? %10.7lf
Отвечает Максим Юрьевич, 6-й класс :
Здравствуйте, Dimon4ik.
10.7 заставляет разместить число на 10 позициях, из них 7 выделяется под десятичную часть. Модификатор размера (l) указывает на то, что выводиться будет long int. Но указатель типа (f) указывает на то, что выводиться будет число с плавающей точкой. Видимо эта "конфликтная" ситуация разрешается в пользу указателя типа, что подтверждает пара проведённых экспериментов.
Ответ отправил: Максим Юрьевич, 6-й класс
Ответ отправлен: 10.10.2009, 17:28
Оценка ответа: 5
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 255256
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Micren, Бакалавр :
Здравствуйте, Dimon4ik. 10 - минимальная ширина поля .7 - модификатор точности(знаков после десятичной точки) l - сие неизвестно зачем тут применено. Модификатор "L" может применяться для вывода long double("%Lf"), а "l" для вывода со спецификаторами d,i,o,u,x(т.е. целых) f - десятичное число с плавающей точкой.
Итог: Выводится десятичное число с плавающей точкой. Займет минимум 10 знакомест и будет иметь 7знаков после точки. При форматировании вывода будет
использовано выравнивание по правому краю.
Ответ отправил: Micren, Бакалавр
Ответ отправлен: 10.10.2009, 17:33
Оценка ответа: 5
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 255257
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Иван Горбинко, 1-й класс :
Здравствуйте, Dimon4ik! Каждая спецификация преобразования начинается с символа % и заканчивается символом преобразования, например как символ f.
f – число с плавающей точкой, представляемое в виде десятичной дроби.
Ответ отправил: Иван Горбинко, 1-й класс
Ответ отправлен: 11.10.2009, 02:33
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 255269
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.