Помогите нарисовать блок-схему
Помогите пожалуйста сделать 1 блок-схему и написать 1 псевдокод. Не совсем понимаю как делать(
1) Написать псевдокод программы, которая принимает с клавиатуры число N и выводит все кратные 3 среди чи-сел от 1 до N.
2) Изобразить блок-схему программы, которая принимает с клавиатуры два числа и выводит остаток от деления пер-вого из них на второе.
Ну, псевдокод - это словесное описание программы. Вот, как оно у тебя в голове происходит так и пишешь на бумаге словами по шагам.
Не совсем вольнодумство, конечно. Несколько правил есть. Тут хорошо написано, что это такое.
С блок-схемой тоже всё просто. Это же блин три геометрические фигуры. С твоим заданием там вообще всё линейно. Два кружка, два прямоугольника и одна трапеция. Начало, ввод, деление, вывод, конец. Читай.
Вот например :
Не понял. У меня вообще с математикой плохо:facepalm:
Я тут нарисол, но не знаю что дальше писать :(
Begin
↓
input number1,number2
↓
ostatok:= ???
В блок схемах обычно используют русский язык, ты же учишься в России? В конце добавь "Конец". Всё верно.
ВВОД N
ЦЕЛОЕ j = 1
ПОКА j*3 < N ДЕЛАТЬ
ПЕЧАТЬ j * 3
j = j + 1 или ИНКРЕМЕНТ(j)
КОНЕЦПОКА
КОНЕЦ
можно вообще одним циклом
ВВОД N
ОТ i=3 ДО N ШАГ 3 ДЕЛАТЬ
ПЕЧАТЬ i
КОНЕЦ ОТ
ВВОД N
ЦЕЛОЕ j = 1
ПОКА j*3 < N ДЕЛАТЬ
ПЕЧАТЬ j * 3
j = j + 1 или ИНКРЕМЕНТ(j)
КОНЕЦПОКА
КОНЕЦ
можно вообще одним циклом
ВВОД N
ОТ i=3 ДО N ШАГ 3 ДЕЛАТЬ
ПЕЧАТЬ i
КОНЕЦ ОТ
Меня всегда удивлял образ мышления людей, которые, в задании, например, возвести х в третью степень, просто умножают его три раза на себя, когда я в свою очередь пишу функцию для любой степени зачем-то...
Можно и умножать i на три, а если потребуется найти кратные среди чисел с плавающей точкой? Хотя там тоже можно умножать на три. Мда...
а я вот не понимаю, почему бы такие задачи не оптимизировать..
да даже по псевдокоду в коде
ВВОД N
ОТ i=1 ДО N ДЕЛАТЬ
ЕСЛИ 0 == i mod 3 ТО
ПЕЧАТЬ i
КОНЕЦЕСЛИ
КОНЕЦОТ
а вы похоже именно так предлагаете (иначе зачем вообще определение кратности) пробегается ненужный больший цикл и сравнение в нём..
и вообще в реальной жизни кода стоит задача возвести x в третью степень надо это и делать)) пока вы будете абстрагироваться, писать функции для возведения в степень любых типов, включая комплексные числа, а потом ещё до векторов в гильбертовом пространстве дойдёте, я уже напишу x*x*x, получу 100500 ойро и пойду в субботу в гольф-клуб))
з.ы. кратные числа что инт что флоат ищутся элементарно кодом for i = число TO предел STEP число )))
а я вот не понимаю, почему бы такие задачи не оптимизировать..
да даже по псевдокоду в коде
ВВОД N
ОТ i=1 ДО N ДЕЛАТЬ
ЕСЛИ 0 == i mod 3 ТО
ПЕЧАТЬ i
КОНЕЦЕСЛИ
КОНЕЦОТ
а вы похоже именно так предлагаете (иначе зачем вообще определение кратности) пробегается ненужный больший цикл и сравнение в нём..
и вообще в реальной жизни кода стоит задача возвести x в третью степень надо это и делать)) пока вы будете абстрагироваться, писать функции для возведения в степень любых типов, включая комплексные числа, а потом ещё до векторов в гильбертовом пространстве дойдёте, я уже напишу x*x*x, получу 100500 ойро и пойду в субботу в гольф-клуб))
з.ы. кратные числа что инт что флоат ищутся элементарно кодом for i = число TO предел STEP число )))
Так приучили в ВУЗе. Maximum универсальность. Да, возведение в степень было бы с шаблонами и рядами. Теперь это начинает казаться мне какой-то проблемой.
Думаю напишу этот псевдокод:
ОТ 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)
Я тут не понял как разделить пять чисел точками?
Upd: Получилось разделить через запятые, а через точки как?
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:
ОТ i=1 ДО N ДЕЛАТЬ
for i:=1..N
И еще помогите плиз пару задач на Си решить:confused:
1)
Я тут не понял как разделить пять чисел точками?
читаем посимвольно, приводим символ к (int), сравниваем с кодом точки, считываем куда нам надо)) опять же, если известно количество чисел, то можно без приведения типов реализовать, scanf()ом например
2)
Вообще не понял:facepalm:
по определителю матрицы векторного произведения
| x1 x2 x3 |
| y1 y2 y3 |
ну и у итогового вектора компоненты будут i: x2y3-y2x3, j: y1x3-x1y3, k: x1y2-y1x2
хз, универсальность, конечно, хорошо, но часто важнее всё-таки скорость выполнения, размеры потребляемой памяти и т. п... иногда полезно вообще такие операции вынести в готовую таблицу и читать из неё, а не считать)) зависит от задачи, но в институте я бы за такой универсальностью не гнался, а в реальной жизни если понадобится - проводится рефакторинг) ну естественно выяснив, насколько реально это надо))
scanf("%d.%d.%d.%d.%d", &a, &b, &c, &d, &e);
Мне дали код к последней задачи про вектора, но появляются 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 <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: Все сделал наконец-то :)