Перейти к содержимому

Фотография

C и C++


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 91

#61 Jabberwocker

Jabberwocker
  • Старожилы
  • PipPipPipPipPipPip
  • Джентльмен удачи

  • Cообщений: 2 792
215
Маленький пони

Отправлено 25 Январь 2016 - 20:29

Единственное, что я не прошёл – тему про структуры и объединения.

Лучше бы вместо графического режима (устаревшего как навоз мамонта) разобралося со структурами данных.
  • 0

#62 初音ミクこんばんは

初音ミクこんばんは
  • Старожилы
  • PipPipPipPipPipPip
  • балдёж

  • Cообщений: 2 821
47
Няшка

Отправлено 26 Январь 2016 - 03:21

С ними я разбирался ещё более десяти лет назад. Просто они имеют отношение к классам (очень похоже), а к классам я пока не тороплюсь.
В тех мелких задачах, с которыми я сталкивался, можно обойтись без структур. К ним ещё вернусь как-нибудь в другой раз.
Графику я тоже знаю со школьных лет.
Далее по курсу – Visual Basic 5, в котором абсолютно нечего учить. Ну а пока я читаю теорию C и теорию программирования.
  • 0

#63 Jabberwocker

Jabberwocker
  • Старожилы
  • PipPipPipPipPipPip
  • Джентльмен удачи

  • Cообщений: 2 792
215
Маленький пони

Отправлено 26 Январь 2016 - 07:59

Ну, вообще говоря, класс -- это структура с методами.
  • 0

#64 Jabberwocker

Jabberwocker
  • Старожилы
  • PipPipPipPipPipPip
  • Джентльмен удачи

  • Cообщений: 2 792
215
Маленький пони

Отправлено 26 Январь 2016 - 10:10

Список, дерево и прочее без понятия "структура" строить сложновато. Оно конечно можно все имитировать через разнородные массивы (в конце концов, память компа в классической архитектуре -- массив байтиков), но как-то уныло.
  • 0

#65 Jabberwocker

Jabberwocker
  • Старожилы
  • PipPipPipPipPipPip
  • Джентльмен удачи

  • Cообщений: 2 792
215
Маленький пони

Отправлено 26 Январь 2016 - 13:21

тогда нужны кортежи / tuple.
и как только мы заговорим о реализации этих самых структур -- опять выползают структуры и указатели.
  • 0

#66 初音ミクこんばんは

初音ミクこんばんは
  • Старожилы
  • PipPipPipPipPipPip
  • балдёж

  • Cообщений: 2 821
47
Няшка

Отправлено 16 Март 2016 - 18:41

Среда программирования IDE, или тайная лаборатория алхимика. Состав: MS-DOS + Turbo C.

Изображение

Изображение
  • 0

#67 Jabberwocker

Jabberwocker
  • Старожилы
  • PipPipPipPipPipPip
  • Джентльмен удачи

  • Cообщений: 2 792
215
Маленький пони

Отправлено 16 Март 2016 - 20:46

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

#68 初音ミクこんばんは

初音ミクこんばんは
  • Старожилы
  • PipPipPipPipPipPip
  • балдёж

  • Cообщений: 2 821
47
Няшка

Отправлено 17 Март 2016 - 03:58

А я дебаггером не пользуюсь. Не приучен. Не только внешним, но и встроенным.
А когда что-то не работает, начинаю гадать, пытаясь по внешнему виду определить, что там не работает или работает неправильно. А может, всё как раз работает, а я неправильно понимаю?
Отмечу удобную навигацию в программе клавишами <Page-up>, <Page-down>, <Ctrl>+<Home>, <Ctrl>+<End>, а также возможность копирования текста и его выделения. Очень пригодилось. Например, в том участке кода, наверху.
Торможение в процессе программирования сводится, таким образом, к необходимости соображать, а вовсе не к недостаткам IDE.
  • 0

#69 初音ミクこんばんは

初音ミクこんばんは
  • Старожилы
  • PipPipPipPipPipPip
  • балдёж

  • Cообщений: 2 821
47
Няшка

Отправлено 17 Март 2016 - 07:59

Программа, которая строит трёхмерные графики функций.
f1 = 3x2 / 5y2
f2 = x2 / y2
f3 = y - x2 / y2
f4 = (6xy + 3x2y2) / (7x - 12y)

Скриншоты:
Изображение
Скрытый текст

Программа:
Скрытый текст

  • 0

#70 niiro dzyaki

niiro dzyaki
  • Старожилы
  • PipPipPipPipPipPipPip
  • провокатор

  • Cообщений: 16 291
349
Маленький пони

Отправлено 17 Март 2016 - 09:27

В приличном обществе за magic numbers принято бить по рукам тем, что Гатс называет мечом.
  • 0

#71 初音ミクこんばんは

初音ミクこんばんは
  • Старожилы
  • PipPipPipPipPipPip
  • балдёж

  • Cообщений: 2 821
47
Няшка

Отправлено 17 Март 2016 - 10:26

Согласно математике magic numbers можно использовать.
В приличном обществе не бьют, а если бьют, то, во-первых, это не приличное общество, а во-вторых, надо уносить ноги, чтобы спасти руки. А в-третьих, можно же и отбиваться. На том же основании.

Сообщение отредактировал 初音ミクこんばんは: 17 Март 2016 - 10:26

  • 0

#72 Jabberwocker

Jabberwocker
  • Старожилы
  • PipPipPipPipPipPip
  • Джентльмен удачи

  • Cообщений: 2 792
215
Маленький пони

Отправлено 17 Март 2016 - 10:40

это называется "воспитывают".
а если запустить твою поделку на древнем CGA, у которого 320*200 ?
понятно, что на "один раз", "на коленке" так и пишут. но другим стараются этого не показывать.
  • 0

#73 Xarlamov

Xarlamov
  • Старожилы
  • PipPipPipPipPipPipPip
  • Понипластилин

  • Cообщений: 4 792
2 041
Кровосися

Отправлено 17 Март 2016 - 12:08

....


Уровень знаний + желание учиться + куча свободного времени.

Все это отлично подходит для написания курсовых, решения контрольных - особенно для всевозможных непрофильных заочников (типа экономистов-юристов). Там overqualified скорее вреден, трудно объяснять и работы получаются неубедительные.
Когда-то давно этим занимался, но мне было проще найти клиентуру - препод-лаборант. Для начала можно по знакомым пробить тему или в СС поискать - частенько попадаются запросы в стиле - кто поможет.

Подработка, общение, повышение собственной квалификации - может куда в 1С потянет, а это уже практично.

Сообщение отредактировал Xarlamov: 17 Март 2016 - 12:11

  • 0

#74 初音ミクこんばんは

初音ミクこんばんは
  • Старожилы
  • PipPipPipPipPipPip
  • балдёж

  • Cообщений: 2 821
47
Няшка

Отправлено 17 Март 2016 - 14:22

Просто я реализую то, что собирался реализовать где-то году в 1993-ем.
Раньше тоже пытался неоднократно, у меня целая стопка распечаток лежит с начала века.
Насчёт CGA лучше не делать, когда я начинал строить графики, разрешение было уже достаточно высоким (хотя не помню конкретно). Мне просто нравится читать такие книги, разбираться в таких вещах. Ведь меня никто этому не учил и не показывал, что у него получается.
К специалистам меня не подпускают. Обычно они меня гонят. Поэтому я так и пишу.
  • 0

#75 初音ミクこんばんは

初音ミクこんばんは
  • Старожилы
  • PipPipPipPipPipPip
  • балдёж

  • Cообщений: 2 821
47
Няшка

Отправлено 02 Апрель 2016 - 10:19

Программа построения графика в трёхмерных координатах. Для простоты выбрана функция z = x / y. Управление: поворот графика влево-вправо, вверх-вниз, возврат на место и выход.
Скачать программу, скриншоты и текст программы можно тут: https://yadi.sk/d/i2-Z07Qjqg6bn
Программа написана под MS-DOS. Чтобы снять скриншоты, я запустил её под Windows 95. Для того, чтобы скопировать все материалы сюда (через флешку), я запустил Windows 2000.
Системные требования: 286 и выше, VGA.
Специально для вас я увеличил число комментариев в программе, так что можно считать её документированной.

Скриншоты:
Изображение

То же самое, вид сверху:
Изображение

Немного повернул график вправо:
Изображение

Изображение

Изображение

Текст программы:
Скрытый текст

  • 0

#76 初音ミクこんばんは

初音ミクこんばんは
  • Старожилы
  • PipPipPipPipPipPip
  • балдёж

  • Cообщений: 2 821
47
Няшка

Отправлено 08 Июнь 2016 - 17:12

У меня есть задачник по программированию. Ну самый обычный задачник - 7 тем, в каждой теме около 36 задач. От простых до самых сложных. Я, естественно, взялся за первый раздел. И у меня 6 дорог. Перечисляю. Эти задачи можно решить 6-ю средствами программирования:
C;
C со структурами;
C с классами (C++);
Visual Basic 5.0;
Visual C++ 6.0;
Visual C++ 7.0.
Все 6 способов мне доступны (по крайней мере, теоретически). По любой из дорог я могу идти. Какую выбрать?
Что делать?
Мне нет смысла решать ВСЕ задачи 6 раз каждую. Но в то же время интересен каждый из этих способов, так как нету практики.
И ещё отдельный вопрос - а где взять задачи, заточенные именно под ООП? Я их не наблюдаю... А хотелось бы применить эту концепцию программирования.
Муки выбора...

А.Г. Юркин, "Задачник по программированию". 2002 г. ("Юркин задачник")
Часть III. Прикладные математические задачи.
Глава 7. Арифметика. Страница 77, задача 7.1.

Натуральное число в p-ичной системе счисления задано своими цифрами, хранящимися в массиве K (n). Проверить корректность такого представления и перевести число в q-ичную систему (возможно, число слишком велико, чтобы получить его внутреннее представление; кроме того, p ≤ 10, q ≤ 10).

Скачать программу, её текст и скриншоты:
https://yadi.sk/d/4YZGX3LgsyqyX
Программа совместима с MS-DOS, Windows 95, Windows 2000, Windows Vista 32-bit.
Скриншоты:
----------------------------------------
D:\>cd work

D:\WORK>dir

Volume in drive D has no label
Volume Serial Number is 0C6D-11F0
Directory of D:\WORK

. <DIR> 06-26-16 10:34a .
.. <DIR> 06-26-16 10:34a ..
EGAVGA BGI 5,554 02-18-92 3:00a EGAVGA.BGI
TC BAT 12 06-26-16 10:34a TC.BAT
TCPICK TCP 1,196 07-04-16 1:10p TCPICK.TCP
TCCONFIG TC 1,690 06-26-16 11:03a TCCONFIG.TC
P77 BAK 2,552 07-04-16 1:01p P77.BAK
P77 C 2,720 07-04-16 1:05p P77.C
DONE-1 <DIR> 06-30-16 9:49a DONE-1
P77A C 861 07-01-16 7:40a P77A.C
P77B C 1,800 07-02-16 6:25p P77B.C
P77 OBJ 1,974 07-04-16 1:05p P77.OBJ
P77 EXE 16,907 07-04-16 1:05p P77.EXE
10 file(s) 35,266 bytes
3 dir(s) 104,294,400 bytes free

D:\WORK>
----------------------------------------
P77 EXE 16,907 07-04-16 1:05p P77.EXE
10 file(s) 35,266 bytes
3 dir(s) 104,294,400 bytes free

D:\WORK>p77
Основание первой системы счисления: 6.
Исходное число:
305003355353403410124202243510302244255011321340001513332510022524343343
Промежуточное число в десятичной системе счисления:
000000000000000055664707093046964168171692001782840499583747901638733679
Основание второй системы счисления: 9.
Конечное число:
24521055280543813208204360708881333086022846352066040662160


D:\WORK>p77
Основание первой системы счисления: 10.
Исходное число:
5226524812744766010775243555714506442709497767068114642959602539897612
Промежуточное число в десятичной системе счисления:
5226524812744766010775243555714506442709497767068114642959602539897612
Основание второй системы счисления: 8.
Конечное число:
140734644037735311255677172054235673252536724056404004567741205054231626221414
----------------------------------------

Текст программы:
Скрытый текст

Сообщение отредактировал MrStitch: 05 Июль 2016 - 03:43

  • 0

#77 初音ミクこんばんは

初音ミクこんばんは
  • Старожилы
  • PipPipPipPipPipPip
  • балдёж

  • Cообщений: 2 821
47
Няшка

Отправлено 10 Июль 2016 - 06:59

Список доступных мне языков программирования:

Turbo C 2.0: C
Turbo C 2.0: C со структурами
Borland C++ 3.1: С
Borland C++ 3.1: C со структурами
Borland C++ 3.1: С с классами
Visual Basic 5.0
Visual C++ 6.0
Visual C++ 7.0

Целых 8. И на любом из них можно написать что угодно.
  • 0

#78 初音ミクこんばんは

初音ミクこんばんは
  • Старожилы
  • PipPipPipPipPipPip
  • балдёж

  • Cообщений: 2 821
47
Няшка

Отправлено 13 Июль 2016 - 12:37

Очередной задачник по программированию. Задача:

В написанном выражении
((((1 ? 2) ? 3) ? 4) ? 5) ? 6
вместо каждого знака ? вставить знак одного из четырёх арифметических действий: +, -, *, / так, чтобы результат вычислений равнялся 35.


Автор объяснил словами, как эта задача решается. Но что-то мне это решение не нравится. Например:
"Рассмотрим программу, начиная с метки R. Здесь отыскивается первый член ai в последовательности an, a(n-1), ..., a2, не равный 4. Он увеличивается на 1, а все предыдущие полагаются равными 1."
И так далее.
По-моему, слишком заморочено. А как же "наглядность программ"? Я пытался сотворить нечто подобное, но как-то запутался и желание программировать дальше пропало.
Мы пойдём другим путём.
Автор дал программу, но она на Паскале, а я Паскаль с трудом понимаю. И ответа не дал. Поэтому я сделал всё то же самое, но по-другому.

// p2.cpp : Defines the entry point for the console application.
//   Язык Visual C++ 7.0
//   Консольное приложение

#include "stdafx.h"
#include <conio.h>

int aa (int, int, int);
void ab (int);


int _tmain(int argc, _TCHAR* argv[])
{
	int a, b, c, d, e;
	int f;

	for (a = 0; a < 4; a++)
		for (b = 0; b < 4; b++)
			for (c = 0; c < 4; c++)
				for (d = 0; d < 4; d++)
					for (e = 0; e < 4; e++)
					{
						f = aa (1, a, 2);
						f = aa (f, b, 3);
						f = aa (f, c, 4);
						f = aa (f, d, 5);
						f = aa (f, e, 6);

						if (f == 35)
						{
							printf ("((((1 "); ab (a);
							printf ("2) "); ab (<img src='https://www.animeforum.ru/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />;
							printf ("3) "); ab (c);
							printf ("4) "); ab (d);
							printf ("5) "); ab (e);
							printf ("6 = 35.\n");
						}
					}

	getch ();
	return 0;
}


int aa (int a, int b, int c)
{
	switch (<img src='https://www.animeforum.ru/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />
	{
		case 0: return a + c;
		case 1: return a - c;
		case 2: return a * c;
		case 3: return a / c;
	}

	return 0;
}

void ab (int a)
{
	switch (a)
	{
		case 0: printf ("+ "); break;
		case 1: printf ("- "); break;
		case 2: printf ("* "); break;
		case 3: printf ("/ "); break;
	}
}
Ответ:
((((1 + 2) + 3) * 4) + 5) + 6 = 35.
((((1 + 2) * 3) * 4) + 5) - 6 = 35.
((((1 * 2) * 3) * 4) + 5) + 6 = 35.

  • 0

#79 初音ミクこんばんは

初音ミクこんばんは
  • Старожилы
  • PipPipPipPipPipPip
  • балдёж

  • Cообщений: 2 821
47
Няшка

Отправлено 23 Август 2016 - 05:26

Арифметика длинных целых чисел.

Дано:
9 500 000 000 000 000 000 000 000
1 983 000 000 000 000 000 000 000 000 000 000
Перемножить.

Вот что выдаёт программа:
9 500 000 000 000 000 000 000 000
1 983 000 000 000 000 000 000 000 000 000 000
18 838 500 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000

/*	p8
Язык Turbo C 2.0
Арифметика длинных чисел   */
#include <conio.h>
#include <stdio.h> 
main ()
{
   int a [100], b, c;
   int d [100], e, f;
   int g [100], h, i;
   /*   число; число значащих цифр; число нулей   */

   int j, k;

   /*   начальные данные   */
   for (j = 0; j < 100; j++)  a [j] = d [j] = g [j] = 0;
   a [0] = 9; a [1] = 5; b = 2; c = 23;
   d [0] = 1; d [1] = 9; d [2] = 8; d [3] = 3; e = 4; f = 30;

   /*   печатаем первое число   */
   for (j = 0; j < b + c; j++)
   {
      printf ("%i", a [j]);
      k = b + c - j - 1;
      if (k % 3 == 0  &&  k)  printf (" ");
   }

   /*   печатаем второе число   */
   printf ("\n");
   for (j = 0; j < e + f; j++)
   {
      printf ("%i", d [j]);
      k = e + f - j - 1;
      if (k % 3 == 0  &&  k)  printf (" ");
   }

 
   /*   перемножаем числа   */
   for (j = 0; j < b; j++)
     for (k = 0; k < e; k++)
	g [j + k + 1] += a [j] * d [k];

   h = b + e;
   i = c + f;
   /*   складываем десятки с единицами из соседних разрядов   */
   for (j = h - 1; j; j--)
   {
      g [j - 1] = g [j - 1] + g [j] / 10;
      g [j] = g [j] % 10;
   }

   /*   проверяем, является ли первая цифра значащей или нет   */
   if (g [0] == 0)
   {
      for (j = 0; j < h - 1; j++)  g [j] = g [j + 1];
      g [h - 1] = 0;
      h--;
   }

   /*   печатаем третье число   */
   printf ("\n");
   for (j = 0; j < h + i; j++)
   {
      printf ("%i", g [j]);
      k = h + i - j - 1;
      if (k % 3 == 0  &&  k)  printf (" ");
   }

   printf ("\n");
   getch ();
   printf ("\n");
}

  • 0

#80 初音ミクこんばんは

初音ミクこんばんは
  • Старожилы
  • PipPipPipPipPipPip
  • балдёж

  • Cообщений: 2 821
47
Няшка

Отправлено 28 Август 2016 - 08:36

Всё то же самое, но другим макаром.

/*   p9
     Язык Turbo C
     Арифметика длинных целых чисел   */

#include <conio.h>
#include <stdio.h>

int aa [100], ab, ac;
int ba [100], bb, bc;
int ca [100], cb, cc;

da ();   /*   печать первого числа   */
db ();   /*   печать второго числа   */
dc ();   /*   печать третьего числа   */

dd ();   /*   ca = aa * ba   */


main ()
{
   int a;

   for (a = 0; a < 100; a++)  aa [a] = ba [a] = ca [a] = 0;
   aa [0] = 9; aa [1] = 5; ab = 2; ac = 23;
   ba [0] = 1; ba [1] = 9; ba [2] = 8; ba [3] = 3; bb = 4; bc = 30;

   dd ();
   da ();
   db ();
   dc ();

   getch ();
   printf ("\n");
}


da ()
{
   int a, b;

   for (a = 0; a < ab + ac; a++)
   {
      printf ("%i", aa [a]);
      b = ab + ac - a - 1;
      if (b % 3 == 0  &&  <img src='https://www.animeforum.ru/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />  printf (" ");
   }

   printf ("\n");
}

db ()
{
   int a, b;

   for (a = 0; a < bb + bc; a++)
   {
      printf ("%i", ba [a]);
      b = bb + bc - a - 1;
      if (b % 3 == 0  &&  <img src='https://www.animeforum.ru/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />  printf (" ");
   }

   printf ("\n");
}

dc ()
{
   int a, b;

   for (a = 0; a < cb + cc; a++)
   {
      printf ("%i", ca [a]);
      b = cb + cc - a - 1;
      if (b % 3 == 0  &&  <img src='https://www.animeforum.ru/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />  printf (" ");
   }

   printf ("\n");
}


dd ()
{
   int a, b;

   for (a = 0; a < ab; a++)
      for (b = 0; b < bb; b++)
         ca [a + b + 1] += aa [a] * ba [b];

   cb = ab + bb;
   cc = ac + bc;
   for (a = cb - 1; a; a--)
   {
      ca [a - 1] = ca [a - 1] + ca [a] / 10;
      ca [a] = ca [a] % 10;
   }

   if (ca [0] == 0)
   {
      for (a = 0; a < cb - 1; a++)  ca [a] = ca [a + 1];
      ca [cb - 1] = 0;
      cb--;
   }
}

  • 0




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных