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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.95
JustBear
5 / 5 / 0
Регистрация: 01.03.2013
Сообщений: 160
#1

Бегущая строка в С++ - C++

01.03.2013, 17:47. Просмотров 3673. Ответов 5
Метки нет (Все метки)

Всем привет! Вчера столкнулся с трудностью: не получается написать код бегущей строки в MS VC++. Перепробовал кучу вариантов из того, что умею и знаю. Облазил инет, дали несколько ценных советов, но исправить "перевод каретки на новую строку" я не могу.

Суть задачи такова: пользователь вводит предложение до 256 символов, жмет Enter и строка, начиная от начала (координаты {0;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
45
46
47
48
49
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <conio.h>
#include <windows.h>
#include <stdio.h>
#include <cstring>
using namespace std;
 
int _tmain()
{
char str1[256]; int a,b;
a=0;
b=10;
 
HANDLE hConsole;
hConsole=GetStdHandle (STD_OUTPUT_HANDLE);
setlocale(LC_ALL,".1251");//русский язык для диалога
 
cout<<"Введите предложение:"<<endl;
cin.getline(str1,256);
system("cls");
COORD x={0,10};//координаты начала предложения
SetConsoleCursorPosition(hConsole,x);
setlocale(LC_ALL,".866");//выводим русскоязычное послание в движимой строке
cout<<str1<<endl;
 
for (a=0;a<80;a++)
{ 
COORD d={a,b};
SetConsoleCursorPosition(hConsole,d);
cout<<str1;
Sleep(50);
system("cls");
}
while (a>=0)
{
for (a=0;a<79;a++)
{
COORD d={a,b};
SetConsoleCursorPosition(hConsole,d);
cout<<str1;
Sleep(50);
system("cls");
}
}
getch();
return 0;
}
Очень нужна помощь. Завтра, если код будет работать согласно задаче, хотел бы сдать его
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2013, 17:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Бегущая строка в С++ (C++):

Бегущая строка Borland Turbo C++ - C++
Доброе время суток, подскажите, пожалуйста, код для организации бегущий строки. Текст, допустим, будет в строке задан. Нужно чтобы...

Дана строка. Подсчитать сколько раз первая строка входит во вторую - C++
Дана строка. Подсчитать сколько раз первая строка входит во вторую. Например: вводим &quot;при&quot; (строка должна вводиться с клавиатуры, как на...

Дана строка символов. Проверьте,является ли данная строка палиндромом - C++
Парни нужна помощь,нужен код решения этой задачи на языке с++. Дана строка символов. Проверьте,является ли данная строка палиндромом.

Почему строка, считанная из файла и такая же строка в программе не равны, хотя они, вроде бы, одинаковы? - C++
Есть две строки. MSK=&quot;Москва&quot; и from, считанная из текстовика, через getline Для проверки вывожу эти обе строки, на первый взгляд...

дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка должна вводиться с клавиатуры. - C++
Будьте добры,помогите с решением задачи: дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка...

Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо и справа н - C++
Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо...

5
anmartex
...
1706 / 1199 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
01.03.2013, 20:10 #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
#include <stdio.h>
#include <unistd.h>
 
int main(int argc, const char* argv[])
{
   const char text[] = "Hello World";
 
   size_t i = 0, j;
 
   while (1)
   {
      for (j = i; j > 0; --j)
      {
         printf(" ");
      }
 
      printf("%.*s", 80-i-1, text);
 
      if (80 == ++i)
      {
         i = 0;
      }
 
      printf("%c", 13);
 
      usleep(100000);
   }
 
   return 0;
}
0
JustBear
5 / 5 / 0
Регистрация: 01.03.2013
Сообщений: 160
02.03.2013, 12:57  [ТС] #3
anmartex, спасибо, но немного не то. Сегодня нам преподаватель сказал, что нужно 3 цикла. 1 отвечает за посимвольный вывод текста в начале строки, второй - за его перемещение по экрану, а третий - за посимвольное исчезновение.
0
define undef
33 / 33 / 1
Регистрация: 19.01.2013
Сообщений: 33
02.03.2013, 13:02 #4
Можно при помощи stl
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <algorithm>
 
 
int main()
{
  std::string str = "Hello world!!! ";
  
  while(true){
   rotate(str.begin(),str.begin()+1,str.end());
   std::cout<<str;
   Sleep(100);
   system("cls");
  }
 
}
0
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
02.03.2013, 22:25 #5
Писал для винды, код конечно адский но рабочий)))
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
57
58
59
60
#include <iostream>
#include<Windows.h>
#include <locale>
using namespace std;
 
 
const int size = 256;
HANDLE hConsole;
void gotoxy( int column, int line )
  {hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
  COORD coord;
  coord.X = column;
  coord.Y = line;
  SetConsoleCursorPosition(
    hConsole,
    coord
    );
  }
 
 
int main(){
    setlocale(LC_ALL,".1251");
    char runstr [size] = "Я бегущая строка я бегу, бегу, бегу, бегу, бегу, бегу, бегу, бегу, бегу, бегу, бегу!";
    int n=size-80;
    int m=0;
    
    label:
    while(n>=0)
    {
        while(m<80)
        {
            gotoxy(m,10);
            
            cout<<*(runstr+n+(m++));
            
        }
        if(n==0){
            
            m=80;
                        
            while(m>=0){
                gotoxy(0,10);
                cout<<"                                                                                 ";
                gotoxy(80-m,10);
                
                while(n<m){
                    cout<<runstr[n++];
                }
                m--;n=0;Sleep(50);if(m==0){n=size-80;goto label;}
            }
        }
 
    n--;
    m=0;
    Sleep(50);
    }
 
    system("pause");
    return 0;
}
0
JustBear
5 / 5 / 0
Регистрация: 01.03.2013
Сообщений: 160
05.03.2013, 13:02  [ТС] #6
booker, я не пойму кода твоего. Спасибо. Я переделал его, чтобы пользователь вводил сообщение, но у меня стала появляться "дребедень". А если использовать чисто твой код, то бежит "пустота", то есть ничего не выводится.
0
05.03.2013, 13:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2013, 13:02
Привет! Вот еще темы с ответами:

Бегущая строка - C++
Привет, подскажите, кто может, как в C++ (на самом деле надо на Perl, но д.б. очень похоже) можно забацать &quot;бегущую строку&quot;. Условия: ...

Даны строка S, символ C и строка S0. Необходимо после каждого вхождения символа C в строку S вставить строку S0 - C++
Есть код... string s, s0; char c; cout &lt;&lt; &quot;Введите строку s, s0 и символ c: &quot;; getline(cin, s); ...

Строка string и строка char - C++
Ребят помогиме. В общем задание такое дана строка типа string и строка char которая содержит символ к. В общем если в строке типа String ...

Преобразование строка-число-строка - C++
Здравствуйте, можете объяснить или показать на примере, как можно из строки извлечь числа, чтобы потом можно было с ними работать и каких...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru