Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 11.11.2022
Сообщений: 6

Две задачи по заполнению массива случайными значениями и дальнейшии махинации с их обьектами

11.11.2022, 21:41. Показов 1454. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет - я очень новенький мальчик который хочет выучить С++ но дается это мне очень уж трудно

Основная часть программы у меня готова но не могу отсортировать случайные числа

Нужно сделать две программы

1.Создать массив из 15 случайных символов с кодами от 20 до 200.
Разработать программу для определения числа символов с кодами от 50 до 200.
Вывести эти коды и соотвествующие им символы на экран.

2.Создать массив из восьми случайных чисел и расположить его элементы в порядке на убывания (сортировка от большого к меньшему).

Пытался понять как работает метод пузырька - до меня не дошло...

Нашел такую функцию как "sort" с ней очень легко обращаться и она правда сортирует массив но в моем случаи я получаю ошибку - хотелось бы раз и навсегда понять как сортировать эти злые массивы.


Вот собственно исходник:


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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream> // Подключаю с помощью "#include <>" библиотеку "iostream" для ввода (cin) и вывода (cout) информации на экран.
#include <cstdlib> // Подключаю с помощью "#include <>" библиотеку "cstdlib" для использования функции генерации случайных чисел (rand).
#include <ctime> // Подключаю с помощью "#include <>" библиотеку "ctime" для использования функции таймера - нужна для того что бы генерировались случайные числа.
#include <algorithm> // Подключаю с помощью "#include <>" библиотеку "algorithm" для использования функции sort - нужна для сортировки обьктов в массиве.
 
 
using namespace std; // Говорим компилятору что хотим использовать все имена из пронстранства имен std.
 
 
void Second_Self_Employed_Work() // Создаю функцию "Second_Self_Employed_Work" с типом "void" (пустое значение) в которой будет вторая самостоятельная работа.
 
{
 
    // Скопипастил код из инета - а именно фишку которая делает так что рандомные значения не повторяються между собой.
 
    setlocale(LC_ALL, "Russian"); // Функция "setlocale" для подключения любого языка.
 
    srand(time(NULL)); // Устанавливаю значение NULL для time - это нужно для генерации случайных чисел.
 
    const short Number_Of_Objects_In_The_Array = 8; // Обьявляю константную переменную "Number_Of_Objects_In_The_Array" с типом "short" (целые числа) в котором будет храниться длина массива.
 
    short arr[Number_Of_Objects_In_The_Array]; // Обьявляю массив "Array" с типом "char" (символы) в котором будет храниться такое же количество обьектов как в переменной "Number_Of_Objects_In_The_Array" (15 обьектов).
 
    bool Value_Already_In_Array; // Обьявляю переменную "Value_Already_In_Array" с типом "bool" (логическая переменная) которая будет отвечать за то что бы рандомные значения между собой не повторялись.
 
    for (short i = 0; i < Number_Of_Objects_In_The_Array; )
 
    {
        Value_Already_In_Array = false;
 
        short newRanomValue = 500 - rand() % 500; // Обьявляю переменную "new_RanomValue" с типом "short" (целые числа) в котором будет рандомное значение от 500 до 0.
 
        for (short j = 0; j < i; j++)
        {
            if (arr[j] == newRanomValue) // Если обьект из массива "arr" будет равно переменной "new_RanomValue" тогда будет работать блок кода с 38 до 40.
 
            {
                Value_Already_In_Array = true;
 
                break; // Выход из цикла с помощью функции "break".
            }
        }
 
        if (!Value_Already_In_Array)
        {
            arr[i] = newRanomValue;
 
            i++;
 
            sort(arr, arr + Number_Of_Objects_In_The_Array); // Использую функцию "sort" для сортировки обьектов массива "Array".
        }
 
    }
 
    for (short i = 0; i < Number_Of_Objects_In_The_Array; i++)
 
    {
        cout << "\n\t" << arr[i];
    }
 
    cout << "\n\n";
 
    system("Pause"); // Функция "system("Pause")" нужна для остановки работы программы (паузы).
 
    return; // Завершаю функцию "Second_Self_Employed_Work" c помощью функции возврата значений "return".
}
 
 
 
int main() // Создаю функцию "main" с типом int (целые числа).
 
{
    setlocale(LC_ALL, "Russian"); // Функция "setlocale" для подключения любого языка.
 
    srand(time(NULL)); // Устанавливаю значение NULL для time - это нужно для генерации случайных чисел.
 
    const short Number_Of_Objects_In_The_Array = 15; // Обьявляю константную переменную "Number_Of_Objects_In_The_Array" с типом "short" (целые числа) в которой будет храниться количество обьектов для массива.
 
    char Array[Number_Of_Objects_In_The_Array]; // Обьявляю массив "Array" с типом "char" (символы) в котором будет храниться такое же количество обьектов как в переменной "Number_Of_Objects_In_The_Array" (15 обьектов).
 
    short User_Choice; // Обьявляю переменную "User_Choice" с типом "short" (целые числа) значение которой будет присвоенно от пользователя.
 
    Return_User_to_the_First_Task_Algorithm: // Метка "Return_User_to_the_First_Task_Algorithm" для функции "goto" - нужна для возврата пользователя к началу алгоритма, если он ошибся и хочет вернуться к первой самостоятельной.
 
    cout << "\tВыберите самостоятельную работу из списка\n\n";
    cout << "\t1. Самостоятельная #1\n";
    cout << "\t2. Самостоятельная #2\n\n";
    cout << "\tМой выбор это ";
 
    cin >> User_Choice; // Получаем значение для переменной "User_Choice" от пользователя.
 
    system("Cls"); // Функция "system("Cls")" нужна для очистки экрана.
 
    if (User_Choice != 1 && User_Choice != 2) // Если значение переменной "User_Choice" будет равно не эдинице - будет работать блок кода с 37 строки до 45.
 
    {
        short User_Decides_To_Return_Or_Not_To_The_Beginning_Of_The_Program_Algorithm; // Обьявляю переменную "User_Decides_To_Return_Or_Not_To_The_Beginning_Of_The_Program_Algorithm" с типом "short" (целые числа) значение которой будет присвоенно от пользователя.
 
        cout << "\tВы ввели значение которого нету в списке!\n";
        cout << "\tХотите попробывать еще раз?\n\n";
        cout << "\t1. Да\n";
        cout << "\t2. Нет\n\n";
        cout << "\tМой выбор это ";
 
        cin >> User_Decides_To_Return_Or_Not_To_The_Beginning_Of_The_Program_Algorithm; // Получаем значение для переменной "User_Decides_To_Return_Or_Not_To_The_Beginning_Of_The_Program_Algorithm" от пользователя.
 
        if (User_Decides_To_Return_Or_Not_To_The_Beginning_Of_The_Program_Algorithm != 1) // Если значение переменной "User__Decides_To_Return_Or_Not_To_The_Beginning_Of_The_Program_Algorithm" будет равно не эдинице - будет работать блок кода с 50 строки до 50.
 
        {
            return 0; // Отправляем значение 0 для функции "main" с помощью функции возврата значений "return" - тем самым заканчиваем функцию и собственно программу.
        }
 
        if (User_Decides_To_Return_Or_Not_To_The_Beginning_Of_The_Program_Algorithm == 1) // Если значение переменной "User__Decides_To_Return_Or_Not_To_The_Beginning_Of_The_Program_Algorithm" будет равно эдинице - будет работать блок кода с 56 строки до 58.
 
        {
            system("Cls"); // Функция "system("Cls")" нужна для очистки экрана.
 
            goto Return_User_to_the_First_Task_Algorithm; // Отправляемся к метке "Re_Entry_User_Input" - тем самым снова переходим к началу алгоритма
        }
    }
 
    if (User_Choice == 2) // Если значение переменной "User_Choice" будет равно двойке - будет работать блок кода с 125 строки до 127.
 
    {
        Second_Self_Employed_Work();
 
        return 0; 
    }
 
 
    for (short The_Body_Of_The_Cycle = 0; The_Body_Of_The_Cycle < Number_Of_Objects_In_The_Array; The_Body_Of_The_Cycle++) // Цикл "for" в котором будет 15 интеграций.
 
    {
            Array[The_Body_Of_The_Cycle] = 50 + rand() % 70; // Заполняем массив случайными числами от 50 до 120.
            sort(Array, Array + Number_Of_Objects_In_The_Array); // Использую функцию "sort" для сортировки обьектов массива "Array".
 
            cout << "\n\t" << Array[The_Body_Of_The_Cycle] << " = " << (int)Array[The_Body_Of_The_Cycle]; // Выводим из массива символ и его код на экран.
 
    }
 
    cout << "\n\n";
 
    system("Pause"); // Функция "system("Pause")" нужна для остановки работы программы (паузы) - в данном случаи для того что бы наша программа не закрывалась моментально.
 
    return 0; // Отправляем значение 0 для функции "main" с помощью функции возврата значений "return", тем самым функция прекращает свою работу.
}
Миниатюры
Две задачи по заполнению массива случайными значениями и дальнейшии махинации с их обьектами  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.11.2022, 21:41
Ответы с готовыми решениями:

Реализовать функцию по заполнению массива случайными значениями
Написать программу, которая создаст 3 одномерных массива, размерностью 7, 12 и 25, а затем заполнит все три массива случайными числами из...

Написать скрипт по заполнению массива случайными числовыми значениями
Дан числовой массив из n количества элементов. Написать скрипт по заполнению его случайными числовыми значениями. Я начинающий JavaScript....

Работа с массивами. Заполнить две матрицы 5х5 случайными значениями булевского типа.
Заполнить две матрицы 5х5 случайными значениями булевского типа. Если хотя бы один элемент строки первой матрицы совпадает с...

6
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
11.11.2022, 21:58
C++
1
    for (short i = 0; i < Number_Of_Objects_In_The_Array; )
А где вы выходите из этого цикла?

Добавлено через 59 секунд
Код обладает очень слабой читаемостью.
Опишите, что вы воспринимаете как ошибку и как её получить?
0
0 / 0 / 0
Регистрация: 11.11.2022
Сообщений: 6
11.11.2022, 22:10  [ТС]
Исходник немного не допилен - это можно понять по ошибкам в комментариях, только не ругайте

Добавлено через 10 минут
Ошибки нету - просто опечатку допустил, у меня что то не так в коде сделано иза чего получаеться странный вывод семи обьктов массива "Array" из функции
C++
1
int main()
и четырех обьектов массива "Array" из функции
C++
1
void Second_Self_Employed_Work()
это можно увидеть на скриншоте.

А вывод из цикла находиться в 35 строке в конструкции if (если я не прав извиняюсь - я полный нуб) + данный код я взял из инета так и не поняв как он работает.

Насчет плохой читаемости тоже извиняюсь - я пытался написать как можно подробные комментарии но видимо они не очень и уж подробные.
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
11.11.2022, 22:39
Лучший ответ Сообщение было отмечено hpp_forever как решение

Решение

Какие-то вы используете устаревшие/некорректные подходы.

Цитата Сообщение от hpp_forever Посмотреть сообщение
using namespace std;
Так делать не стоит.
Сливать весь неймспейс в текущий -- очень плохая идея.
Функций очень много, а красивых слов -- внезапно неочень много.
Будете ловить ошибки, которые потом будет чудовищно сложно отловить.

Цитата Сообщение от hpp_forever Посмотреть сообщение
srand(time(NULL));
Этот подход к генерации случайных чисел имеет существенные недостатки и устарел.
Так больше не делают.

Цитата Сообщение от hpp_forever Посмотреть сообщение
system("Cls");
Не надо, пожалуйста, вызывать системные функции из кода для красоты.
Если это не специализированный код, конечно.
Они не везде правильно работают.

Цитата Сообщение от hpp_forever Посмотреть сообщение
goto Return_User_to_the_First_Task_Algorithm;
Не стОит использовать безусловный переход (goto) без серьезных на то причин.
Это плохо чистаемо и небезопасно, особенно, когда вы не вполне понимаете ограничения на этот самый goto и принципы его работы.
Используйте циклы. Тут подойдёт цикл с пост-условием do {} while(условие);

Цитата Сообщение от hpp_forever Посмотреть сообщение
system("Pause");
Пожалуйста, не используйте вызовы консольных приложений.
Разберитесь, пожалуйста, один раз с тем, как оставить окно открытым после исполнения программы или настройте вывод в псевдоконсоль вашей IDE.
На худой конец, если совсем уж лень, вызовите чтение из консоли, например std::cin.get();

Пример решения более современными способами:
Цитата Сообщение от hpp_forever Посмотреть сообщение
1.Создать массив из 15 случайных символов с кодами от 20 до 200.
Разработать программу для определения числа символов с кодами от 50 до 200.
Вывести эти коды и соотвествующие им символы на экран.
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
#include <iostream> // библиотека ввода-вывода
#include <chrono> // библиотека для работы со временем
#include <random> // библиотека для работы со случайными числами
 
// функция, которая будет вызвана при запуске программы
int main() {
    // зерном для генератора псевдо-случайных чисел будет текущее количество миллисекунд с начала эпохи UNIX
    auto seed = std::chrono::system_clock::now().time_since_epoch().count();
    // генератор случайных чисел, инициализированный зерном
    std::default_random_engine randomEngine(seed);
    // объект для получения равномерно распределенных случайных чисел в диапазоне [20-200]
    std::uniform_int_distribution distribution(20, 200);
 
    /**
     * Создание (статического) массива из 15 элементов со случайными значениями от 20 до 200 включительно
     */
 
    // размер массива
    const std::size_t SIZE = 15;
    // массив размером size
    int array[SIZE];
 
    // для каждого индекса в массиве
    for (std::size_t i = 0; i < SIZE; ++i) {
        // присваивание элементу массива случайного элемента с исопльзованием генератора псевдослучайных
        // чисел и равномерным распределением в диапазоне [20, 200].
        array[i] = distribution(randomEngine);
    }
 
    /**
     * Поиск и вывод на экран значений из массива, которые находятся в диапазоне от 50 до 200 включительно
     */
 
    // для каждого индекса в массиве
    for (std::size_t i = 0; i < SIZE; ++i) {
        // если значение элемента массива по этому индексу находится в диапазоне [50, 200]
        if (array[i] >= 50 && array[i] <= 200) {
            // вывод индекса
            std::cout << i
                // вывод пробела для читаемости
                << ' '
                // вывод значения массива по индексу
                << array[i]
                // вывод символа переноса строки для читаемости
                << '\n';
        }
    }
 
    // чтение симола из потока ввода
    std::cin.get();
 
    return 0;
}
Добавлено через 15 минут
Ну и второе задание. С пузырьком

Цитата Сообщение от hpp_forever Посмотреть сообщение
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream> // библиотека ввода-вывода
#include <chrono> // библиотека для работы со временем
#include <random> // библиотека для работы со случайными числами
 
// функция, которая будет вызвана при запуске программы
int main() {
    // зерном для генератора псевдо-случайных чисел будет текущее количество миллисекунд с начала эпохи UNIX
    auto seed = std::chrono::system_clock::now().time_since_epoch().count();
    // генератор случайных чисел, инициализированный зерном
    std::default_random_engine randomEngine(seed);
    // объект для получения равномерно распределенных случайных чисел в диапазоне [20-200]
    std::uniform_int_distribution distribution(20, 200);
 
    /**
     * Создание (статического) массива из 8 элементов со случайными значениями (от 20 до 200 включительно)
     */
 
    // размер массива
    const std::size_t SIZE = 8;
    // массив размером size
    int array[SIZE];
 
    // для каждого индекса в массиве
    for (std::size_t i = 0; i < SIZE; ++i) {
        // присваивание элементу массива случайного элемента с исопльзованием генератора псевдослучайных
        // чисел и равномерным распределением в диапазоне [20, 200].
        array[i] = distribution(randomEngine);
    }
 
    /**
     * расположить его элементы в порядке неубывания (сортировка от большого к меньшему).
     */
 
    // сортировка пузырьком
    // для каждого индекса в массиве до предпоследнего
    for (std::size_t i = 0; i < SIZE - 1; ++i) {
        // для каждого индекса в массиве, начиная с индекса, следующего за i и до конца массива
        for (std::size_t j = i + 1; j < SIZE; ++j) {
            // если значение элемента по первому индексу меньше значения элемента массива по второму индесу
            if (array[i] < array[j]) {
                // обмен местами элементов массива
                // значение элемента по первому индексу во временную переменную
                int temp = array[i];
                // в элемент по первому индексу элемент со вторым индексом
                array[i] = array[j];
                // в элемент по второму индесу значение временной переменной -- бывшее значение по первому индексу
                array[j] = temp;
            }
        }
    }
 
    /**
     * вывод на экран содержимого массива
     */
 
    // для каждого индекса в массиве до предпоследнего
    for (std::size_t i = 0; i < SIZE ; ++i) {
        std::cout << array[i] << ' ';
    }
 
    // чтение симола из потока ввода
    std::cin.get();
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 11.11.2022
Сообщений: 6
11.11.2022, 23:00  [ТС]
Спасибо вам большое - просто у меня ситуация не очень простая.

В моем Вузе ужасно преподают С++ (надеюсь в других все нормально) - нам дают практическую даже без теории, в итоге все списывают код из инета и уходят по домам).

Приходиться дома сидеть и разбираться как же все таки работает этот код...

Ваш код безусловно уникальный и красиво оформленный но мы такого не проходили еще (весь мой багаж знаний это данная работа сверху

Препод спрашивает - как я сделал программу = я буду молчать, так как мы это не проходили еще и ваш код очень заумный для меня).


Ну а так еще раз вам большое спасибо
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
12.11.2022, 04:07
Цитата Сообщение от hpp_forever Посмотреть сообщение
мы такого не проходили еще
Мой код был призван показать вам... более-менее хорошие практики.
Я не использовал ничего сверхъестественного.

Что из моего кода вы "не проходили ещё"?
Использование современной библиотеки генерации случайных чисел? Так вы её и не будете проходить, судя по всему. Скажете, что нагуглили. Все гуглят.

Что ещё мой код привносит?!.
auto можете заменить на unsigned int, если вас смущает.
std::size_t это имя типа, который используется для адресации в массиве, конкретный тип зависит от компилятора/окружения, чаще всего это unsigned long long
0
 Аватар для Наталья8
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,877
22.11.2025, 03:00
Цитата Сообщение от hpp_forever Посмотреть сообщение
Return_User_to_the_First_Task_Algorithm
А чё это??
Си плюс плюс?
Учись умные слова искуственному интелекту запрашивать.
И напишешь правильную программу....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2025, 03:00
Помогаю со студенческими работами здесь

Заполнение массива случайными значениями в С
Необходимо заполнить масив случайными значениями в диапазоне 1-9, причем они каждый раз должны быть другими, только random(9) заполняет...

Заполнение массива случайными значениями
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;cstdlib&gt; int main (void) { int a; int i,j,...

Найти количество повторений элементов массива. В ответ вывести два массива: первый – заполненный случайными значениями;
Найти количество повторений элементов массива. В ответ вывести два массива: первый – заполненный случайными значениями; второй – массив,...

Заполнение целого массива случайными значениями
1.Написать программу, организующую заполнение целого массива из n элементов случайными значениями (n – целая переменная или константа) и...

Сформировать 3 массива одномерных со случайными значениями от 0 до 9
Помогите пожалуйста. Задача в Паскаль: Сформировать 3 массива одномерных со случайными значениями от 0 до 9: 1. Массив целых чисел,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru