Форум программистов, компьютерный форум CyberForum.ru

вертикальные линий разных цветов - C++

Восстановить пароль Регистрация
 
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
21.11.2010, 17:55     вертикальные линий разных цветов #1
Вывести в ряд 10 вертикальных линий разных цветов, используя оператор gotoxy.
Помогите пожалуйста.А то у меня это задание вообще не выходит.((

Добавлено через 1 час 56 минут
Вот что у меня вышло.Но рисует чего-то одну линиЮ.Помогите кто-нить.Пожалуйста!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
 
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
    void ramka (int x0, int y0, int, int);
 
  int main ()
 
  { ramka (2,5, 10, 30);
     getch();
      return 0;
  }
 
 
 
  void ramka (int x0, int y0, int n1, int n2)
  {  int x,y,i;
         x=x0;
         y=y0;
       for (i=0;i<n1-2;i++)
        {  gotoxy(x,y++);
         printf("%c", 179);           // для вертикальной линии
        }
 
       for(i=0;i<n1-2;i++)
        { gotoxy(x,y--);
              printf("%c",179);
        }
 
  }
Добавлено через 12 минут
НЕУЖЕЛИ НИКТО НЕ МОЖЕТ ПОМОЧЬ!??

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
 
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
    void ramka (int x0, int y0, int n1);
 
  int main ()
 
  { ramka (2,5, 10);
     getch();
      return 0;
  }
 
 
 
  void ramka (int x0, int y0, int n1)
  {  int x,y,i;
         x=x0;
         y=y0;
       for (i=0;i<n1;i++)
        {  gotoxy(x,y++);
         printf("%c", 179);           // для вертикальной линии
        }
 
   }
Добавлено через 29 секунд
Хммммммммм....и как теперь сделать много линий!!!

Добавлено через 10 минут
И через оператор for не выходит

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  void ramka (int x0, int y0, int n1);
 
  int main ()
 
  {
 
  for(  int k=0;k<10;k++)
 
 { ramka (2,5, 5);
  }
 
 
     getch();
      return 0;
  }
 
 
 
  void ramka (int x0, int y0, int n1)
  {  int x,y,i;
         x=x0;
         y=y0;
       for (i=0;i<n1;i++)
        {  gotoxy(x,y++);
         printf("%c", 179);           // для вертикальной линии
        }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.11.2010, 18:55     вертикальные линий разных цветов #2
Цитата Сообщение от barlog Посмотреть сообщение
Вывести в ряд 10 вертикальных линий разных цветов
Вот с использованием API
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <windows.h>
#include <iostream>
using namespace std;
void draw_line(int line){
    HANDLE hStd;
    COORD  XY;
    int FG=129;
    hStd = GetStdHandle(STD_OUTPUT_HANDLE);
    XY.X = 4;
    XY.Y = 2;
    while(line){
        SetConsoleTextAttribute(hStd,FG);
        for(;XY.Y<12;XY.Y++){
            SetConsoleCursorPosition(hStd,XY);
            cout<<(char)219;
    }
        FG++;
        XY.X+=4;
        XY.Y=2;
        --line;
    }
}
int main(){ 
    SetConsoleTitle("Color Line");
    int N;
    cout<<"Enter number of lines: ";
    cin>>N;
    draw_line(N);
    cout<<endl<<endl;
    system("pause");
    return 0;
}
используя оператор gotoxy.
по-моему это не оператор, я этой библиотеки не знаю. Скажите, а вам по учебе задали написать программу именно с этой библиотекой ?
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
21.11.2010, 19:07  [ТС]     вертикальные линий разных цветов #3
ну как....просто одна из заданных задач оказалась вот эта....в последенний раз мы проходили оператор gotoxy...ну я и решила что с ним и надо сделать.
Просто как еще изменять координаты точки на экране!...я не знаю...

Добавлено через 30 секунд
это не библиотека.

Добавлено через 1 минуту
знаете я в вашей программе ничего не понимаю.мы такого не проходили...
можете обьяснить хотя бы алгоритм, пожалуйста.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.11.2010, 19:09     вертикальные линий разных цветов #4
между 21 и 22 строками можно добавить
C++
1
SetConsoleTextAttribute(hStd,0x07);
чтоб сообщение "для продолжения нажмите любую клавишу"выводилось белым цветом на черном фоне.
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
21.11.2010, 19:14  [ТС]     вертикальные линий разных цветов #5
я вот алгоритм не пойму....
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.11.2010, 19:28     вертикальные линий разных цветов #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <windows.h>
#include <iostream>
using namespace std;
void draw_line(int line){
        HANDLE hStd;//объявляем хэндл
        COORD  XY;//создаем объект структуры COORD (там всего 2 значения X и Y)
        int FG=129;//эта переменная отвечает за цвет линии и цвет фона
    hStd = GetStdHandle(STD_OUTPUT_HANDLE);//получаем хэндл вывода
    XY.X = 4; //заполняем структуру, она нужна для позиционирования курсора
    XY.Y = 2;
        while(line){
                SetConsoleTextAttribute(hStd,FG);//устанавливаем атрибут цвета текста и фона для нашей консоли
                for(;XY.Y<12;XY.Y++){
                        SetConsoleCursorPosition(hStd,XY);//устанавливаем позицию курсора (XY)
                        cout<<(char)219;//выводим квадратик
        }
                FG++;//следующий цвет
                XY.X+=4;// +4 столбца в консоли для вывода следущей линии
                XY.Y=2; //исходное значение Y=2 (т.е. 2ая строка)
                --line;
        }
}
int main(){ //ну в мэйне я думаю все понятно
    SetConsoleTitle("Color Line");
    int N;
    cout<<"Enter number of lines: ";
    cin>>N;
    draw_line(N);
    cout<<endl<<endl;
    system("pause");
    return 0;
}
если, что не понятно - спрашивайте.

это не библиотека.
я имел ввиду, что функция (а не оператор) gotoxy() содежится в какой-то библиотеке.

P.S. гугл говорит, что ее прототип в conio.h, но я ее там не нашел. На сколько мне известно, она есть только в старых борлондовских компиляторах, хотя могу ошибаться. Но в стандартную библиотеку языка она не входит 100%
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
21.11.2010, 19:33  [ТС]     вертикальные линий разных цветов #7
эх...попробуем разобраться.....и переделать под gotoxy() ....))
может кто знает gotoxy(), тогда помогите.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.11.2010, 19:39     вертикальные линий разных цветов #8
интуиция мне подсказывает, что просто строку
C++
1
SetConsoleCursorPosition(hStd,XY);
переписать как
C++
1
gotoxy(X,Y);
ну и вместо структуры COORD просто объвить 2 переменные X и Y.

Добавлено через 2 минуты
Я думаю так, но проверить не на чем. Мой компилятор не поддерживает gotoxy()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void draw_line(int line){
        HANDLE hStd;//объявляем хэндл
        int X=4,Y=2;
        int FG=129;//эта переменная отвечает за цвет линии и цвет фона
    hStd = GetStdHandle(STD_OUTPUT_HANDLE);//получаем хэндл вывода
        while(line){
                SetConsoleTextAttribute(hStd,FG);//устанавливаем атрибут цвета текста и фона для нашей консоли
                for(;Y<12;Y++){
                        gotoxy(X,Y);//устанавливаем позицию курсора (XY)
                        cout<<(char)219;//выводим квадратик
        }
                FG++;//следующий цвет
                X+=4;// +4 столбца в консоли для вывода следущей линии
                Y=2; //исходное значение Y=2 (т.е. 2ая строка)
                --line;
        }
}
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
21.11.2010, 19:51     вертикальные линий разных цветов #9
к черту gotoxy! просто печатать все сподряд (почаще меняя цвет естественно)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2010, 20:38     вертикальные линий разных цветов
Еще ссылки по теме:

C++ В матрице выбрать n элементов в разных строках и разных столбцах так, чтобы их сумма была минимальной
C++ Получение цветов GetBitmapBits()
Массив цветов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
21.11.2010, 20:38  [ТС]     вертикальные линий разных цветов #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
  void ramka (int x0, int y0, int n1,int n2);
 
   int main ()
 
  {  while(x<10)
 
 { ramka (2,3, 5,2);}
      getch();
      return 0;
  }
 
 
 
  void ramka (int x0, int y0, int n1,int n2)
  {  int x,y,i;
         x=x0;
         y=y0;
       for (i=0;i<n1;i++)
        {  gotoxy(x,y++);
         printf("%c", 179);        // для вертикальной линии
        }
 
         for (i=0;i<n2;i++)
        { gotoxy(x++,y);          // для горизонтальной линии
            }
 
     gotoxy(x,y--);
     for(i=0;i<n1;i++)
        { gotoxy(x,y--);
             printf("%c",179);
        }
 
   }
Добавлено через 30 секунд
ВОТ ЭТО ДВЕ ЛИНИИ!А КАК СДЕЛАТЬ МНОГО???????????

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
  void ramka (int x0, int y0, int n1,int n2);
 
   int main ()
 
  {
 
 { ramka (2,3, 5,2);}
      getch();
      return 0;
  }
 
 
 
  void ramka (int x0, int y0, int n1,int n2)
  {  int x,y,i;
         x=x0;
         y=y0;
 
     while(x<10)
  {
       for (i=0;i<n1;i++)
        {  gotoxy(x,y++);
         printf("%c", 179);        // для вертикальной линии
        }
 
         for (i=0;i<n2;i++)
        { gotoxy(x++,y);          // для горизонтальной линии
            }
 
     gotoxy(x,y--);
     for(i=0;i<n1;i++)
        { gotoxy(x,y--);
             printf("%c",179);
        }
 
   }
 }
Добавлено через 46 секунд
А это много линий....только чего-то они косые!!!!
Вгоните кто-нить себе в билдер и посмотрите что не так.Пожалуйста!

Добавлено через 4 минуты
А ВОТ ТАК ОНИ РОВНЫЕ.ТОЛЬКО ЧЕГО-ТО ТОЛЬКО 4 ШТУКИ.И ЕЩЕ КУРСОВ БЕСКОНЦА НОСИТСЯ.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 //---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
  void ramka (int x0, int y0, int n1,int n2);
 
   int main ()
 
  {
 
 { ramka (2,3, 5,2);}
      getch();
      return 0;
  }
 
 
 
  void ramka (int x0, int y0, int n1,int n2)
  {  int x,y,i;
         x=x0;
         y=y0;
 
        while(x<45)
 
  {
       for (i=0;i<n1;i++)
        {  gotoxy(x,y++);
         printf("%c", 179);        // для вертикальной линии
        }
 
         for (i=0;i<n2;i++)
        { gotoxy(x++,y);          // для горизонтальной линии
            }
 
     gotoxy(x,y--);
     for(i=0;i<n1;i++)
        { gotoxy(x,y--);
             printf("%c",179);
        }
 
 
    x=x0+4 ;
    y=y0   ;
 
 
 
     }
Yandex
Объявления
21.11.2010, 20:38     вертикальные линий разных цветов
Ответ Создать тему
Опции темы

Текущее время: 09:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru