
Задание:
Даны действительные числа х и у.Определить,лежит ли точка с заданными координатами (х,у) внутри заштрихованной области.
Надо написать на Паскале или на Си,но лучше на паскале.
![]() |
![]() |
![]() |
![]() |
![]() |
Здравствуйте, гость ( Вход | Регистрация ) |
![]() Помогите решить задачку по програмингу, +3 к репе дам) |
K-E-N-N-Y |
![]() |
![]() MotoCrazy^^ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 608 Регистрация: 9.4.2008 Из: Саратов Пользователь №: 169 076 Модель телефона: Optimus P500 Прошивка: Android 2.2.1 ![]() Рейтинг: 533 ![]() |
![]() Задание: Даны действительные числа х и у.Определить,лежит ли точка с заданными координатами (х,у) внутри заштрихованной области. Надо написать на Паскале или на Си,но лучше на паскале. |
A.Vas |
![]() |
![]() Гуру ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 016 Регистрация: 2.12.2005 Из: г. Томск Пользователь №: 60 511 Модель телефона: HTC One X Прошивка: CyanogenMod 11 Рейтинг: 435 ![]() |
K-E-N-N-Y,
и что тут сложного? Проверяй для точек три условия, если выполняются все три - точка лежит в заштрихованной области: 1) abs(x) < 1, abs(y) < 1 2) x^2 + y^2 > 1 3) y > x Условие 1 задаёт положение точки внутри внешнего (квадратного) края области, условие 2 - вне внутреннего круга, условие 3 - выше диагональной разделительной линии. Сообщение отредактировал A.Vas - 5.3.2010, 16:24 |
K-E-N-N-Y |
![]() |
![]() MotoCrazy^^ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 608 Регистрация: 9.4.2008 Из: Саратов Пользователь №: 169 076 Модель телефона: Optimus P500 Прошивка: Android 2.2.1 ![]() Рейтинг: 533 ![]() |
K-E-N-N-Y, и что тут сложного? Проверяй для точек три условия, если выполняются все три - точка лежит в заштрихованной области: 1) abs(x) < 1, abs(y) < 1 2) x^2 + y^2 > 1 3) y > x Условие 1 задаёт положение точки внутри внешнего (квадратного) края области, условие 2 - вне внутреннего круга, условие 3 - выше диагональной разделительной линии. эмм и как будет выглядеть? writeln('введите координаты'); read(x,y) if abs(x) < 1 and abs(y) < 1 а дальше как с другими условиями? тупо также записать? и почему второе условие именно такое? Сообщение отредактировал K-E-N-N-Y - 5.3.2010, 16:39 |
AlexKooper |
![]() |
![]() Авторитет ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Почётные мотофаны Сообщений: 2 838 Регистрация: 27.7.2005 Из: Йошкар-Ола Пользователь №: 47 140 Модель телефона: E398 Прошивка: AlexKooper mod v.47 Рейтинг: 1337 ![]() |
второе условие - проверка на радиус (квадрат радиуса на самом деле) круга, расстояние от центра должно быть больше 1
|
DmT |
![]() |
Мото-Портной ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 175 Регистрация: 31.3.2007 Пользователь №: 129 181 Модель телефона: LG GW620, L7e и др. ![]() Рейтинг: 680 ![]() |
Цитата(K-E-N-N-Y @ Сегодня, 21:14) Я тя уверяю - лучше на Си ^__^ Вот по описанию A.Vas: Код if( (abs(x) <= 1) && // координата X лежит в промежутке [-1;1] (abs(y) <= 1) && // координата Y лежит в промежутке [-1;1] (x*x + y*y >= 1) && // точка за пределами единичной окружности (y > x) ) { printf("This point is in valid region."); } else { printf("This point isn't in valid region."); } Сообщение отредактировал DmT - 5.3.2010, 16:44 |
AlexKooper |
![]() |
![]() Авторитет ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Почётные мотофаны Сообщений: 2 838 Регистрация: 27.7.2005 Из: Йошкар-Ола Пользователь №: 47 140 Модель телефона: E398 Прошивка: AlexKooper mod v.47 Рейтинг: 1337 ![]() |
var b: boolean;
writeln('введите координаты'); read(x,y); if abs(x) < 1 and abs(y) < 1 then b:=true else b:=false; if ((x*x)+(y*y)) > 1 then else b:= false; if y>x then else b:=false; if b=true then writeln ('Попадает'); либо через одно сплошное условие, но громозко получится - паскаль очень любит скобками всё чтоб обрамлено было, чтоб порядок операций задать. Добавлено позже (5.3.2010, 19:50): на паскале писал 10 лет назад поэтому получилось так коряво... но должно работать Или как вариант var b: integer; writeln('введите координаты'); read(x,y); if abs(x) < 1 and abs(y) < 1 then b:=1 else b:=0; if ((x*x)+(y*y)) > 1 then b:= b+1; if y>x then b:= b+1; if b=3 then writeln ('Попадает'); Добавлено позже (5.3.2010, 19:53): кстати границы заштрихованной области входят в допустимую зону? если да, то надо условия смягчать во всех трёх проверках, допуская равенство. Сообщение отредактировал AlexKooper - 5.3.2010, 16:54 |
K-E-N-N-Y |
![]() |
![]() MotoCrazy^^ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 608 Регистрация: 9.4.2008 Из: Саратов Пользователь №: 169 076 Модель телефона: Optimus P500 Прошивка: Android 2.2.1 ![]() Рейтинг: 533 ![]() |
var b: boolean; writeln('введите координаты'); read(x,y); if abs(x) < 1 and abs(y) < 1 then b:=true else b:=false; if ((x*x)+(y*y)) > 1 then else b:= false; if y>x then else b:=false; if b=true then writeln ('Попадает'); либо через одно сплошное условие, но громозко получится - паскаль очень любит скобками всё чтоб обрамлено было, чтоб порядок операций задать. Добавлено позже (5.3.2010, 19:50): на паскале писал 10 лет назад поэтому получилось так коряво... но должно работать Или как вариант var b: integer; writeln('введите координаты'); read(x,y); if abs(x) < 1 and abs(y) < 1 then b:=1 else b:=0; if ((x*x)+(y*y)) > 1 then b:= b+1; if y>x then b:= b+1; if b=3 then writeln ('Попадает'); Добавлено позже (5.3.2010, 19:53): кстати границы заштрихованной области входят в допустимую зону? если да, то надо условия смягчать во всех трёх проверках, допуская равенство. а почему if y>x then b:= b+1; насчет границ не знаю, извините даже,в точности задание написал вариант проги второй не работает... у кого еще есть предложение готовой программы на паскале? ту DmT,твой код чет тоже не хотел компилить : warning C4700: использована неинициализированная локальная переменная "x" warning C4700: использована неинициализированная локальная переменная "y" Сообщение отредактировал K-E-N-N-Y - 5.3.2010, 17:02 |
AlexKooper |
![]() |
![]() Авторитет ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Почётные мотофаны Сообщений: 2 838 Регистрация: 27.7.2005 Из: Йошкар-Ола Пользователь №: 47 140 Модель телефона: E398 Прошивка: AlexKooper mod v.47 Рейтинг: 1337 ![]() |
Цитата а почему if y>x then b:= b+1; это же проверка третьего условия. за каждое выполненное условие начисляем 1 балл. Три условия выполнено (b=3) - значит все условия выполнены. Сообщение отредактировал AlexKooper - 5.3.2010, 17:00 |
DmT |
![]() |
Мото-Портной ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 175 Регистрация: 31.3.2007 Пользователь №: 129 181 Модель телефона: LG GW620, L7e и др. ![]() Рейтинг: 680 ![]() |
K-E-N-N-Y,
Эт еще повезло что не на прологе писать надо... |
AlexKooper |
![]() |
![]() Авторитет ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Почётные мотофаны Сообщений: 2 838 Регистрация: 27.7.2005 Из: Йошкар-Ола Пользователь №: 47 140 Модель телефона: E398 Прошивка: AlexKooper mod v.47 Рейтинг: 1337 ![]() |
это ещё повезло, что не в машинных кодах какого-нибудь z80 писать надо :) а то у нас в универе и такое было. причем никаких компов - бумажные таблицы перевода написанного от руки асм кода в хексы, и вбивать в стенд кнопочками...
Добавлено позже (5.3.2010, 20:05): конечно не работает, надо же писать всякие бегины-енды, тело програмы, тип переменных X Y, подстегнуть модули ввода-вывода чтоб writeln readln работали... ты хоть ошибки пиши. Добавлено позже (5.3.2010, 20:07): как-то так uses crt; {этот вроде какой-то стандарт. модуль для ввода-вывода} var b: integer; x,y: real; begin writeln('введите координаты'); read(x,y); if abs(x) < 1 and abs(y) < 1 then b:=1 else b:=0; if ((x*x)+(y*y)) > 1 then b:= b+1; if y>x then b:= b+1; if b=3 then writeln ('Попадает') else writeln ('Не попадает'); end. Сообщение отредактировал AlexKooper - 5.3.2010, 17:14 |
A.Vas |
![]() |
![]() Гуру ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 016 Регистрация: 2.12.2005 Из: г. Томск Пользователь №: 60 511 Модель телефона: HTC One X Прошивка: CyanogenMod 11 Рейтинг: 435 ![]() |
Цитата(AlexKooper @ Сегодня, 23:02) это ещё повезло, что не в машинных кодах какого-нибудь z80 писать надо :) а то у нас в универе и такое было. причем никаких компов - бумажные таблицы перевода написанного от руки асм кода в хексы, и вбивать в стенд кнопочками... О, да, мы тоже это делали в рамках курса "Микропроцессорные устройства". Только стенды были не на Z80, а, кажется, на МК48 :) K-E-N-N-Y, попробуй такой вариант. Предупреждаю сразу, на паскале не писал чуть больше трёх лет, а компилятора под рукой нет, поэтому могут быть синтаксические ошибки. Код var x, y: real; BEGIN write("Введите координаты точки: "); read(x, y); if ((x < 1) and (y < 1)) and (x*x + y*y < 1) and (y > x) then writeln("Точка попадает в заданную область."); else writeln("Точка не попадает в заданную область."); END. |
AlexKooper |
![]() |
![]() Авторитет ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Почётные мотофаны Сообщений: 2 838 Регистрация: 27.7.2005 Из: Йошкар-Ола Пользователь №: 47 140 Модель телефона: E398 Прошивка: AlexKooper mod v.47 Рейтинг: 1337 ![]() |
Цитата and (x*x + y*y < 1) подозреваю что тут ругнётся, я бы записал так and (((x*x) + (y*y)) < 1) |
motoprogger |
![]() |
![]() Гуру ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 327 Регистрация: 20.7.2006 Из: Г. Омск Пользователь №: 92 049 Модель телефона: C380 и Talkabout Прошивка: разные Рейтинг: 510 ![]() |
Цитата(DmT @ Сегодня, 23:01) Как раз самая задача для Пролога. Цитата(AlexKooper @ Сегодня, 23:02) это ещё повезло, что не в машинных кодах какого-нибудь z80 писать надо :) а то у нас в универе и такое было. причем никаких компов - бумажные таблицы перевода написанного от руки асм кода в хексы, и вбивать в стенд кнопочками... Собственно тоже проходил, но только не в универе - такой древности, как стенды на Z80, у нас нет |
K-E-N-N-Y |
![]() |
![]() MotoCrazy^^ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 608 Регистрация: 9.4.2008 Из: Саратов Пользователь №: 169 076 Модель телефона: Optimus P500 Прошивка: Android 2.2.1 ![]() Рейтинг: 533 ![]() |
О, да, мы тоже это делали в рамках курса "Микропроцессорные устройства". Только стенды были не на Z80, а, кажется, на МК48 :) K-E-N-N-Y, попробуй такой вариант. Предупреждаю сразу, на паскале не писал чуть больше трёх лет, а компилятора под рукой нет, поэтому могут быть синтаксические ошибки. Код var x, y: real; BEGIN write("Введите координаты точки: "); read(x, y); if ((x < 1) and (y < 1)) and (x*x + y*y < 1) and (y > x) then writeln("Точка попадает в заданную область."); else writeln("Точка не попадает в заданную область."); END. ошибка вроде только одна,это то что ; перед else не пишется ![]() а так вроде все работает,с точки зрения математики программа правильно составлена? |
AlexKooper |
![]() |
![]() Авторитет ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Почётные мотофаны Сообщений: 2 838 Регистрация: 27.7.2005 Из: Йошкар-Ола Пользователь №: 47 140 Модель телефона: E398 Прошивка: AlexKooper mod v.47 Рейтинг: 1337 ![]() |
K-E-N-N-Y, а чегой эта у тебя ссылки в подписи не работают?
Добавлено позже (5.3.2010, 20:27): с точки зрения математики - правильно, но если точка лежит на границе то будет писать что не попадает. если условия меньше (больше) заменить на меньше или равно (больше или равно) то граница войдёт в зону допуска |
K-E-N-N-Y |
![]() |
![]() MotoCrazy^^ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 608 Регистрация: 9.4.2008 Из: Саратов Пользователь №: 169 076 Модель телефона: Optimus P500 Прошивка: Android 2.2.1 ![]() Рейтинг: 533 ![]() |
K-E-N-N-Y, а чегой эта у тебя ссылки в подписи не работают? Добавлено позже (5.3.2010, 20:27): с точки зрения математики - правильно, но если точка лежит на границе то будет писать что не попадает. если условия меньше (больше) заменить на меньше или равно (больше или равно) то граница войдёт в зону допуска Ааа,да подпись забыл отредактировать,там половина работает половина нет,а сайт я забросил свой,не хватает времени на него,да и труба у меня сейчас К790 |
A.Vas |
![]() |
![]() Гуру ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 016 Регистрация: 2.12.2005 Из: г. Томск Пользователь №: 60 511 Модель телефона: HTC One X Прошивка: CyanogenMod 11 Рейтинг: 435 ![]() |
|
K-E-N-N-Y |
![]() |
![]() MotoCrazy^^ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 608 Регистрация: 9.4.2008 Из: Саратов Пользователь №: 169 076 Модель телефона: Optimus P500 Прошивка: Android 2.2.1 ![]() Рейтинг: 533 ![]() |
А разве точка с координатами 2 и 5 не должна лежать на заштрихованной области?
|
DmT |
![]() |
Мото-Портной ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 175 Регистрация: 31.3.2007 Пользователь №: 129 181 Модель телефона: LG GW620, L7e и др. ![]() Рейтинг: 680 ![]() |
Цитата(K-E-N-N-Y @ Сегодня, 23:00) Цитата(AlexKooper @ Сегодня, 21:47) Капитан Очевидность намекает, что точка (2,5) неудовлетворяет условию... Добавлено позже (5.3.2010, 23:34): Цитата(motoprogger @ Сегодня, 22:20) Ну конечно её Прологом можно решить, равно как и гвоздь можно забить системником. |
K-E-N-N-Y |
![]() |
![]() MotoCrazy^^ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 608 Регистрация: 9.4.2008 Из: Саратов Пользователь №: 169 076 Модель телефона: Optimus P500 Прошивка: Android 2.2.1 ![]() Рейтинг: 533 ![]() |
а какая точка вообще будет находится на заштрихованной зоне?
|
Andrew_71 |
![]() |
![]() Ветеран ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 374 Регистрация: 9.6.2007 Из: Рио-де-Мясново / Прейсиш Эйлау Пользователь №: 137 694 Модель телефона: ROKR_Z6 Прошивка: PE 1.86 Рейтинг: 279 ![]() |
|
motoprogger |
![]() |
![]() Гуру ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 327 Регистрация: 20.7.2006 Из: Г. Омск Пользователь №: 92 049 Модель телефона: C380 и Talkabout Прошивка: разные Рейтинг: 510 ![]() |
Цитата(DmT @ Сегодня, 0:29) Нет, Пролог для решения такой задачи подходит лучше, чем системник для забивания гвоздей. Объявить, что точка обладает свойством 1, если между её координатами такое соотношение, и свойством 2, если другое. И проверять, обладает ли заданная пользователем точка двумя этими свойствами сразу |
Abram |
![]() |
![]() Прелесть какая гадость ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 963 Регистрация: 24.6.2005 Из: .ru - рідна Україна Пользователь №: 44 825 Модель телефона: Moto G XT1033 Прошивка: CyanogenMod ![]() Рейтинг: 744 ![]() |
if abs(x) < 1 and abs(y) < 1 then b:=true else b:=false; if ((x*x)+(y*y)) > 1 then else b:= false; if y>x then else b:=false; if b=true then writeln ('Попадает'); Или как вариант var b: integer; writeln('введите координаты'); read(x,y); if abs(x) < 1 and abs(y) < 1 then b:=1 else b:=0; if ((x*x)+(y*y)) > 1 then b:= b+1; if y>x then b:= b+1; if b=3 then writeln ('Попадает'); Ты наркоман штоле? Код if ((abs(x) < 1 and abs(y) < 1) and (((x*x)+(y*y)) > 1) and (y > x)) then writeln ('Bingo!'); Логические операции для кого придумали? |
AlexKooper |
![]() |
![]() Авторитет ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Почётные мотофаны Сообщений: 2 838 Регистрация: 27.7.2005 Из: Йошкар-Ола Пользователь №: 47 140 Модель телефона: E398 Прошивка: AlexKooper mod v.47 Рейтинг: 1337 ![]() |
Цитата Логические операции для кого придумали? так ненаглядно же и отлаживать труднее... по моему опыту... |
Dark Lamer |
![]() |
![]() Ветеран ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 380 Регистрация: 16.3.2009 Пользователь №: 195 788 Модель телефона: Moto rokr ЖРУ30 Прошивка: ковыряю 03.06 Рейтинг: 36.5 ![]() |
так наглядно и мы не вводим лишнюю переменную. Ишь избаловались мегабайтами памяти.
|
Andrew_71 |
![]() |
![]() Ветеран ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 374 Регистрация: 9.6.2007 Из: Рио-де-Мясново / Прейсиш Эйлау Пользователь №: 137 694 Модель телефона: ROKR_Z6 Прошивка: PE 1.86 Рейтинг: 279 ![]() |
|
DmT |
![]() |
Мото-Портной ![]() ![]() ![]() ![]() ![]() ![]() Группа: Разработчики Сообщений: 1 175 Регистрация: 31.3.2007 Пользователь №: 129 181 Модель телефона: LG GW620, L7e и др. ![]() Рейтинг: 680 ![]() |
|
K-E-N-N-Y |
![]() |
![]() MotoCrazy^^ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 608 Регистрация: 9.4.2008 Из: Саратов Пользователь №: 169 076 Модель телефона: Optimus P500 Прошивка: Android 2.2.1 ![]() Рейтинг: 533 ![]() |
Странно,почему я ввожу точку с координатами 0.99,0.99 и пишет что она не лежит
![]() Ввожу -0.99 и 0.99 и тоже самое Сменил тип на double все равно тоже самое П.С. а сорри во втором условии написал < ,а не > :) Спасибо еще раз и вот еще задачка,дабы не создавать новую тему ![]() ![]() Вычислить значение функции и осуществить вывод исходных данных и результат вычисления. Сообщение отредактировал K-E-N-N-Y - 8.3.2010, 18:29 |
Fenja |
![]() |
![]() Авторитет ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 5 564 Регистрация: 25.8.2008 Из: г. Пенза Пользователь №: 179 851 Модель телефона: MotoRazr v3i Прошивка: MotoUpdate v1.1 Рейтинг: 1756 ![]() |
K-E-N-N-Y,
хм... Цитата Интересы: ...C++,Pascal,Web-design,php,html... А задачка то. Открываешь цикл от 1 до 44, в котором в зависимости от номера элемента вычисляешь выражение. Сообщение отредактировал Fenja - 9.3.2010, 8:33 |
K-E-N-N-Y |
![]() |
![]() MotoCrazy^^ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 608 Регистрация: 9.4.2008 Из: Саратов Пользователь №: 169 076 Модель телефона: Optimus P500 Прошивка: Android 2.2.1 ![]() Рейтинг: 533 ![]() |
program q;
var a,k,n:real; begin n:=44; for k:=1 to n do if sqrt(k+2) <=3 then a:=(ln(k)+sqr(k))/sqrt(k+2) else if 3 < sqrt(k+2) <=6 then a:=sqrt(k+2.2)/+1/k; else if sqrt(k+2) > 6 then a:=cos(k)+2.2*(sqr(sin(k))); writeln(a:10:4); end. так? Сообщение отредактировал K-E-N-N-Y - 9.3.2010, 15:40 |
Fenja |
![]() |
![]() Авторитет ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 5 564 Регистрация: 25.8.2008 Из: г. Пенза Пользователь №: 179 851 Модель телефона: MotoRazr v3i Прошивка: MotoUpdate v1.1 Рейтинг: 1756 ![]() |
K-E-N-N-Y,
плохо помню паскаль правильность не скажу ![]() Но по заданию у тебя "Вычислить значение функции". Я так понял надо посчитать и сумму. Код s:=0; и в цикле s:=s+a; З.Ы. И третье условие, имхо, проверять не обезательно, ибо по первому условию отсекаюется значения корня меньше 3, во второму отсекаются значения корня меньше шести, отсатеся только значения больше шести ![]() |
Weaknespase |
![]() |
![]() Ветеран ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 361 Регистрация: 11.8.2007 Из: г. Ростов-на-Дону, Россия Пользователь №: 144 184 Модель телефона: Motorola Droid X^2 Рейтинг: 47 ![]() |
можно и без циклов. Ручками посчитать 3 интеграла и сложить по определённым условиям
|
K-E-N-N-Y |
![]() |
![]() MotoCrazy^^ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 608 Регистрация: 9.4.2008 Из: Саратов Пользователь №: 169 076 Модель телефона: Optimus P500 Прошивка: Android 2.2.1 ![]() Рейтинг: 533 ![]() |
ПРошу помочь решить еще 3 задачки
![]() Первая задачка - http://clip2net.com/clip/m44372/1273582995-clip-33kb.jpg Вторая задачка - Задание: http://clip2net.com/clip/m44372/1273583242-clip-19kb.jpg Само задание: http://clip2net.com/clip/m44372/1273589781-clip-12kb.jpg Точность 0,0005 Третья задачка - http://clip2net.com/clip/m44372/1273589872-clip-18kb.jpg Пример который нужно решить: http://clip2net.com/clip/m44372/1273589914-clip-6kb.jpg Четвертая задачка: http://clip2net.com/clip/m44372/1273590005-clip-38kb.jpg |
Andrew_71 |
![]() |
![]() Ветеран ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 374 Регистрация: 9.6.2007 Из: Рио-де-Мясново / Прейсиш Эйлау Пользователь №: 137 694 Модель телефона: ROKR_Z6 Прошивка: PE 1.86 Рейтинг: 279 ![]() |
Первая задача
Spoiler: Код //--------------------------------------------------------------------------- #pragma hdrstop #include <stdio.h> #include <stdlib.h> #define N 15 //размерность массива //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { int i,j,m[N][N], M = 100; //заполняем числами от 1 до M for(i=0;i<N;i++) for(j=0;j<N;j++) { m[i][j]=rand()%M+1; } int numOfString[N]; for(i = 0; i < N; i++) { numOfString[i] = -1; } //выводим исходный массив и смотрим, где есть элемент 1 for(i=0; i<N;i++) { for(j=0;j<N;j++) { if(m[i][j] == 1) { numOfString[i] = i; } printf("%d", m[i][j]); printf(" "); } printf("\n"); } printf("\n"); //смотрим строки с единицами и умножаем элементы for(i = 0; i < N; i++) { printf("%d ", numOfString[i]); if(numOfString[i] != -1) { for(j = 0; j < N; j++) { m[numOfString[i]][j] = m[numOfString[i]][j]*5; } } } printf("\n \n"); //выводим то безобразие, которое получилось for(i=0; i<N;i++) { for(j=0;j<N;j++) { printf("%d", m[i][j]); printf(" "); } printf("\n"); } getchar(); return 0; } //--------------------------------------------------------------------------- [close] Вторая задача Spoiler: Код //--------------------------------------------------------------------------- #pragma hdrstop #include <stdio.h> #include <math.h> //--------------------------------------------------------------------------- double Func(double x) { return (pow(x, 0.5) + 1)/pow(x, 2); //Исходная функция } #pragma argsused int main(int argc, char* argv[]) { float a = 1, b = 2, e = (b - a)/10; //границы интервала и шаг double res = 0; //результат for(float i = a; i < b + e; i = i + e) { res += (Func(i) + Func(i + e))/2; } printf ("Result: %.8f", res); //вывести с точностью до 8 знаков getchar(); return 0; } //--------------------------------------------------------------------------- [close] Третья задача. В принципе должна работать, но ловит эксепшн... Если корень на интервале один, то алгоритм правильный. Spoiler: Код //--------------------------------------------------------------------------- #pragma hdrstop #include <stdio.h> #include <math.h> //--------------------------------------------------------------------------- long double Func(long double x) { return log(tan(M_PI + x)); //Исходная функция } long double Mod(long double x, long double y) { if(x > y) return x - y; else return y - x; } long double dihotomia(long double a, long double b, long double e) { if(Mod(a, b) > e) { long double c = (b+a)/2; if((Func(a) < 0 && Func(c) > 0) || (Func(a) > 0 && Func(c) < 0)) //Если знаки на концах интервала разные { dihotomia(a, c, e); } else //Если же нет, то разные они на другом интервале { dihotomia(c, b, e); } } else return a; } #pragma argsused int main(int argc, char* argv[]) { long double e = 0.00001; long double a = 0.01; //Ищем корень в третьем квандранте long double b = M_PI_2 - 0.01; printf("Result: %f", dihotomia(a, b, e)); getchar(); } //--------------------------------------------------------------------------- [close] Четвертая задача Spoiler: Код //--------------------------------------------------------------------------- #pragma hdrstop #include <stdio.h> #include <stdlib.h> #define N 8 //размерность массива //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { int i,j,k,m[N][N], M = 4; //заполняем числами от 1 до M for(i=0;i<N;i++) for(j=0;j<N;j++) { m[i][j]=rand()%M+1; } int Sum[N/2 + 1]; //Выводим массив for(i=0; i<N;i++) { for(j=0;j<N;j++) { printf("%d", m[i][j]); printf(" "); } printf("\n"); } //Складываем элементы в нужном порядке for(i = 0; i < N/2 + 1; i++) { int res = 0; for(j = i; j < N-i; j++) res += m[i][j]; for(j = i; j < N-i; j++) res += m[N - 1 - i][j]; for(j = i+1; j < N-i-1; j++) res += m[j][i]; for(j = i+1; j < N-i-1; j++) res += m[j][N - i - 1]; Sum[i] = res; } //Выводим получившиеся суммы Sum[N/2] = Sum[N/2]/2; for(i = 0; i < N/2 + 1; i++) printf("%d ", Sum[i]); getchar(); return 0; } //--------------------------------------------------------------------------- [close] Сообщение отредактировал Andrew_71 - 16.5.2010, 13:03 |
baat |
![]() |
![]() Самый Наглый ![]() ![]() ![]() ![]() ![]() ![]() Группа: В отставке Сообщений: 1 282 Регистрация: 18.5.2006 Из: Дом, милый дом... Пользователь №: 83 674 Модель телефона: старая модель... Прошивка: какая уж есть... ![]() Настроение: ... Рейтинг: 1535 ![]() |
K-E-N-N-Y, ты меня удивляешь, таки простые задачи сделать не можешь, лентяй ты...
|
K-E-N-N-Y |
![]() |
![]() MotoCrazy^^ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 608 Регистрация: 9.4.2008 Из: Саратов Пользователь №: 169 076 Модель телефона: Optimus P500 Прошивка: Android 2.2.1 ![]() Рейтинг: 533 ![]() |
и снова я)
вот у меня задание: определить разность двух матриц А и В.Вывести все 3 матрицы вот я сделал прогу: Цитата program qq; const count=5; var i,j,x,y:integer; mas1,mas2:array[0..count,0..count] of integer; begin randomize; for i:=0 to count do for j:=0 to count do begin mas1[i][j]:=random(10)+10; mas2[i][j]:=random(10)+10; end; writeln('pervaya matrica: '); for i:=0 to count do begin writeln; for j:=0 to count do write(mas1[i][j],' '); end; writeln; writeln('vtoraya matrica: '); for i:=0 to count do begin writeln; for j:=0 to count do write(mas2[i][j],' '); end; writeln; writeln('posle vychitaniya: '); for i:=0 to count do for j:=0 to count do mas1[i][j]:=mas1[i][j]-mas2[i][j]; for i:=0 to count do begin writeln; for j:=0 to count do write(mas1[i][j],' '); end; readln; end. но,он сказал,чтобы программа бы сделана не под конкретную задачу,а под все,т.е. проверять правило вычитание матриц (там вроде нельзя вычитать если у них разное кол-во строк или столбцов),так вот вопрос,как это сделать? Задача 2. преобразовать данную последовательность символов,замеяя всякое вхождение слова "это" на "то",я знаю как сделать с цифрами только( подскажите как сделать с символами? ЯЗЫК ПАСКАЛЬ |
baat |
![]() |
![]() Самый Наглый ![]() ![]() ![]() ![]() ![]() ![]() Группа: В отставке Сообщений: 1 282 Регистрация: 18.5.2006 Из: Дом, милый дом... Пользователь №: 83 674 Модель телефона: старая модель... Прошивка: какая уж есть... ![]() Настроение: ... Рейтинг: 1535 ![]() |
K-E-N-N-Y, тип строка - string, символ -char, строка 255 символов, нулевой отвечает за длинну строки...
работать со сторокой, как с массивом символов... Код var str: string; begin str:='blablabla'; str[1]:='f'; writeln(str); end; // flablabla выйдет так же можно в цикле работать например со строкой Код var s: string; i,k:integer; begin k:=0; s:='blablabla'; for i:=1 to length(s) do begin if (s[i]='a') then s[i]:='u'; if (s[i]='b') then begin s[i]:='t'; k:=k+1; end; end; writeln(s); writeln(k); end; // tlutlutlu выйдет // 3 // т.е. три замены буквы 'b' длинна как я сказал, в нулевом символе Код var str: string; i,k,r:integer; begin i:=1; str:='атото'; r:=length(str); while (i<length(str)-1) do begin if (i<length(str)) then if ((str[i]='т')and(str[i+1]='о')) then begin str[0]:=chr(length(str)+1); for k:=i to length(str)-1 do str[i+1]:=str[i]; str[i]:='э'; i:=i+2; end; i:=i+1; end; writeln(str); writeln(r-length(str)); end; // аэтоэто // должно выйти // 2 // сколько было замен п.с. код писал сразу в окошко форума, не проверял, не уверен что везде правильно, но принцип понять можно... Сообщение отредактировал baat - 2.6.2010, 17:16 |
Delta_3D |
![]() |
![]() MotoGirl ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Регистрация: 23.9.2006 Из: Ставрополь Пользователь №: 100 315 Модель телефона: ZN5 T-m, Atrix 2 R.I.P. Настроение: Sweet overdose Рейтинг: 149 ![]() |
первая задача устроит в таком виде?
Код program qq; uses wincrt; var i,j,x,y,n,m,k,t:integer; mas1:array[1..40,1..40] of integer; mas2:array[1..40,1..40] of integer; mas3:array[1..40,1..40] of integer; begin write ('vvedite kol-vo strok:'); readln (n); write ('vvedite kol-vo stolbcov:'); readln (m); write ('vvedite kol-vo strok:'); readln (k); write ('vvedite kol-vo stolbcov:'); readln (t); writeln ('vvedite matricu: '); for i:=1 to n do begin for j:=1 to m do begin readln (mas1[i,j]); end; end; writeln ('vvedite vtoruu matricu: '); for i:=1 to k do begin for j:=1 to t do begin readln (mas2[i,j]); end; end; write('pervaya matrica: '); for i:=1 to n do begin writeln; for j:=1 to m do begin write(mas1[i,j],' '); end; end; writeln; write('vtoraya matrica: '); for i:=1 to k do begin writeln; for j:=1 to t do begin write(mas2[i,j],' '); end; end; writeln; if (n=k) and (m=t) then begin x:=n; y:=m; write('posle vychitaniya: '); for i:=1 to n do begin for j:=1 to m do begin mas3[i,j]:=mas1[i,j]-mas2[i,j]; end; end; for i:=1 to x do begin writeln; for j:=1 to y do begin write(mas3[i,j],' '); end; end; end else writeln; writeln ('naiti raznost nelzya:'); readln; end. |
baat |
![]() |
![]() Самый Наглый ![]() ![]() ![]() ![]() ![]() ![]() Группа: В отставке Сообщений: 1 282 Регистрация: 18.5.2006 Из: Дом, милый дом... Пользователь №: 83 674 Модель телефона: старая модель... Прошивка: какая уж есть... ![]() Настроение: ... Рейтинг: 1535 ![]() |
Delta_3D, а почему бы
вместо Код mas1:array[1..40,1..40] of integer; mas2:array[1..40,1..40] of integer; mas3:array[1..40,1..40] of integer; не писать хотябы Код mas1, mas2, mas3:array[1..40,1..40] of integer; ![]() и вместо Код for i:=1 to n do begin for j:=1 to m do begin readln (mas1[i,j]); end; end; не написать Код for i:=1 to n do for j:=1 to m do readln (mas1[i,j]); Сообщение отредактировал baat - 2.6.2010, 17:01 |
Delta_3D |
![]() |
![]() MotoGirl ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Регистрация: 23.9.2006 Из: Ставрополь Пользователь №: 100 315 Модель телефона: ZN5 T-m, Atrix 2 R.I.P. Настроение: Sweet overdose Рейтинг: 149 ![]() |
Цитата(baat @ Сегодня, 21:00) mas1:array[1..40,1..40] of integer; mas2:array[1..40,1..40] of integer; mas3:array[1..40,1..40] of integer; девушке простительна такая глупость ![]() Цитата(baat @ Сегодня, 21:00) эээ а разве так цикл проходит полностью? он пройдется по первой строке и столбцу и все? в общем привыкла ставить лишние (наверное) операторы))) как научили так и решаем |
![]() ![]() |
Текстовая версия | Сейчас: 29.7.2025, 19:55 |
Форум живёт: