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

Очень трудно. - C++

Восстановить пароль Регистрация
 
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
04.10.2010, 17:07     Очень трудно. #1
Написать таблицу 3х6 (столбцы и строки соответственно). Что бы при запуске программы в ячейках таблицы появлялись 5 слов(одновременно в разных ячейках): Process 1, Process 2, Process 3, Process 4, Process 5.(в случайном порядке). И чтобы при запуске программы переходили с ячейки на ячейку.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
04.10.2010, 17:28     Очень трудно. #2
Нужно чтобы эти 5 слов были только 5 раз или они должны копироваться, чтобы заполнить всю таблицу?
И чтобы при запуске программы переходили с ячейки на ячейку.
Как это понять?
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
04.10.2010, 17:32  [ТС]     Очень трудно. #3
У нас есть всего 5 слов, они заполняют таблицу в случайном порядке, соответственно другие ячейки пустые. При запуске программы они начинают перемещаться в запущенной программе.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
04.10.2010, 18:20     Очень трудно. #4
Если в windows, то можно сделать так:
  1. вывести таблицу c рандомным положением слов;
  2. сделать задержку функцией Sleep на определенное время;
  3. очистить экран (например, с помощью system("cls"));
  4. перейти к шагу 1
Таким образом, получится иллюзия движения слов в таблице
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
04.10.2010, 18:22     Очень трудно. #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
#include <iostream>
#include <algorithm>
#include <string>
#include <ctime>
 
using namespace std;
 
string tbl[3][6];
string words[5]={"Process 1", "Process 2", "Process 3", "Process 4", "Process 5"};
 
void fill_rand()
{
    size_t n=0;
    while(true)
    {
        size_t i=rand()%3;
        size_t j=rand()%6;
        if(tbl[i][j]=="")
        {
            tbl[i][j]=words[n];
            n++;
        }
        if(n==5)
            break;
    }
}
 
void out()
{
    for(size_t i=0;i<3;i++)
    {
        for(size_t j=0;j<6;j++)
            cout<<tbl[i][j]<<"\t";
        cout<<endl;
    }
}
 
void fill_empty()
{
    for(size_t i=0;i<3;i++)
        for(size_t j=0;j<6;j++)
            tbl[i][j]="";
}
 
int main()
{
    srand(time(0));
    while(true)
    {
        system("cls");
        fill_rand();
        out();
        fill_empty();
        system("pause");
    }
}
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
04.10.2010, 18:27  [ТС]     Очень трудно. #6
Как дописать в первый столб слова: Blocked Running Time?

Добавлено через 1 минуту
gooseim, Как дописать в первый столб слова: Blocked Running Time? И можно ли оформить в виде таблицы?

Добавлено через 1 минуту
Если в windows, то можно сделать так:

1. вывести таблицу c рандомным положением слов;
2. сделать задержку функцией Sleep на определенное время;
3. очистить экран (например, с помощью system("cls"));
4. перейти к шагу 1

Таким образом, получится иллюзия движения слов в таблице
не совсем ясно...ведь в коде реализовать трудно...
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
04.10.2010, 18:28     Очень трудно. #7
Temirlan90, не совсем понял, что имеешь ввиду.
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
04.10.2010, 18:31  [ТС]     Очень трудно. #8
gooseim, в первом столбце у нас 3 строки(ячейки) и в них надпись Blocked Running Time
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
04.10.2010, 18:32     Очень трудно. #9
Цитата Сообщение от Temirlan90 Посмотреть сообщение
не совсем ясно...ведь в коде реализовать трудно...
Да ладно? Для этого нужно взять программу gooseim'a и добавить в нее пару строк

Не по теме:

Кстати, algorithm подключать необязательно...

Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
04.10.2010, 18:36  [ТС]     Очень трудно. #10
Как говориться бог дал нам игрушки и с++ не принадлежит мне=)
Nameless One, если вам не трудно покажите как это сделать, не сочтите за грубость.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
04.10.2010, 18:38     Очень трудно. #11
Temirlan90, чтобы в виде таблицы, можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void out()
{
    for(size_t i=0;i<3;i++)
    {
        for(size_t j=0;j<6;j++)
        {
            cout.width(9);
            cout.fill(' ');
            cout<<tbl[i][j];
            cout.width(1);
            cout<<"|";
        }
        cout<<endl;
        cout.width(10*6);
        cout.fill('-');
        cout<<'-';
        cout<<endl;
    }
}
Замени эту функцию на аналогичную старую.
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
04.10.2010, 18:40  [ТС]     Очень трудно. #12
gooseim, Заменил, а как туда слова мои поставить?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
04.10.2010, 18:43     Очень трудно. #13
Temirlan90, во-первых, нужно в начале программы написать #include <windows.h>. Во-вторых, после функции out в 52 строке написать Sleep(500) - это приостановит программу на полсекунды
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
04.10.2010, 19:00  [ТС]     Очень трудно. #14
Temirlan90, во-первых, нужно в начале программы написать #include <windows.h>. Во-вторых, после функции out в 52 строке написать Sleep(500) - это приостановит программу на полсекунды
интересно, но зачем это добавлять в код gooseim'a?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
04.10.2010, 19:03     Очень трудно. #15
Temirlan90, чтобы сделать задержку, которая позволит пользователю успеть увидеть то, что будет выводиться на каждом шаге цикла программы
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
04.10.2010, 20:11  [ТС]     Очень трудно. #16
Nameless One, я понял, но ведь gooseim это реализовал через "Еnter" нажимаешь и все передвигается.

Добавлено через 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <algorithm>
#include <string>
#include <ctime>
#include <stdio.h>
#include <time.h>
#include <iomanip>
#include <Windows.h>
 
using namespace std;
 
string tbl[4][7];
string words[6]={"0x7c969", "0x9v423", "0x1s432", "0x0f243", "0x2h532", "0x7u432"};
string name[3][1] = {"  Ready  |" , "  Queue  |", "  Block  |"};
 
void fill_rand()
{
    size_t n=0;
    while(true)
    {
        size_t i=rand()%3;
        size_t j=rand()%7;
        if(tbl[i][j]=="")
        {
            tbl[i][j]=words[n];
            n++;
        }
        if(n==6)
            break;
    }
}
 
void out()
{
    for(size_t i=0;i<3;i++)
    {
  cout<<name[i][0];
        for(size_t j=0;j<6;j++)
        {
            cout.width(9);
            cout.fill(' ');
            cout<<tbl[i][j];
            cout.width(1);
            cout<<"|";
        }
        cout<<endl;
        cout.width(10*7);
        cout.fill('-');
        cout<<'-';
        cout<<endl;
    }
}
 
 
void fill_empty()
{
    for(size_t i=0;i<3;i++)
        for(size_t j=0;j<7;j++)
            tbl[i][j]="";
}
 
int main()
{
    srand(time(0));
    while(true)
    {
        system("cls");
        fill_rand();
        out();  
        fill_empty();
        Sleep(300);
    }
}
вот так пахает =)
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
06.10.2010, 19:19  [ТС]     Очень трудно. #17
Можно ли в этой программе реализовать ввод команд под этой таблицей? (что бы одновременно и таблица была в движении, и команды писать как в командной строке).
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
06.10.2010, 21:38     Очень трудно. #18
Temirlan90, можно, но сложно. Если под винду, то без использования API-функций не обойтись.
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
07.10.2010, 05:10  [ТС]     Очень трудно. #19
можно, но сложно. Если под винду, то без использования API-функций не обойтись.
gooseim, для меня это тёмный лес=). Лучше оставить как есть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2010, 20:47     Очень трудно.
Еще ссылки по теме:

задачи c++ кому не трудно решите C++
C++ Опишите структуру, если не трудно
C++ Можете написать код если не трудно

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

Или воспользуйтесь поиском по форуму:
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
11.10.2010, 20:47  [ТС]     Очень трудно. #20
У меня есть данный код
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
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <algorithm>
#include <string>
#include <ctime>
#include <stdio.h>
#include <time.h>
#include <iomanip>
#include <Windows.h>
 
using namespace std;
 
string tbl[4][7];
string words[6]={"0x7c969", "0x9v423", "0x1s432", "0x0f243", "0x2h532", "0x7u432"};
string name[3][1] = {"  Ready  |" , "  Queue  |", "  Block  |"};
 
void fill_rand()
{
    size_t n=0;
    while(true)
    {
        size_t i=rand()%3;
        size_t j=rand()%7;
        if(tbl[i][j]=="")
        {
            tbl[i][j]=words[n];
            n++;
        }
        if(n==6)
            break;
    }
}
 
void out()
{
    for(size_t i=0;i<3;i++)
    {
  cout<<name[i][0];
        for(size_t j=0;j<6;j++)
        {
            cout.width(9);
            cout.fill(' ');
            cout<<tbl[i][j];
            cout.width(1);
            cout<<"|";
        }
        cout<<endl;
        cout.width(10*7);
        cout.fill('-');
        cout<<'-';
        cout<<endl;
    }
}
 
 
void fill_empty()
{
    for(size_t i=0;i<3;i++)
        for(size_t j=0;j<7;j++)
            tbl[i][j]="";
}
 
int main()
{
    srand(time(0));
    while(true)
    {
        system("cls");
        fill_rand();
        out();  
        fill_empty();
        Sleep(100);
    }
}
который выводит 6 процессов в таблице.
Внимание вопрос: как сделать так что бы я мог выводить процессы в количестве до 128. При этом изменяя только одну константу.
К примеру у меня сейчас 6, а сделать 128. Потом изменить размер до 10 и так далее.
Процессы у меня написаны 0х.... и что бы дальше процессы были в рандомном порядке, но при этом что бы не повторялись.

Добавлено через 3 часа 48 минут
Вот народ набросал до 20 процессов, а дальше таблица забивается
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <string>
#include <iostream>
#include <algorithm>
#include <ctime>
#include <stdio.h>
#include <iomanip>
#include <Windows.h>
 
using namespace std;
int sr = 0;
const int w = 20;
string tbl[4][7];
//string words[6]={"0x7c969", "0x9v423", "0x1s432", "0x0f243", "0x2h532", "0x7u432"};
string words[w];
string name[3][1] = {"  Ready  |" , "  Queue  |", "  Block  |"};
 
string arr() {
 
 int a,c;
 
 string hex = "0123456789ABCDEF";
 string begin = "0x";
 string end = "     ";
 srand(sr);
 for ( int i = 0; i < 5; i++ )
 { 
  a = rand() % hex.length();
  end[i] = hex[a];
 }
 string res = begin + end;
 return res;
}
 
void arr2() {
 for ( int i = 0; i < w; i++){
  sr++;
  if (sr==1000)
   sr = 0;
  words[i] = arr();
 }
}
 
void fill_rand()
{
    size_t n=0;
    while(true)
    {
        size_t i=rand()%3;
        size_t j=rand()%7;
        if(tbl[i][j]=="")
        {
            tbl[i][j]=words[n];
            n++;
        }
        if(n==w)
            break;
    }
}
 
void out()
{
    for(size_t i=0;i<3;i++)
    {
  cout<<name[i][0];
        for(size_t j=0;j<6;j++)
        {
            cout.width(9);
            cout.fill(' ');
            cout<<tbl[i][j];
            cout.width(1);
            cout<<"|";
        }
        cout<<endl;
        cout.width(10*7);
        cout.fill('-');
        cout<<'-';
        cout<<endl;
    }
}
 
 
void fill_empty()
{
    for(size_t i=0;i<3;i++)
        for(size_t j=0;j<7;j++)
            tbl[i][j]="";
}
 
int main()
{
    srand(time(0));
    while(true)
    {
        system("cls");
  arr2();
  fill_rand();
        out();  
        fill_empty();
  Sleep(100);
    }
}
как реализовать до 128?
Yandex
Объявления
11.10.2010, 20:47     Очень трудно.
Ответ Создать тему
Опции темы

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