Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Что следует понимать под широким диапазоном форм
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Gock Gock вне форума
Member
 
Сообщений: 305
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Регистрация: 28.04.2006
По умолчанию Что следует понимать под широким диапазоном форм - 17.03.2010, 22:15

У Дейтлов есть задача
Цитата:
Используйте подход, развитый в упражнениях 3.22 и 3.23, для создания программы, которая вычерчивает широкий диапазон форм.
В 3.22 печатался квадрат из звездочек
****
****
****
****

В 3.23 - такой же квадрат, но из произвольных символов с помощью fillCharacter.

Что в задаче следует понимать под широким диапазоном форм? Треугольники, прямоугольники и т.п.?
Ответить с цитированием
  (#2 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 18.03.2010, 03:35

Смысл упражнений не в том, чтобы их выполнять "правильно", а в том, чтобы научиться программировать. Чувствуешь в себе силы? Сделай вывод произвольных фигур разных размеров. Если хочешь сделать для галочки, выводи прямоугольник с произвольными длинами сторон и из произвольных символов.
Ответить с цитированием
  (#3 (permalink)) Старый
Gock Gock вне форума
Member
 
Сообщений: 305
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Регистрация: 28.04.2006
По умолчанию 22.03.2010, 23:10

Цитата:
Чувствуешь в себе силы? Сделай вывод произвольных фигур разных размеров. Если хочешь сделать для галочки, выводи прямоугольник с произвольными длинами сторон и из произвольных символов.
Я хочу сделать то, что хотели Дейтелы. Но вот что они хотели, я понять не могу. Уж очень витеивато они выразились. Или перевод такой..
Ответить с цитированием
  (#4 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 23.03.2010, 07:26

Ты должен хотеть научиться программировать, а не ублажать каких-то там Дейтлов. Любое твоё "творение" будет источником опыта и знаний для будущих проектов. И чем сложнее ты сам себе ставишь задачу для решения, тем больше опыта и знаний приобретаешь. Если задачу можно решить несколькими способами, выбирай самый сложный.
Ответить с цитированием
  (#5 (permalink)) Старый
Gock Gock вне форума
Member
 
Сообщений: 305
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Регистрация: 28.04.2006
По умолчанию 24.03.2010, 20:34

Цитата:
Ты должен хотеть научиться программировать, а не ублажать каких-то там Дейтлов.
Это я понимаю. Но Дейтлы, судя по тексту, который они пишут - люди довольно умные, и каждой своей задачей пытаются сформировать мне правильное мышление. А если я сделаю не то, что они задумали, то и эффекта нужного не будет. Я прав?

Цитата:
И чем сложнее ты сам себе ставишь задачу для решения, тем больше опыта и знаний приобретаешь.
С этим полностью согласен.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 25.03.2010, 01:59

Пока я вижу лишь один эффект. Ты до сих пор не слышал про массивы. В программировании нет правильного или неправильного мышления. Ты не должен стать ещё одним Дейтлом. Пиши программы с максимумом своих способностей, применяя все свои знания, вот и будет тебе "нужный эффект".
Ответить с цитированием
  (#7 (permalink)) Старый
Gock Gock вне форума
Member
 
Сообщений: 305
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Регистрация: 28.04.2006
По умолчанию 27.03.2010, 23:01

Цитата:
Ты до сих пор не слышал про массивы.
Глава про функции закончилась, а следующая - массивы! =))

Цитата:
В программировании нет правильного или неправильного мышления. Ты не должен стать ещё одним Дейтлом
Нет, здесь согласен. Я скорее имел в виду "базовое" мышление, на котором уже вырастет мой собственный стиль.
Ответить с цитированием
  (#8 (permalink)) Старый
mico mico вне форума
Member
 
Сообщений: 102
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.03.2010
По умолчанию 28.03.2010, 09:09

Цитата:
Что в задаче следует понимать под широким диапазоном форм? Треугольники, прямоугольники и т.п.?
Да он об этом и говорил Только смотри у него переменная side одна а ты сделай еще несколько
чтоб показывало кол-во символов в верх вниз и т д а так же переменная char (тип символа ) чтоб ты менял
прямоугольник сделать не проблема а вот треугольник ромб
Пример для треугольника
манипулятором делаешь след отступы от левого края 1 строка 30 ставишь 1 символ
2 строка 29 ставишь 3 символа, 3 строка 28 ставишь 5 символов и т д остальное разберешьися
Ответить с цитированием
  (#9 (permalink)) Старый
alexu alexu вне форума
Member
 
Сообщений: 433
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 4 сообщениях
Регистрация: 01.06.2007
По умолчанию 28.03.2010, 11:11

1. А кстати - как вывести символ в конкретную позоцию на консоли? В DOSе какая-то функция BIOS это умела...

2. Широкий диапазон форм - это 3-угольники, 4-угольники, 5-угольники, 6-угольники, 7-угольники, 8-угольники, 9-угольники и до бесконечности.

Только как их получить? Можно конечно создать массив (а... ты еще не проходил массивы!) по размерам консоли и рисовать там вручную, но это низкий класс, это и любой ламер сделает. А вот если придумать формулку арифметическую-эмпирическую, которая будет вычислять координаты для рисования фигуры - это да!!! Я точно знаю, что Дятлы именно это имели ввиду. Дерзай. Когда закончишь с этим упражнением - переходи к следующему.
Ответить с цитированием
  (#10 (permalink)) Старый
mico mico вне форума
Member
 
Сообщений: 102
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.03.2010
По умолчанию 28.03.2010, 11:52

Цитата:
А кстати - как вывести символ в конкретную позоцию на консоли? В DOSе какая-то функция BIOS это умела...
Один из вариантов это setw(20) 20 кол-во отступов а если как в Билдере типа CaretPos или SelStart чес сказать как то не доходил не было нужды

ЗЫ: Ток ма через WinApi SetConsolCursorPosition(hConcole,cursor_pos) но тут создается HANDLE hConcole и т д
ему наверно еще рано.
Ответить с цитированием
  (#11 (permalink)) Старый
Gock Gock вне форума
Member
 
Сообщений: 305
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Регистрация: 28.04.2006
По умолчанию 30.03.2010, 17:16

Цитата:
А вот если придумать формулку арифметическую-эмпирическую, которая будет вычислять координаты для рисования фигуры - это да!!!
Расскажи подробнее.

Цитата:
манипулятором делаешь след отступы от левого края 1 строка 30 ставишь 1 символ
2 строка 29 ставишь 3 символа, 3 строка 28 ставишь 5 символов и т д остальное разберешьися
Надеюсь, я тебя понял правильно:

Код:
#include<iostream>
using namespace std;

#include<windows>

void kvadrat(int storona, char fillCharacter); //печать квадрата
void treugolnik(int storona, char fillCharacter);//печать треугольника
void romb(int storona, char fillCharacter);//печать ромба

int main()
{
   int storona; //значение стороны квадрата, треугольника или ромба. В.п.
   int nFiguri; //номер фигуры. В.п.
   char fillCharacter; //символ, которым будет печататься фигура

   cout << "kvadrat - 1; treugolnik - 2; romb - 3" << endl;
   cout << "Chto pechataem: ";
   cin >> nFiguri;
   cout << "Chem pechataem: ";
   cin >> fillCharacter;

   switch(nFiguri)
   {
      case 1:
         cout << "Vvedite dlinu storoni figuri: ";
         cin >> storona;
         kvadrat(storona, fillCharacter);
         break;

      case 2:
         cout << "Vvedite dlinu storoni figuri: ";
         cin >> storona;
         treugolnik(storona, fillCharacter);
         break;

      case 3:
         cout << "Vvedite dlinu storoni figuri: ";
         cin >> storona;
         romb(storona, fillCharacter);
         break;

      default:
         cout << "ERROR!!!" << endl;
         break;
   }

   system("pause");
   return 0;
}

//Квадрат
void kvadrat(int storona, char fillCharacter)
{
   for (int i = 1; i <= storona; i++)
   {
      for (int j = 1; j <= storona; j++)
      {
         cout << fillCharacter;
      }

      cout << endl;
   }
}

//Треугольник
void treugolnik(int storona, char fillCharacter)
//storona - сторона треугольника. В.п.
{
   int otstup = (storona / 2) + 2; //отступ от левого края окна до фигуры

   int kolvoProbDoSimv; //кол-во пробелов до символов
   int kolvoSimv = 1; //кол-во символов

   // вычисляем кол-во пробелов до символов
   kolvoProbDoSimv = (storona / 2) - 1;

   //начинаем печатать треугольник
   for (int i = 1; i <= storona; i++)
   {
      //печатаем отступ
      for (int l = 1; l <= otstup; l++)
      {
         cout << " ";
      }

      //печатаем пробелы до символов
      for (int j = 1; j <= kolvoProbDoSimv; j++)
      {
         cout << " ";
      }

      --kolvoProbDoSimv;

      //печатаем символы
      for (int k = 1; k <= kolvoSimv; k++)
      {
         cout << fillCharacter;
      }

      cout << endl;

      ++kolvoSimv;
   }
}

//Ромб
void romb(int storona, char fillCharacter)
{
   //сначала печатаем верхнюю часть ромба, т.е. треугольник

   int otstup = (storona / 2) + 2; //отступ от левого края окна до фигуры

   int kolvoProbDoSimv; //кол-во пробелов до символов
   int kolvoSimv = 1; //кол-во символов

   // вычисляем кол-во пробелов до символов
   kolvoProbDoSimv = (storona / 2) - 1;

   //начинаем печатать треугольник
   for (int i = 1; i <= storona; i++)
   {
      //печатаем отступ
      for (int l = 1; l <= otstup; l++)
      {
         cout << " ";
      }

      //печатаем пробелы до символов
      for (int j = 1; j <= kolvoProbDoSimv; j++)
      {
         cout << " ";
      }

      --kolvoProbDoSimv;

      //печатаем символы
      for (int k = 1; k <= kolvoSimv; k++)
      {
         cout << fillCharacter;
      }

      cout << endl;

      ++kolvoSimv;
   }

   //теперь допечатываем к треугольнику нижнюю часть

   kolvoProbDoSimv = 1;
   kolvoSimv = storona - 2;

   for (int i = 1; i <= (storona - 1); i++)
   {
      //печатаем отступ
      for (int l = 1; l <= otstup; l++)
      {
         cout << " ";
      }

      for (int j = 1; j <= kolvoProbDoSimv; j++)
      {
         cout << " ";
      }

      for (int k = 1; k <= kolvoSimv; k++)
      {
         cout << fillCharacter;
      }

      cout << endl;

      --kolvoProbDoSimv;
      --kolvoSimv;
   }
}
Только из-за того, что символы могут находится только четко друг под другом, фигуры получаются кривые. Что делать?
Ответить с цитированием
  (#12 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 31.03.2010, 04:42

Предлагаю немного по-другому печатать, и mico имел в виду манипуляторы
Код:
//Треугольник
void treugolnik(int storona, char fillCharacter)
//storona - сторона треугольника. В.п.
{
    int otstup = storona + 1; //отступ от левого края окна до фигуры
    int kolvoSimv; //кол-во символов

    //начинаем печатать треугольник
    for( int i = 1, kolvoSimv = 1; i < storona; i += 2, kolvoSimv += 2 )
    {
        cout << setw( otstup );
        for( int j = 0; j < kolvoSimv; j++ )
        {
            cout << fillCharacter;
        }
        cout << endl;

        cout << setw( otstup-- );
        for( int j = 0; j < kolvoSimv; j++ )
        {
            cout << fillCharacter;
        }
        cout << endl;
    }
    for( int i = 0; i < storona % 2; i++ )
    {
        cout << setw( otstup );
        for( int j = 0; j < storona; j++ )
        {
            cout << fillCharacter;
        }
        cout << endl;
    }
}
Кстати, некая группа операторов просто напрашивается на выделение в отдельную функцию, тебе не кажется? Тем более, что она может пригодиться для вывода всех трёх фигур...
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Gock Gock вне форума
Member
 
Сообщений: 305
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Регистрация: 28.04.2006
По умолчанию 04.04.2010, 14:40

За код функции печати треугольника спасибо, буду разбираться.

Цитата:
mico имел в виду манипуляторы
манипуляторы - это cout и cin?

Цитата:
некая группа операторов просто напрашивается на выделение в отдельную функцию, тебе не кажется
FOR'ы объединить? Подскажи, если не прав =)
Ответить с цитированием
  (#14 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 04.04.2010, 15:37

Цитата:
манипуляторы - это cout и cin?
Манипуляторы - это setw, setprecision и т.д.

Цитата:
FOR'ы объединить? Подскажи, если не прав =)
Конечно
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что следует заменить в сборке компьютера на базе процессора Pentium Dual-Core CPU 2.6 arta Любые вопросы от новичков 15 07.03.2011 20:32
Что следует поменять(возможно мозги) malaka Любые вопросы от новичков 9 06.01.2011 20:47
Законы Моргана как их понимать Gock C++ Builder 5 22.03.2010 23:05
Как понимать "Спросите на ХВТ в "серверах""? s_salex Техническая поддержка 4 22.08.2007 17:07
Как работать с диапазоном выделенных ячеек Excel Crystaly Visual Basic 9 21.04.2006 14:38
Как заставить Delphi понимать HTML код DarkAngel Delphi 1 26.10.2005 09:27
Работа с диапазоном дат Felix PHP 3 23.10.2004 10:34
14 причин, почему алкоголь следует предоставлять на работе Garik Юмор 0 30.06.2004 18:28
Athlon и Pentium IV: Продолжение следует. Olesya Офтопик 26 24.07.2003 16:18
Что следует учитывать при оценке стоимости программы Anonymous Delphi 2 14.04.2003 17:51



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов