初音ミクこんばんは Опубликовано 31 июля, 2015 Автор Жалоба Поделиться Опубликовано 31 июля, 2015 Очередная программа под MS-DOS. Содержит в себе энное количество примеров из книги по программированию. /* p42 Простые программы */ #include <conio.h> #include <ctype.h> #include <stdio.h> #include <string.h> float ga = 3.1415926; ja (); jb (); jc (); jd (float); je (int *); jf (); jg (); jh (); ji (int, int); jj (int *, int *); jk (char *, int); jl (int a [3] [3], int b [3] [3], int c [3] [3]); float ka (float); float kb (float); int *la (int *); main () { int aa, ab, ac; int ba, bb; int *ca, *cb, **cc; float da, db; float ea; float *fa; unsigned ma; char pa; char qa; char *ra = "String Of Letters in Different Registers."; char *rb; char sa [80], sb [20], sc [10]; char sd [10] = {1, 23, 4, 7, 8, 0, 1, 9, 4, 7}; char se [10] = {1, 3, -5, 7, 9, 0, 22, 4, 6, 8}; char ta [80]; char ua [5] [20]; int va [3] [3] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; int vb [3] [3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int vc [3] [3]; /* printf ("Input two integers: "); scanf ("%i%i", &ba, &bb); printf ("Input float: "); scanf ("%f", &ea); printf ("Press any key: "); qa = getche (); printf ("\nInput string: "); gets (sa); gets (sa); printf ("Input string: "); scanf ("%[0123456789]%s", sb, sc); */ ba = 1; bb = 2; ea = 3; qa = 'b'; strcpy (sa, "c"); strcpy (sb, "d"); strcpy (sc, "e"); printf ("Input float: "); scanf ("%f", &ea); printf ("Press any key: "); qa = getchar (); qa = getchar (); printf ("Input string: "); gets (ta); gets (ta); aa = 1996; printf ("Сейчас %i год.\n", aa); da = ga * 2 * ba; printf ("Радиус %i, длина %.4g.\n", ba, da); da = ga * 2 * ea; db = ga * ea * ea; printf ("Радиус %.4g, длина окружности %.4g, площадь круга %.4g.\n", ea, da, db); ja (); jb (); jc (); aa = 5; jd (aa); printf ("Длина окружности радиуса %i равна %.4g.\n", aa, ka (aa)); for (aa = 10; aa > 0; aa--) { printf ("%i", aa); if (aa > 1) printf (" "); } printf ("\nСтарт!\n"); ma = 60000; aa = ma; printf ("aa = %i, ma = %u.\n", aa, ma); pa = 'c'; printf ("%c", pa); pa = '+'; printf ("%c%c\n", pa, pa); if (qa == 'a') printf ("Вы нажали клавишу \"a\".\n"); printf ("Вы нажали клавишу \"%c\".\n", qa); printf ("Я знаю ваше имя; ваше имя %s.\n", sa); printf ("%s..%s\n", sb, sc); printf ("Целая часть %i. ", ba / bb); printf ("Остаток от деления %i.\n", ba % bb); aa = 5; ab = 60; aa++; ++ab; printf ("aa = %i, ab = %i.\n", aa, ab); printf ("aa = %i, ab = %i.\n", aa++, ++ab); aa = 101 <= 105; ab = 101 > 105; printf ("true - %i, false - %i.\n", aa, ab); if (ea > 0) {aa = 1; printf ("Число %g положительное, aa = %i.\n", ea, aa);} if (ea == 0) {aa = 0; printf ("Число %g равно нулю, aa = %i.\n", ea, aa);} if (ea < 0) {aa = -1; printf ("Число %g отрицательное, aa = %i.\n", ea, aa);} if (ea > 0) {aa = 1; printf ("Число %g положительное.\n", ea);} else if (ea < 0) {aa = -1; printf ("Число %g отрицательное.\n", ea);} else {aa = 0; printf ("Число %g равно нулю.\n", ea);} if (qa >= 'А' && qa <= 'Я') { switch (qa) { case 'А': printf ("Алексеев\n"); break; case 'Б': printf ("Булгаков\n"); break; case 'В': printf ("Волошин\n"); break; case 'Г': printf ("Гоголь\n"); break; default: printf ("Достоевский, Зощенко и другие\n"); break; } } else printf ("Надо было ввести заглавную русскую букву.\n"); if (qa >= 'А' && qa <= 'Я') { switch (qa) { case 'А': printf ("Алексеев\n"); case 'Б': printf ("Булгаков\n"); case 'В': printf ("Волошин\n"); case 'Г': printf ("Гоголь\n"); default: printf ("Достоевский, Зощенко и другие\n"); } } else printf ("Надо было ввести заглавную русскую букву.\n"); for (aa = 0; aa < 10; aa++) for (ab = 0; ab < 6; ab++) { printf ("%i * %i = %-2i", aa, ab, aa * ab); if (ab < 5) printf (" "); else printf ("\n"); } for (aa = 0; aa < 1000; aa++) { printf ("%i - %i.", aa, aa * aa * aa); if (aa * aa * aa > 10000) { printf ("\n"); break; } else printf (" "); } for (aa = 1; aa < 1000; aa++) { if (aa % 7) continue; printf ("%-5i", aa); } printf ("\n"); strcpy (sa, "Привет, "); strcpy (sb, "мир."); puts (sa); puts (sb); strcat (sa, sb); puts (sa); puts (sb); printf ("Строка \"%s\" имеет длину %i символов.\n", ta, strlen (ta)); strcpy (ua [0], "Turbo Basic"); strcpy (ua [1], "Turbo Pascal"); strcpy (ua [2], "Borland C++"); strcpy (ua [3], "Turbo Prolog"); strcpy (ua [4], "Paradox"); printf ("Неотсортированный массив:"); for (aa = 0; aa < 10; aa++) printf (" %i", sd [aa]); for (aa = 0; aa < 9; aa++) for (ab = 0; ab < 9; ab++) if (sd [ab] < sd [ab + 1]) { ac = sd [ab]; sd [ab] = sd [ab + 1]; sd [ab + 1] = ac; } printf ("\nОтсортированный массив:"); for (aa = 0; aa < 10; aa++) printf (" %i", sd [aa]); da = 10.1; fa = &da; db = *fa; printf ("\nda = %g, db = %g.\n", da, db); (*fa)++; printf ("da = %g, db = %g.\n", da, db); db = 1 + *fa * db; printf ("da = %g, db = %g.\n", da, db); aa = 10; ca = &aa; cb = ca; printf ("%p\n", ca); printf ("%p\n", cb); printf ("%i, %i.\n", aa, *cb); da = 10.1; ca = (int *) &da; db = *ca; printf ("da = %g, db = %g.\n", da, db); ca = &aa; printf ("%p, %p.\n", ca, ++ca); printf ("Строка Будет Напечатана Заглавными Буквами.\n"); aa = 0; while (ra [aa]) printf ("%c", toupper (ra [aa++])); printf ("\nСтрока будет напечатана строчными буквами.\n"); rb = ra; while (*rb) printf ("%c", tolower (*rb++)); aa = 7; ca = &aa; cc = &ca; printf ("\naa = %i, ca = %p, cc = %p.\n", aa, ca, cc); (*ca)++; printf ("aa = %i, ca = %p, cc = %p.\n", aa, ca, cc); **cc = 12; printf ("aa = %i, ca = %p, cc = %p.\n", aa, ca, cc); da = 5.2; printf ("Квадрат числа %.4g равен %.4g.\n", da, kb (da)); la (&aa); aa = 10; je (&aa); jf (); aa = 1; jg (); printf ("В функции \"main\" значение aa равно %i.\n", aa); for (aa = 1; aa < 4; aa++) { printf ("Вызов # %i.\n", aa); jh (); printf ("Вызов # %i.\n", aa); jh (); } aa = 5; ab = 10; printf ("Сначала aa = %i, ab = %i.\n", aa, ab); ji (aa, ab); printf ("Теперь aa = %i, ab = %i.\n", aa, ab); printf ("Ничего не изменилось.\n"); jj (&aa, &ab); printf ("Теперь aa = %i, ab = %i.\n", aa, ab); printf ("Значения поменялись.\n"); aa = 10; printf ("До сортировки: "); for (ab = 0; ab < 10; ab++) { printf ("%i", se [ab]); if (ab < 9) printf (", "); else printf (".\n"); } jk (se, aa); printf ("После сортировки: "); for (ab = 0; ab < 10; ab++) { printf ("%i", se [ab]); if (ab < 9) printf (", "); else printf (".\n"); } jl (va, vb, vc); printf ("Массив \"vc\":\n"); for (aa = 0; aa < 3; aa++) printf ("%-3i %-3i %-3i\n", vc [aa] [0], vc [aa] [1], vc [aa] [2]); getch (); printf ("\n\n"); } ja () {printf ("Вызвали первую функцию.\n");} jb () {printf ("Вызвали вторую функцию.\n");} jc () {printf ("Вызвали третью функцию.\n");} jd (float a) {printf ("Длина окружности радиуса %.4g равна %.4g.\n", a, ga * 2 * a);} je (int *a) {*a = *a * *a;} jf () { int a; for (a = 0; a < 80; a++) printf ("-"); } jg () { int aa; aa = 10; printf ("В функции \"jg\" значение aa равно %i.\n", aa); } jh () { int a; static b = 1; a = 1; printf ("a = %i, b = %i.\n", a++, b++); } ji (int a, int B) { int c; c = a; a = b; b = c; } jj (int *a, int *B) { int c; c = *a; *a = *b; *b = c; } jk (char a [], int B) { int c, d, e; for (c = 0; c < b - 1; c++) for (d = 0; d < b - 1; d++) if (a [d] > a [d + 1]) { e = a [d]; a [d] = a [d + 1]; a [d + 1] = e; } } jl (int a [3] [3], int b [3] [3], int c [3] [3]) { int d, e, f; for (d = 0; d < 3; d++) for (e = 0; e < 3; e++) { c [d] [e] = 0; for (f = 0; f < 3; f++) c [d] [e] += a [d] [f] * b [f] [e]; } } float ka (float a) {return ga * 2 * a;} float kb (float a) {return a * a;} int *la (int *a) { *a = *a * *a; return a; } Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 14 ноября, 2015 Автор Жалоба Поделиться Опубликовано 14 ноября, 2015 Очередной шедевр программирования. Повторил часть предыдущей программы. /* p42 - p74 Язык Turbo C 2.0 */ #include <conio.h> #include <stdio.h> float ga = 3.1415926; /* число пи */ char gb; /* переменная ввода */ ja (); jb (); jc (); jd (float); float ka (float); main () { int aa, ab; int ba, bb; /* переменная ввода */ float da, db; float ea; /* переменная ввода */ unsigned ma; char pa; char sa [80], sb [10], sc [10]; /* массивы ввода */ printf ("Введите два целых числа и одно рациональное число: "); scanf ("%i%i%f", &ba, &bb, &ea); printf ("Введите символ: "); gb = getche (); printf ("\nВведите строку: "); gets (sa); gets (sa); printf ("Введите строку: "); scanf ("%[0123456789]%s", sb, sc); printf ("\n"); aa = 1996; printf ("Сейчас %i год.\n", aa); da = ga * 2 * ba; printf ("Радиус = %i, длина = %.4g.\n", ba, da); da = ga * 2 * ea; db = ga * ea * ea; printf ("Радиус = %.4g, длина окружности = %.4g, площадь круга = %.4g.", ea, da, db); printf ("\n"); ja (); jb (); jc (); da = 5; jd (da); printf ("Длина окружности радиуса %.4g равна %.4g.\n", da, ka (da)); for (aa = 10; aa; aa--) printf ("%i ", aa); printf ("Старт!\n"); ma = 60000; aa = ma; printf ("aa = %i, ma = %u.\n", aa, ma); je (ba); pa = 'c'; printf ("%c", pa); pa = '+'; printf ("%c%c\n", pa, pa); if (gb == 'a') printf ("1. Вы нажали клавишу 'a'.\n"); printf ("2. Вы нажали клавишу '%c'.\n", gb); printf ("Я знаю ваше имя... ваше имя - '%s'.\n", sa); printf ("%s..%s\n", sb, sc); printf ("Целая часть %i; остаток от деления %i.\n", ba / bb, ba % bb); aa = 5; ab = 60; aa++; ++ab; printf ("aa = %i, ab = %i.\n", aa, ab); printf ("aa = %i, ab = %i.\n", aa++, ++ab); aa = 101 <= 105; ab = 101 > 105; printf ("true: %i, false: %i.\n", aa, ab); getch (); printf ("\n\n"); } ja () {printf ("Вызвали первую функцию.\n");} jb () {printf ("Вызвали вторую функцию.\n");} jc () {printf ("Вызвали третью функцию.\n");} jd (float a) {printf ("Длина окружности радиуса %.4g равна %.4g.\n", a, ga * 2 * a);} je (int a) { int b; for (b = 0; b < a; b++) printf ("%c", gb); printf ("\n"); } float ka (float a) {return ga * 2 * a;} Скачать текст программы можно тут:https://yadi.sk/i/ScUvvSJXkSyJy Программы пишутся на IDE HDD 160 Gb под Celeron 333. На нём размечено 0,1 Gb под C: и установлен DOS с русификатором "keyrus.com". Из этих 100 Mb для DOS, Turbo C 2.0 и программы пока что понадобилось около 4 Mb.Для переноса сюда подцепил второй HDD, с которого запустил Windows 2000 и скопировал текст программы на флэшку. Затем в Vista открыл Wordpad, в нём - текст программы под DOS (есть такая опция!) Дальше – дело техники. Форматирование в Word и выкладывание на Яндекс.Диск. Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 15 ноября, 2015 Автор Жалоба Поделиться Опубликовано 15 ноября, 2015 жизнь - больпрограммирование - творчество Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 26 декабря, 2015 Автор Жалоба Поделиться Опубликовано 26 декабря, 2015 В двадцатый раз стал читать книгу 1999-го года Б.И. Березина, С.Б. Березина "Начальный курс C и C++".Думал-думал, как же её лучше прочитать? Она написана под DOS, и там есть существенные моменты, которые никак не обойти. То есть под Windows там надо слишком уж извратиться, чтобы реализовать примеры.Так ничего и не придумал. Стал читать так же, как 22 года назад учил C по другой книжке под названием "Turbo C". Для этого на Celeron 333 со сдохшим вентилятором установил 160 Gb HDD IDE. Разметил там логический диск C размером 0,1 Gb на FAT16. Установил MS-DOS 6.22 и русификатор "keyrus.com". Затем установил Turbo C 2.0. Всё это хозяйство вместе с программами-примерами заняло меньше 5 Mb.Затем приступил к чтению книги.Прочитал часть первого раздела, где рассказывалось про C. (Вторая часть посвящена C++.) Остановился в тот момент, когда пошли слишком сложные вещи, которые никогда не применяю на практике: функции с переменным числом параметров, указатели на функцию, нелокальные переходы и т.д. Примеры из книги разделил на функциональные группы по удобству использования; иногда прерывал и начинал сначала, когда программа занимала уже много места (лишь для удобства), хотя ничто не ограничивало их "расти" и дальше. В итоге получилось 7 программ, две последние из которых нефункциональны по своей структуре.В приведённом файле можно посмотреть эти программы.https://yadi.sk/i/TZBWu7PdmWDyKВпоследствии, чтобы достать эти файлы, подключил этот HDD вторым к системе Windows 2000 на том же компьютере. Затем скопировал программы на флешку 1 Gb через USB. С флешки переписал в Windows Vista.Сменил расширение файлов на *.txt, затем из программы WordPad открыл их как текстовые файлы MS-DOS и сохранил как текстовые файлы Windows. Ну а дальше в Word и в документ.Теперь настало время думать, какую книгу читать следующей. Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 28 декабря, 2015 Автор Жалоба Поделиться Опубликовано 28 декабря, 2015 Удали функцию getch () в конце программы – просить не будет. Она всё равно только для удобства, чтобы экран сразу не исчезал по окончании работы программы, а то приходится каждый раз переключать на этот экран <Alt> + <F5> (чтобы просмотреть, что же там программа наработала). Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 7 января, 2016 Автор Жалоба Поделиться Опубликовано 7 января, 2016 (изменено) Очередная книга – А.Г. Юркин, "Задачник по программированию", 2002 г. От теории перехожу к практике. Поскольку Turbo C не нужен, сделал только 5 задач. Критерии отбора задач такие: исходными данными служат три (или меньше) целых числа. Все задачи из первого раздела "Линейные алгоритмы". Но алгоритмы всё равно получились нелинейными. Но рабочими.Скачать документ для печати можно здесь: https://yadi.sk/i/69OIckzemiYjr А.Г. Юркин. "Задачник по программированию", 2002 г. 1.1. Угол 'alpha' задан в градусах, минутах и секундах. Найти его величину в радианах с максимально возможной точностью. Рекомендуется проверить работоспособность программы для углов, больших развернутого, а также для отрицательных углов. 1.3. Длина отрезка задана в дюймах, 1 дюйм = 2,54 см. Перевести значение длины в метрическую систему, то есть выразить ее в метрах, сантиметрах и миллиметрах. Так, например, 21 дюйм = 0 м 53 см 3,4 мм. 1.6. Коммерсант, имея стартовый капитал k рублей, занялся торговлей, которая ежемесячно увеличивает капитал на p%. Через сколько лет он накопит сумму s, достаточную для покупки собственного магазина? 1.8. За первый год производительность труда на предприятии возросла на p1%, за второй и третий - соответственно на p2% и p3%. Найти среднегодовой прирост производительности (в процентах). 1.9. Заданы три корня кубического уравнения x1, x2, x3. Найти коэффициенты этого уравнения. Код: Скрытый текст /* Задачник по программированию */ /* Язык Turbo C 2.0 */ #include <conio.h> #include <math.h> #include <stdio.h> main () { int aa, ab, ac; /* переменные ввода */ int ba, bb; double da; float ga, gb; long ja, jb, jc; printf ("Введите три целых числа: "); scanf ("%i%i%i", &aa, &ab, &ac); /* 1.1 - 1 */ da = abs (aa) + (abs (ab) + (double) abs (ac) / 60) / 60; da = da / 180 * 3.1415926; if (aa < 0) da = -da; printf ("1.1. Величина угла в радианах равна %.8g.\n", da); /* 1.3 - 2 */ ga = aa * .0254; ba = ga * 1.0001; ga = (ga - ba) * 100; bb = ga * 1.0001; ga = (ga - bb) * 10; if (ga < 0) ga = 0; printf ("1.3. Длина отрезка равна %i дюймов = %i м %i см %.2g мм.\n", aa, ba, bb, ga); /* 1.6 - 3 */ printf ("1.6. Стартовый капитал - %i руб.\n", aa); printf ("Доходность - %i% в месяц.\n", ab); printf ("Стоимость магазина - %i руб.\n", ac); if (!aa) {ba = 0; goto aaa;} ga = ac / aa; gb = 1 + ab / 100.; if (ga <= 0 || gb <= 0) {ba = 0; goto aaa;} ga = log (ga) / log (gb) / 12; ba = ga; if (ga > ba) ba++; aaa: printf ("Нужная сумма будет накоплена через %i лет.\n", ba); /* 1.8 - 4 */ ga = (1 + aa / 100.) * (1 + ab / 100.) * (1 + ac / 100.); if (ga > 0) gb = exp (1 / 3. * log (ga)); else gb = 1; gb = (gb - 1) * 100; printf ("1.8. Среднегодовой прирост производительности %.4g%.\n", gb); /* 1.9 - 5 */ ja = -((long) aa + ab + ac); jb = (long) aa * ab + (long) aa * ac + (long) ab * ac; jc = -((long) aa * ab * ac); printf ("1.9. Кубическое уравнение: x^3 + %li x^2 + %li x + %li = 0.\n", ja, jb, jc); getch (); printf ("\n\n"); } Изменено 10 января, 2016 пользователем MrStitch (смотреть историю редактирования) Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 8 января, 2016 Автор Жалоба Поделиться Опубликовано 8 января, 2016 (изменено) Пришлось выдумать такую систему, которая: абстрактнаподходит ко множеству разнотипных задачнесамопересекающаяся!относительно компактна. Изменено 8 января, 2016 пользователем 初音ミクこんばんは (смотреть историю редактирования) Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
Xmire Опубликовано 22 января, 2016 Жалоба Поделиться Опубликовано 22 января, 2016 Прочитал темку. Подумал, шо это такой умелый троллинг. Надеюсь, шо прав. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 23 января, 2016 Автор Жалоба Поделиться Опубликовано 23 января, 2016 Просто информация в моей памяти не задерживается. Уже лет 20 как. Пришлось завести специальную темку, чтобы хоть как-то отмечать, что же именно я изучил... А то вроде прочитал книжку... и ничего не узнал. Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 25 января, 2016 Автор Жалоба Поделиться Опубликовано 25 января, 2016 Возвращаюсь обратно к учебнику "Начальный курс C и C++". Прошёл оставшиеся блоки по языку C – несколько заключительных сложных тем, темы про вывод текста в текстовом режиме и темы про вывод графики в графическом режиме. Параметры графического режима: VGA 640x480, 16 colors.Почитать программы можно здесь: https://yadi.sk/i/c3x1x6zpnhx8rЕдинственное, что я не прошёл – тему про структуры и объединения. Это тоже входит в C. Дополнительно к уже созданному диску 100 Mb сделал ещё один диск 100 Mb, куда установил "Borland C++ 3.1". Все программы на C реализовал там. Отличие от "Turbo C 2.0" в том, что буковки стали цветные. Там оконная среда, позволяющая открывать сразу несколько файлов; кроме того, среда распознаёт ключевые слова, идентификаторы, строки препроцессора и комментарии, выделяя их специальным цветом.Работать намного приятнее. И самое главное – не тормозит в отличие от Windows.К сожалению, что-то в компьютере не так, и после выхода из этой среды компьютер перестаёт воспринимать клавиатуру. Может, потому что она USB? В общем, приходится после выхода либо нажимать <Reset>, либо выключать компьютер. /* p150 - программы работы с текстом */ #include <conio.h> main () { int a, b; char d [288]; char *e = " Это строка ! "; char f; clrscr (); textmode (C80); for (a = BLUE; a <= WHITE; a++) { textcolor (a); for (b = BLACK; b <= LIGHTGRAY; b++) { textbackground (B); cprintf (" ТЕСТ "); } } getch (); textcolor (WHITE | BLINK); textbackground (BLACK); cprintf (" КОНЕЦ ТЕКСТА "); textmode (LASTMODE); getch (); textbackground (BLACK); window (5, 5, 20, 10); textattr ((GREEN << 4) + RED); clrscr (); getch (); cputs ("\n Привет, мир.\n\n\r"); cputs ("Нажмите любую клавишу."); getch (); window (1, 1, 80, 25); gettext (4, 4, 21, 11, d); textbackground (BLUE); textcolor (WHITE); for (f = 1; f < 23; f++) { gotoxy (1, f); cputs (e); cputs (e); cputs (e); cputs (e); } getch (); puttext (24, 5, 41, 12, d); getch (); for (f = 1; f < 5; f++) movetext (22, 4, 32, 8, 10 * f, 17); getch (); normvideo (); return 0; } Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
Jabberwocker Опубликовано 25 января, 2016 Жалоба Поделиться Опубликовано 25 января, 2016 Единственное, что я не прошёл – тему про структуры и объединения.Лучше бы вместо графического режима (устаревшего как навоз мамонта) разобралося со структурами данных. Цитата MAL :: [Дядьки] : [Maschera] : [Alter Madness] : [Monogatari] : teams Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 26 января, 2016 Автор Жалоба Поделиться Опубликовано 26 января, 2016 С ними я разбирался ещё более десяти лет назад. Просто они имеют отношение к классам (очень похоже), а к классам я пока не тороплюсь.В тех мелких задачах, с которыми я сталкивался, можно обойтись без структур. К ним ещё вернусь как-нибудь в другой раз.Графику я тоже знаю со школьных лет.Далее по курсу – Visual Basic 5, в котором абсолютно нечего учить. Ну а пока я читаю теорию C и теорию программирования. Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
Jabberwocker Опубликовано 26 января, 2016 Жалоба Поделиться Опубликовано 26 января, 2016 Ну, вообще говоря, класс -- это структура с методами. Цитата MAL :: [Дядьки] : [Maschera] : [Alter Madness] : [Monogatari] : teams Ссылка на комментарий Поделиться на другие сайты Поделиться
Jabberwocker Опубликовано 26 января, 2016 Жалоба Поделиться Опубликовано 26 января, 2016 Список, дерево и прочее без понятия "структура" строить сложновато. Оно конечно можно все имитировать через разнородные массивы (в конце концов, память компа в классической архитектуре -- массив байтиков), но как-то уныло. Цитата MAL :: [Дядьки] : [Maschera] : [Alter Madness] : [Monogatari] : teams Ссылка на комментарий Поделиться на другие сайты Поделиться
Jabberwocker Опубликовано 26 января, 2016 Жалоба Поделиться Опубликовано 26 января, 2016 тогда нужны кортежи / tuple.и как только мы заговорим о реализации этих самых структур -- опять выползают структуры и указатели. Цитата MAL :: [Дядьки] : [Maschera] : [Alter Madness] : [Monogatari] : teams Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 16 марта, 2016 Автор Жалоба Поделиться Опубликовано 16 марта, 2016 Среда программирования IDE, или тайная лаборатория алхимика. Состав: MS-DOS + Turbo C. http://s6.uploads.ru/t/15oSd.jpg http://s6.uploads.ru/t/7TQmA.jpg Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
Jabberwocker Опубликовано 16 марта, 2016 Жалоба Поделиться Опубликовано 16 марта, 2016 турбо-среда в свое время потрясала, да.воспитанные на перфокартах люди были в шоке, обнаружив не только возможность мгновенно поменять что угодно, но еще и в любой момент проверить значение любой переменной в читаемом виде.правда, это привело к утрате навыков работы с debug.exe ... Цитата MAL :: [Дядьки] : [Maschera] : [Alter Madness] : [Monogatari] : teams Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 17 марта, 2016 Автор Жалоба Поделиться Опубликовано 17 марта, 2016 А я дебаггером не пользуюсь. Не приучен. Не только внешним, но и встроенным.А когда что-то не работает, начинаю гадать, пытаясь по внешнему виду определить, что там не работает или работает неправильно. А может, всё как раз работает, а я неправильно понимаю?Отмечу удобную навигацию в программе клавишами <Page-up>, <Page-down>, <Ctrl>+<Home>, <Ctrl>+<End>, а также возможность копирования текста и его выделения. Очень пригодилось. Например, в том участке кода, наверху.Торможение в процессе программирования сводится, таким образом, к необходимости соображать, а вовсе не к недостаткам IDE. Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 17 марта, 2016 Автор Жалоба Поделиться Опубликовано 17 марта, 2016 Программа, которая строит трёхмерные графики функций.f1 = 3x2 / 5y2f2 = x2 / y2f3 = y - x2 / y2f4 = (6xy + 3x2y2) / (7x - 12y) Скриншоты:http://s3.uploads.ru/t/HJtzn.png http://s2.uploads.ru/t/DBqHQ.png http://s3.uploads.ru/t/anDGQ.png http://s6.uploads.ru/t/pdzKx.png Программа: /* p5 Алгебра Язык Turbo C 2.0 */ #include <conio.h> #include <graphics.h> #include <stdio.h> ga (); /* рисует оси 3D-координат */ gb (int, int, float, int, int, float); /* рисует линию в трехмерном пространстве */ float ha (float, float); /* функция, для которой строится график */ float hb (float, float); float hc (float, float); float hd (float, float); main () { int aa, ab; float da, db, dc, dd; detectgraph (&aa, &ab); initgraph (&aa, &ab, ""); ga (); /* 1 */ db = 0; for (aa = -640; aa < 0; aa += 10) for (ab = -640; ab < 0; ab++) { da = ha (aa / 50., ab / 50.) * 50; if (da > 1000) da = 1000; if (da < -1000) da = -1000; if (ab > -640) gb (aa, ab - 1, db, aa, ab, da); db = da; } getch (); ga (); /* 2 */ for (aa = -640; aa < 640; aa += 10) for (ab = -640; ab < 0; ab++) { da = hb (aa / 50., ab / 50.) * 50; if (da > 1000) da = 1000; if (da < -1000) da = -1000; if (ab > -640) gb (aa, ab - 1, db, aa, ab, da); db = da; } getch (); ga (); /* 3 */ for (aa = -100; aa < -9; aa += 10) for (ab = 10; ab < 101; ab++) { da = hc (aa / 50., ab / 50.) * 50; if (da > 1000) da = 1000; if (da < -1000) da = -1000; if (ab > 10) gb (aa, ab - 1, db, aa, ab, da); db = da; } for (ab = 10; ab < 101; ab += 10) for (aa = -100; aa < -9; aa++) { da = hc (aa / 50., ab / 50.) * 50; if (da > 1000) da = 1000; if (da < -1000) da = -1000; if (aa > -100) gb (aa - 1, ab, db, aa, ab, da); db = da; } getch (); ga (); /* 4 */ for (aa = -640; aa < 640; aa += 10) for (ab = -640; ab < 640; ab++) { dc = aa / 50.; dd = ab / 50.; if (7 * dc - 12 * dd >= 0) da = -1000; else da = hd (dc, dd) * 50; if (da > 1000) da = 1000; if (da < -1000) da = -1000; if (ab > -640 && db > -200) gb (aa, ab - 1, db, aa, ab, da); db = da; } getch (); closegraph (); } ga () /* рисует оси 3D-координат */ { cleardevice (); setcolor (8); line (320, 240, 640, 80); line (320, 240, 0, 80); setcolor (15); line (320, 240, 640, 400); line (320, 240, 0, 400); line (320, 240, 320, 0); setcolor (7); } gb (int a, int b, float c, int d, int e, float f) { line (320 - a + b, 240 + (a + B) / 2. - c, 320 - d + e, 240 + (d + e) / 2. - f); } float ha (float a, float B) {return 3 * a * a / 5 / b / b;} float hb (float a, float B) {return a * a / b / b;} float hc (float a, float B) {return b - a * a / b / b;} float hd (float a, float B) { return (6 * a * b + 3 * a * a * b * B) / (7 * a - 12 * B); } Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
niiro dzyaki Опубликовано 17 марта, 2016 Жалоба Поделиться Опубликовано 17 марта, 2016 В приличном обществе за magic numbers принято бить по рукам тем, что Гатс называет мечом. Цитата [ Last Exile ] [ Моран жив! ] [ Fallout ] [ Админы ] [ Дядьки ] Teams [奇跡を信じて団 ] Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 17 марта, 2016 Автор Жалоба Поделиться Опубликовано 17 марта, 2016 (изменено) Согласно математике magic numbers можно использовать.В приличном обществе не бьют, а если бьют, то, во-первых, это не приличное общество, а во-вторых, надо уносить ноги, чтобы спасти руки. А в-третьих, можно же и отбиваться. На том же основании. Изменено 17 марта, 2016 пользователем 初音ミクこんばんは (смотреть историю редактирования) Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
Jabberwocker Опубликовано 17 марта, 2016 Жалоба Поделиться Опубликовано 17 марта, 2016 это называется "воспитывают".а если запустить твою поделку на древнем CGA, у которого 320*200 ?понятно, что на "один раз", "на коленке" так и пишут. но другим стараются этого не показывать. Цитата MAL :: [Дядьки] : [Maschera] : [Alter Madness] : [Monogatari] : teams Ссылка на комментарий Поделиться на другие сайты Поделиться
Xarlamov Опубликовано 17 марта, 2016 Жалоба Поделиться Опубликовано 17 марта, 2016 (изменено) .... Уровень знаний + желание учиться + куча свободного времени. Все это отлично подходит для написания курсовых, решения контрольных - особенно для всевозможных непрофильных заочников (типа экономистов-юристов). Там overqualified скорее вреден, трудно объяснять и работы получаются неубедительные. Когда-то давно этим занимался, но мне было проще найти клиентуру - препод-лаборант. Для начала можно по знакомым пробить тему или в СС поискать - частенько попадаются запросы в стиле - кто поможет. Подработка, общение, повышение собственной квалификации - может куда в 1С потянет, а это уже практично. Изменено 17 марта, 2016 пользователем Xarlamov (смотреть историю редактирования) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 17 марта, 2016 Автор Жалоба Поделиться Опубликовано 17 марта, 2016 Просто я реализую то, что собирался реализовать где-то году в 1993-ем.Раньше тоже пытался неоднократно, у меня целая стопка распечаток лежит с начала века.Насчёт CGA лучше не делать, когда я начинал строить графики, разрешение было уже достаточно высоким (хотя не помню конкретно). Мне просто нравится читать такие книги, разбираться в таких вещах. Ведь меня никто этому не учил и не показывал, что у него получается.К специалистам меня не подпускают. Обычно они меня гонят. Поэтому я так и пишу. Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
初音ミクこんばんは Опубликовано 2 апреля, 2016 Автор Жалоба Поделиться Опубликовано 2 апреля, 2016 Программа построения графика в трёхмерных координатах. Для простоты выбрана функция z = x / y. Управление: поворот графика влево-вправо, вверх-вниз, возврат на место и выход.Скачать программу, скриншоты и текст программы можно тут: https://yadi.sk/d/i2-Z07Qjqg6bnПрограмма написана под MS-DOS. Чтобы снять скриншоты, я запустил её под Windows 95. Для того, чтобы скопировать все материалы сюда (через флешку), я запустил Windows 2000.Системные требования: 286 и выше, VGA.Специально для вас я увеличил число комментариев в программе, так что можно считать её документированной. Скриншоты:http://sg.uploads.ru/t/3t4fo.png То же самое, вид сверху:http://sg.uploads.ru/t/LYNUg.png Немного повернул график вправо:http://sg.uploads.ru/t/Y2iVf.png http://s8.uploads.ru/t/EYWrQ.png http://sg.uploads.ru/t/UAFcY.png Текст программы: /* p6 Алгебра: построение графика 3D-функции Язык Turbo C 2.0 */ #include <bios.h> #include <conio.h> #include <graphics.h> #include <math.h> float ga, gb, gc; /* вектор ориентации в пространстве осей системы координат - определяющий вектор, ось Oz */ float gd, ge, gf; /* ось Ox в 3D */ float gg, gh, gi; /* ось Oy в 3D */ int ha; /* флаг рисования отрезка в 3D: ha = 0; - не рисовать ha = 1; - первая точка отрезка ha = 2; - вторая точка отрезка */ da (); /* рисование системы 3D-координат и графика */ db (float, float, float, float, float, float); /* рисование линии в трехмерном пространстве */ dc (); /* рисование 3D-графика */ float ea (float, float); /* функция, график которой надо построить */ main () { int aa, ab; float ja, jb; detectgraph (&aa, &ab); initgraph (&aa, &ab, ""); ga = gb = gc = 1; while (1) { da (); aa = bioskey (0); if (aa == 0x11b) /* выход из программы <Esc> */ { closegraph (); return 0; } if (aa == 0x4b00) /* смещение наблюдателя влево <Left arrow> */ { ja = ga * cos (.1) + gb * sin (.1); jb = -ga * sin (.1) + gb * cos (.1); ga = ja; gb = jb; } if (aa == 0x4d00) /* смещение наблюдателя вправо <Right arrow> */ { ja = ga * cos (.1) - gb * sin (.1); jb = ga * sin (.1) + gb * cos (.1); ga = ja; gb = jb; } if (aa == 0x4800) /* смещение наблюдателя вверх <Up arrow> */ { ga += gd * sin (.1); gb += ge * sin (.1); gc += gf * sin (.1); } if (aa == 0x5000) /* смещение наблюдателя вниз <Down arrow> */ { ga -= gd * sin (.1); gb -= ge * sin (.1); gc -= gf * sin (.1); } if (aa == 0x3b00) /* возврат в исходную точку наблюдения <F1> */ { ga = gb = gc = 1; gg = 1; gh = gi = 0; } } } da () { float a, b, c; a = sqrt (ga * ga + gb * gb + gc * gc); /* нормирование вектора ориентации осей координат */ ga /= a; gb /= a; gc /= a; a = ga * gc; /* проекция вектора (0, 0, 1) на определяющий вектор */ b = gb * gc; c = gc * gc; gd = -a; /* проекция вектора (0, 0, 1) на плоскость, ортогональную определяющему вектору */ ge = -b; gf = 1 - c; a = sqrt (gd * gd + ge * ge + gf * gf); /* нормирование вектора оси Ox */ if (a == 0) return; gd /= a; ge /= a; gf /= a; a = gb * gf - gc * ge; /* вычисление вектора оси Oy */ b = gc * gd - ga * gf; /* векторное произведение двух других осей */ c = ga * ge - gb * gd; if (a * gg + b * gh + c * gi < 0) /* инверсия левой тройки векторов */ { gd = -gd; ge = -ge; gf = -gf; gg = -a; gh = -b; gi = -c; } else {gg = a; gh = b; gi = c;} cleardevice (); setcolor (8); /* рисование 3D-графика */ dc (); setcolor (7); /* рисование осей координат в 3D */ db (0, 0, 0, -460, 0, 0); db (0, 0, 0, 0, -460, 0); setcolor (15); db (0, 0, 0, 460, 0, 0); db (0, 0, 0, 0, 460, 0); db (0, 0, 0, 0, 0, 300); } db (float a, float b, float c, float d, float e, float f) { float g, h; /* первая точка на плоскости */ float i, j; /* вторая точка на плоскости */ g = a * gd + b * ge + c * gf; /* скалярное произведение первого вектора и вектора оси Ox */ h = a * gg + b * gh + c * gi; /* проекция первого вектора на ось Ox */ i = d * gd + e * ge + f * gf; /* скалярное произведение второго вектора и вектора оси Oy */ j = d * gg + e * gh + f * gi; /* проекция второго вектора на ось Oy */ if (g > 1000) g = 1000; if (g < -1000) g = -1000; if (i > 1000) i = 1000; if (i < -1000) i = -1000; line (320 - h, 240 - g, 320 - j, 240 - i); } dc () { int a, b; float d, e, f; f = 50; /* масштаб */ e = 0; for (a = -460; a <= 460; a += 20) { ha = 0; for (b = -460; b <= 460; b++) { d = ea (a / f, b / f) * f; if (ha == 2) db (a, b - 1, e, a, b, d); e = d; } } for (b = -460; b <= 460; b += 20) { ha = 0; for (a = -460; a <= 460; a++) { d = ea (a / f, b / f) * f; if (ha == 2) db (a - 1, b, e, a, b, d); e = d; } } } float ea (float a, float B) { float c; if (b == 0) {ha = 0; return 0;} /* область определения функции */ c = a / b; /* функция, график которой надо построить */ if (ha < 2) ha++; if (c > 100) {ha = 0; return 0;} if (c < -100) {ha = 0; return 0;} return c; } Цитата for (j = 0; j < 100; j++) a [j] = d [j] = g [j] = 0; Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.