Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 08.06.2018, 12:47   #161
jura_k
неформал
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 668
Репутация: 75
По умолчанию

Я собираюсь почитать книжку про структуры.
Какую программу мне на эту тему написать?
__________________
Я поэт. Зовут Незнайка. От меня вам балалайка.
Я переводчик. Зовут jura_k. От меня вам программирование под MS-DOS.
jura_k вне форума   Ответить с цитированием
Старый 08.06.2018, 12:52   #162
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,041
Репутация: 2054

icq: 216409213
По умолчанию

Ну вон прошлый пост был про книгу - сделайте АРМ Библиотека с книжками, их характеристиками, читателями и их книгами, списками желаний и т.д.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 08.06.2018, 18:44   #163
jura_k
неформал
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 668
Репутация: 75
По умолчанию

Это вы уже не в структуры, а в базы данных полезли.
Число читателей постоянно меняется (увеличивается). Это что же, делать структуру переменной длины? Это в мои планы не входит. Удлинять массив тоже надо уметь.
__________________
Я поэт. Зовут Незнайка. От меня вам балалайка.
Я переводчик. Зовут jura_k. От меня вам программирование под MS-DOS.
jura_k вне форума   Ответить с цитированием
Старый 08.06.2018, 18:52   #164
alexzk
Участник клуба
 
Регистрация: 12.04.2017
Сообщений: 889
Репутация: 172
По умолчанию

Изобретите std::vector. Можно сразу в виде шаблона. Заодно, на будующее, у вас будет отличный массив переменной длины. Потом, перейдите к std::map и погрузитесь в чудный мир коллюзий и хешей.
С этими двумя ваша программисткая сила возрастет в 15 раз.
Только прийдется писать нормальные имена. Имена вида а-б-с, в будущем вас убьют (медленный яд, срабатывает через 3-4 мес после написания).

Последний раз редактировалось alexzk; 08.06.2018 в 18:55.
alexzk вне форума   Ответить с цитированием
Старый 08.06.2018, 21:49   #165
jura_k
неформал
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 668
Репутация: 75
По умолчанию

Его изобрели ещё до меня в Visual C++ 7 в 2002-ом году. Об этом написано в книге Черносвитова.
После компиляции программы будет всё равно, как назывались переменные.
__________________
Я поэт. Зовут Незнайка. От меня вам балалайка.
Я переводчик. Зовут jura_k. От меня вам программирование под MS-DOS.
jura_k вне форума   Ответить с цитированием
Старый 08.06.2018, 21:55   #166
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,887
Репутация: 6285
По умолчанию

Не все равно автору будет ошибки искать или возвращаться к проге через некоторое время
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 13.06.2018, 12:40   #167
jura_k
неформал
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 668
Репутация: 75
По умолчанию

Дано: "Heroes III".
Надо: нарисовать карту, состоящую из дуг 1/8 окружности.
Среда разработки: MS-DOS, Turbo C, Windows 95; Celeron 333.

Для этого надо нарисовать границу окружности, а потом составить карту из них.
Программа, рассчитывающая границу окружности:
Код:

/*   Радиус   */

#include <math.h>
#include <stdio.h>

main ()
{
   int a, b, c, d;
   FILE *g;

   /*   a - радиус, для которого ведётся расчёт
        b - максимальное значение, для которого считается квадратный корень
        c - счётчик
        d - рассчитанное значение границы окружности   */

   g = fopen ("1.txt", "w");
   for (a = 1; a < 61; a++)   /*   внешний радиус 1/8 окружности   */
   {
      b = a / sqrt (2) + 2;   /*   верхняя граница расчетов   */
      fprintf (g, "r = %i\n", a);
      for (c = 0; c < b; c++)
      {
	 if (c == a) break;
	 d = sqrt (a * a - c * c - .0001) + 1;
	 if (d < c) break;
	 if (d == a) continue;
	 fprintf (g, "%i - %i\n", c, d);
      }

      fprintf (g, "\n");
   }

   fclose (g);
}

В результате получается файл, содержащий рассчитанные границы окружностей различных радиусов.
Но окружность получается неровная. После ручной правки получается следующее:
Цитата:
r = 1

r = 2

r = 3

r = 4
3 - 3

r = 5
3 - 4

r = 6
4 - 5

r = 7
4 - 6
5 - 5

r = 8
4 - 7
5 - 7
6 - 6

r = 9
5 - 8
6 - 7

r = 10
5 - 9
6 - 9
7 - 8
Скачать заготовки карт 3 - 12: yadi.sk/d/E7Bi8tVh3Xp2e9
Скачать программу для расчёта радиусов: yadi.sk/d/0C1Ga-OX3Xp2zG
Скачать файл с рассчитанными радиусами: yadi.sk/i/rWN_PXeC3Xp39B
Получились такие заготовки карт:











__________________
Я поэт. Зовут Незнайка. От меня вам балалайка.
Я переводчик. Зовут jura_k. От меня вам программирование под MS-DOS.
jura_k вне форума   Ответить с цитированием
Старый 27.06.2018, 07:53   #168
jura_k
неформал
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 668
Репутация: 75
По умолчанию

ООП.
Во вложении программа и код программы.

Код:

/*   p125
     Язык Borland C++ 3.1
     Структуры   */

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


/*   Класс: queue   */

class queue
{
   int a [10];       //   очередь
   int begin, end;   //   маркеры начала и конца очереди

public:
   void initialization ();   //   инициализация пустой очереди
   void put (int);           //   поместить число в очередь
   get ();                   //   взять число из очереди
};

void queue::initialization ()
{
   begin = end = 0;
}

void queue::put (int d)
{
   if (end == 10)
      cout << "Очередь полна.\n";
   else
      a [end++] = d;
}

queue::get ()
{
   if (begin == end)
   {
      cout << "Очередь пуста.\n";
      return 0;
   }

   return a [begin++];
}


/*   Структуры   */

struct ac
{
   int a;
   char b;
};

struct ad   //   поле битов
{
   int b1: 1; int b2: 1; int b3: 1; int b4: 1;
   int b5: 1; int b6: 1; int b7: 1; int b8: 1;
};

union ae
{
   char a;
   struct ad bb;
};


ee (struct ac);   //   передача структуры в функцию
ef (union ae);    //   декодирование символа

int j = 100;


main ()
{
   int a, j;
   char d [80];
   float g;

   struct aa
   {
      int a;
      char b;
   };

   struct ab
   {
      int a;
      char b;
   };

   struct aa bb;
   struct ab bc;
   struct ac bd;
   union ae be;
   queue dd, de;   //   очередь

   printf ("? (1-2) ");
   scanf ("%i", &a);
   if (a == 1) goto aaa;   //   ввод данных
   if (a == 2) goto aab;   //   простые программы
   printf ("\n");
   return 0;

aaa:
   /*   p129   */
   printf ("3. Введите декодируемый символ:\n");
   do {
      be.a = getche ();
      printf (": ");
      ef (be);
      printf ("\n");
   } while (be.a != 'q');

   /*   p164   */
   cout << "4. C++ - хороший язык.\n";
   printf ("Можно использовать функцию printf ().\n");
   cout << "Введите число: ";
   cin >> a;
   cout << "Вы ввели число " << a << ".\n";
   cout << "Введите строку: ";
   cin >> d;
   cout << d;
   g = 1.2345;
   cout << "\nПеременная типа float g = " << g << ".\n";

   goto aaz;

aab:
   /*   p125   */
   bb.a = 1;
   bb.b = 'f';
   bc.a = bb.a;
   bc.a++;

   /*   p126   */
   bd.a = 1;
   bd.b = '2';
   ee (bd);   //   передача структуры в функцию

   /*   p166   */
   j = 5;
   cout << "5. Локальная переменная " << j << ".\n";
   cout << "Глобальная переменная " << ::j << ".\n";

   /*   p169   */
   dd.initialization ();
   de.initialization ();
   dd.put (7);
   dd.put (9);
   dd.put (11);
   cout << "6. " << dd.get () << ", ";
   cout << dd.get () << ", ";
   cout << dd.get () << ", ";
   cout << dd.get () << ".\n";

   dd.put (7);
   dd.put (9);
   dd.put (11);
   cout << dd.get () << ", " << dd.get () << ", " << dd.get () << ", "
	<< dd.get () << ".\n";

   for (a = 0; a < 12; a++) de.put (a * a);
   for (a = 0; a < 12; a++) cout << de.get () << " ";
   cout << "\n";

aaz:
   getch ();
   printf ("\n");
   return 0;
}


ee (struct ac bb)
{
   printf ("2. %i, %i.\n", bb.a, bb.b);
   return 0;
}

ef (union ae bc)
{
   if (bc.bb.b8) printf ("1"); else printf ("0");
   if (bc.bb.b7) printf ("1"); else printf ("0");
   if (bc.bb.b6) printf ("1"); else printf ("0");
   if (bc.bb.b5) printf ("1"); else printf ("0");
   if (bc.bb.b4) printf ("1"); else printf ("0");
   if (bc.bb.b3) printf ("1"); else printf ("0");
   if (bc.bb.b2) printf ("1"); else printf ("0");
   if (bc.bb.b1) printf ("1"); else printf ("0");
   return 0;
}

Вложения
Тип файла: 7z Tc.7z (21.9 Кб, 0 просмотров)
__________________
Я поэт. Зовут Незнайка. От меня вам балалайка.
Я переводчик. Зовут jura_k. От меня вам программирование под MS-DOS.
jura_k вне форума   Ответить с цитированием
Старый 10.08.2018, 05:16   #169
jura_k
неформал
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 668
Репутация: 75
По умолчанию

А. Черносвитов пишет:
Код:

// This is the main project file for VC++ application project 
// generated using an Application Wizard.

#include "stdafx.h"
#using <mscorlib.dll>
#include <tchar.h>
#include <stdlib.h>

using namespace System;


public __gc
class Man
{
private:
   String *m_name;
   int m_age;

public:
   Man ()
   {
      m_name = S"Dummy";
      m_age = 0;
   }

   Man (String *n, int a)
   {
      m_name = n;
      m_age = a;
   }

   String *getname () {return m_name;}
   int getage () {return m_age;}
};


// This is the entry point for this application
int _tmain(void)
{
    int managed __gc [] = new int __gc [rand () % 100 + 1];
   int *unmanaged = new int [rand () % 100 + 1];
   int i;
   Man *men [,] = new Man *[2, 2];

   Console::WriteLine (S"Hello World");
   Console::WriteLine (managed -> Count);
   Console::WriteLine (managed -> Rank);

   men [1, 1] = new Man ("Alex Black", 54);
   Console::WriteLine (men -> Count);
   Console::WriteLine (men -> Rank);
   Console::WriteLine (men [1, 1] -> getname ());
   Console::WriteLine (men [1, 1] -> getage ());

   for (i = 0; i < 5; i++) Console::WriteLine (men [i, i] -> getname ());

   return 0;
}

По моему мнению, надо делать вот так:
Код:

//   p171
//   Язык Visual C++ 7.0
//   Начальный курс C и C++

// p171.cpp : Defines the entry point for the console application.
//

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


//   Класс "queue"

class queue
{
protected:
   int a [10];      //   очередь
   int begin, end;      //   начало и конец очереди
public:
   void initialization ();      //   инициализация
   void put (int);      //   поместить число в очередь
   int get ();   //   получить число из очереди
};

void queue::initialization ()
{
   begin = end = 0;
}

void queue::put (int g)
{
   if (end == 10)
   {
      cout << "Queue is full ";
   }
   else
      a [end++] = g;
}

queue::get ()
{
   if (begin == end)
   {
      cout << "Queue is empty\n";
      return 0;
   }

   return a [begin++];
}


//   Производный класс "aa"

class aa:public queue
{
   int sum;      //   Сумма чисел
public:
   int d ();      //   Вычислить сумму чисел
   void show ();      //   Показать сумму чисел
};

aa::d ()
{
   int g;

   sum = 0;
   for (g = begin; g < end; g++)
                     sum += a [g];

   return sum;
}

void aa::show ()
{
   cout << "Sum of queue is " << sum << ".\n";
}


//   Функции
int ee (int);      //   Перегрузка функции
double ee (double);
long ee (long);


int _tmain (int argc, _TCHAR* argv[])
{
   int a;
   double d;
   long g;
   unsigned j;
   aa bb;      //   Объект класса "очередь" (наследник)

   a = 7;
   d = 1.1;
   g = 20;
   j = 4;

   //   p171
   cout << "1. ";
   cout << ee (a) << ", ";
   cout << ee (d) << ", ";
   cout << ee (g) << ".\n";

   cout << ee (10) << ", ";
   cout << ee (10.1) << ", ";
   cout << ee (70000.) << ".\n";
   
   cout << ee (10l) << ", ";
   cout << ee ((int) j) << ", ";
   cout << ee ((int) 4u) << ".\n";

   //   p173
   cout << "2. ";
   bb.initialization ();
   for (a = 0; a < 5; a++)
   {
      bb.put (100 + a);
      bb.d ();
      bb.show ();
   }

   for (a = 0; a < 6; a++)
   {
      bb.d ();
      bb.show ();
      bb.get ();
   }

   return 0;
}


int ee (int a)
{
   cout << "using int ";
   return (long) a * a;
}

double ee (double a)
{
   cout << "using double ";
   return a * a;
}

long ee (long a)
{
   cout << "using long ";
   return a * a;
}

__________________
Я поэт. Зовут Незнайка. От меня вам балалайка.
Я переводчик. Зовут jura_k. От меня вам программирование под MS-DOS.
jura_k вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C под DOS jura_k Общие вопросы C/C++ 26 01.08.2015 10:03
Из Dos под Win Nozema Фриланс 3 30.10.2009 18:34
C++ под DOS. Функции Xeon332 Общие вопросы C/C++ 34 29.11.2008 19:01
borland C++под DOS Xeon332 Помощь студентам 9 20.09.2008 20:50


08:36.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru