Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите нарисовать блок-схему

74K
24 октября 2011 года
JeRR
6 / / 24.10.2011
Всем доброго времени суток!
Помогите пожалуйста сделать 1 блок-схему и написать 1 псевдокод. Не совсем понимаю как делать(
1) Написать псевдокод программы, которая принимает с клавиатуры число N и выводит все кратные 3 среди чи-сел от 1 до N.
2) Изобразить блок-схему программы, которая принимает с клавиатуры два числа и выводит остаток от деления пер-вого из них на второе.
316
24 октября 2011 года
Alm3n
889 / / 29.05.2009
Ну почему бы самому не прочесть что такое псевдокод и что такое блок схемы? Там же всё просто.
Ну, псевдокод - это словесное описание программы. Вот, как оно у тебя в голове происходит так и пишешь на бумаге словами по шагам.
Не совсем вольнодумство, конечно. Несколько правил есть. Тут хорошо написано, что это такое.
С блок-схемой тоже всё просто. Это же блин три геометрические фигуры. С твоим заданием там вообще всё линейно. Два кружка, два прямоугольника и одна трапеция. Начало, ввод, деление, вывод, конец. Читай.
74K
24 октября 2011 года
JeRR
6 / / 24.10.2011
Да я вкурсе что такое схемы и псевдокод). я не понимаю смысл самого задания.
Вот например :
Цитата:
которая принимает с клавиатуры число N и выводит все кратные 3 среди чи-сел от 1 до N.


Не понял. У меня вообще с математикой плохо:facepalm:

Цитата:
которая принимает с клавиатуры два числа и выводит остаток от деления пер-вого из них на второе.


Я тут нарисол, но не знаю что дальше писать :(
Begin

input number1,number2

ostatok:= ???

271
24 октября 2011 года
MrXaK
721 / / 31.12.2002
ostatok := number1 mod number2
316
24 октября 2011 года
Alm3n
889 / / 29.05.2009
Допустим, N = 12. Тогда нужно вывести все кратные 3-м от 1 до 12-ти. Это 3, 6, 9, 12. Не уверен, что ты знаешь, как определить кратность(извини уж). Подели число на три и, если остаток 0, то число кратно. Можно аналитически. Если не ошибаюсь, то, если сумма цифр числа без остатка делится на 3 и 9, то число кратно 3-м.
В блок схемах обычно используют русский язык, ты же учишься в России? В конце добавь "Конец". Всё верно.
271
24 октября 2011 года
MrXaK
721 / / 31.12.2002
можно же без делений
ВВОД N
ЦЕЛОЕ j = 1
ПОКА j*3 < N ДЕЛАТЬ
ПЕЧАТЬ j * 3
j = j + 1 или ИНКРЕМЕНТ(j)
КОНЕЦПОКА
КОНЕЦ

можно вообще одним циклом
ВВОД N
ОТ i=3 ДО N ШАГ 3 ДЕЛАТЬ
ПЕЧАТЬ i
КОНЕЦ ОТ
316
25 октября 2011 года
Alm3n
889 / / 29.05.2009
Цитата: Mr.Hacker
можно же без делений
ВВОД N
ЦЕЛОЕ j = 1
ПОКА j*3 < N ДЕЛАТЬ
ПЕЧАТЬ j * 3
j = j + 1 или ИНКРЕМЕНТ(j)
КОНЕЦПОКА
КОНЕЦ

можно вообще одним циклом
ВВОД N
ОТ i=3 ДО N ШАГ 3 ДЕЛАТЬ
ПЕЧАТЬ i
КОНЕЦ ОТ


Меня всегда удивлял образ мышления людей, которые, в задании, например, возвести х в третью степень, просто умножают его три раза на себя, когда я в свою очередь пишу функцию для любой степени зачем-то...
Можно и умножать i на три, а если потребуется найти кратные среди чисел с плавающей точкой? Хотя там тоже можно умножать на три. Мда...

271
25 октября 2011 года
MrXaK
721 / / 31.12.2002
действительно интересно, зачем? )) и как вы пишете возведение в степень? )) правильно писать там всё равно умножением, только считать функцию x**y = 2**(y*log2(x)), а log2(x) считать через ряд Тейлора для ln(1+x) и преобразованиям.. см здесь. я что-то сомневаюсь, что вы так пишете) или вы наивно полагаете, что возведение в степень - процессорная операция и надо для неё только свою обёртку написать?
а я вот не понимаю, почему бы такие задачи не оптимизировать..
да даже по псевдокоду в коде
ВВОД N
ОТ i=1 ДО N ДЕЛАТЬ
ЕСЛИ 0 == i mod 3 ТО
ПЕЧАТЬ i
КОНЕЦЕСЛИ
КОНЕЦОТ
а вы похоже именно так предлагаете (иначе зачем вообще определение кратности) пробегается ненужный больший цикл и сравнение в нём..
и вообще в реальной жизни кода стоит задача возвести x в третью степень надо это и делать)) пока вы будете абстрагироваться, писать функции для возведения в степень любых типов, включая комплексные числа, а потом ещё до векторов в гильбертовом пространстве дойдёте, я уже напишу x*x*x, получу 100500 ойро и пойду в субботу в гольф-клуб))
з.ы. кратные числа что инт что флоат ищутся элементарно кодом for i = число TO предел STEP число )))
316
25 октября 2011 года
Alm3n
889 / / 29.05.2009
Цитата: Mr.Hacker
действительно интересно, зачем? )) и как вы пишете возведение в степень? )) правильно писать там всё равно умножением, только считать функцию x**y = 2**(y*log2(x)), а log2(x) считать через ряд Тейлора для ln(1+x) и преобразованиям.. см здесь. я что-то сомневаюсь, что вы так пишете) или вы наивно полагаете, что возведение в степень - процессорная операция и надо для неё только свою обёртку написать?
а я вот не понимаю, почему бы такие задачи не оптимизировать..
да даже по псевдокоду в коде
ВВОД N
ОТ i=1 ДО N ДЕЛАТЬ
ЕСЛИ 0 == i mod 3 ТО
ПЕЧАТЬ i
КОНЕЦЕСЛИ
КОНЕЦОТ
а вы похоже именно так предлагаете (иначе зачем вообще определение кратности) пробегается ненужный больший цикл и сравнение в нём..
и вообще в реальной жизни кода стоит задача возвести x в третью степень надо это и делать)) пока вы будете абстрагироваться, писать функции для возведения в степень любых типов, включая комплексные числа, а потом ещё до векторов в гильбертовом пространстве дойдёте, я уже напишу x*x*x, получу 100500 ойро и пойду в субботу в гольф-клуб))
з.ы. кратные числа что инт что флоат ищутся элементарно кодом for i = число TO предел STEP число )))



Так приучили в ВУЗе. Maximum универсальность. Да, возведение в степень было бы с шаблонами и рядами. Теперь это начинает казаться мне какой-то проблемой.

74K
25 октября 2011 года
JeRR
6 / / 24.10.2011
Спасибо.
Думаю напишу этот псевдокод:
Цитата:
ВВОД N
ОТ i=1 ДО N ДЕЛАТЬ
ЕСЛИ 0 == i mod 3 ТО
ПЕЧАТЬ i
КОНЕЦЕСЛИ
КОНЕЦОТ


Только надо по английски. Нам дали лекцию по этим псевдокодам, но я не нашел че-то как написать это:
ОТ i=1 ДО N ДЕЛАТЬ
Вот таблица из лекции

Вот как я написал:
Output "ВВедите число"
Input N
ОТ i=1 ДО N ДЕЛАТЬ (?)
IF 0== i mod 3 then
Outut i
End IF
End (?)
И еще помогите плиз пару задач на Си решить:confused:
1)

Цитата:
Написать программу, которая принимает с клавиатуры пять целых чисел, разделенных точками, и вычисляет для них среднее арифметическое. Результат вывести с точностью 3 знака после запятой. Использовать приве-дение типов.


Я тут не понял как разделить пять чисел точками?
Upd: Получилось разделить через запятые, а через точки как?

Цитата:
int main() {
float Result;
float n1, n2, n3, n4, n5;
printf("Enter 5 numbers:\n");
scanf("%f,%f,%f,%f,%f", &n1, &n2, &n3, &n4, &n5);



Result = ((n1+n2+n3+n4+n5)/5.0);

printf("Sredniy ball= %.3f", Result);
return 0;
}


Цитата:
Написать программу, которая принимает с клавиатуры координаты двух векторов в трехмерном пространстве и вычисляет их векторное произведение.


Вообще не понял:facepalm:

271
25 октября 2011 года
MrXaK
721 / / 31.12.2002
Цитата: JeRR

ОТ i=1 ДО N ДЕЛАТЬ


for i:=1..N

Цитата: JeRR

И еще помогите плиз пару задач на Си решить:confused:
1)
Я тут не понял как разделить пять чисел точками?


читаем посимвольно, приводим символ к (int), сравниваем с кодом точки, считываем куда нам надо)) опять же, если известно количество чисел, то можно без приведения типов реализовать, scanf()ом например

Цитата: JeRR

2)
Вообще не понял:facepalm:


по определителю матрицы векторного произведения

 
Код:
| i  j  k  |
| x1 x2 x3 |
| y1 y2 y3 |

ну и у итогового вектора компоненты будут i: x2y3-y2x3, j: y1x3-x1y3, k: x1y2-y1x2
271
25 октября 2011 года
MrXaK
721 / / 31.12.2002
Цитата: Alm3n
Так приучили в ВУЗе. Maximum универсальность. Да, возведение в степень было бы с шаблонами и рядами. Теперь это начинает казаться мне какой-то проблемой.



хз, универсальность, конечно, хорошо, но часто важнее всё-таки скорость выполнения, размеры потребляемой памяти и т. п... иногда полезно вообще такие операции вынести в готовую таблицу и читать из неё, а не считать)) зависит от задачи, но в институте я бы за такой универсальностью не гнался, а в реальной жизни если понадобится - проводится рефакторинг) ну естественно выяснив, насколько реально это надо))

74K
25 октября 2011 года
JeRR
6 / / 24.10.2011
Надо точки сделать через scan f.... У меня никак не получилось
271
25 октября 2011 года
MrXaK
721 / / 31.12.2002
int a,b,c,d,e;
scanf("%d.%d.%d.%d.%d", &a, &b, &c, &d, &e);
74K
25 октября 2011 года
JeRR
6 / / 24.10.2011
Спс, заработало :)
Мне дали код к последней задачи про вектора, но появляются 2 ошибки.. Что может быть не так?
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup c:\Users\Антон\Documents\Visual Studio 2010\Projects\lab_24!\lab_24!\MSVCRTD.lib(crtexe.obj) lab_24!
Ошибка 2 error LNK1120: 1 неразрешенных внешних элементов c:\Users\Антон\Documents\Visual Studio 2010\Projects\lab_24!\Debug\lab_24!.exe 1 1 lab_24!

Код:
Цитата:
#include "stdafx.h"


#include <stdio.h>
void VectorProduct();
void Enter5Int();

void VectorProduct()
{
float a1,b1,c1;
printf("Enter vector 1 : ");
scanf("%f,%f,%f",&a1,&b1,&c1);

float a2,b2,c2;
printf("Enter vector 2 : ");
scanf("%f,%f,%f",&a2,&b2,&c2);

float a[] = {b1*c2 - c1*b2,
c1*a2 - a1*c2,
a1*b2 - a2*b1};

printf("Result : ");
printf("%f,%f,%f \n",a[0],a[1],a[2]);
}


Upd: Все сделал наконец-то :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог