Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
ShmelVG
16 / 16 / 10
Регистрация: 27.11.2015
Сообщений: 468
Завершенные тесты: 1
1

Повторить строку вектора несколько раз

19.03.2016, 21:44. Просмотров 1020. Ответов 11
Метки нет (Все метки)

Ну вот что со мной не так?))


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
#include <iostream>
#include <clocale>
#include <ctime>
 
using namespace std;
 
int main()
{
    setlocale (0,"");
    srand((unsigned)time(NULL));
 
    int n, i, j;
    n = 10;
 
    //1. Использование оператора new для создания динамического вектора.
 
    //создание - выделение памяти под одномерный массив
    int *Massiv;
    Massiv = new int[n];
 
    //присвоения начальных значений элементам
    for(i=0; i<n; i++) Massiv[i] = (int)(rand()%200-99);
    
    //замена пять первых элемнтов на 100
    cout<<"Замена первых пяти элементов на 100\n";
    
    for(i=0; i<5; i++)
    {
        Massiv[i]=100;
    }
 
    for(i=0; i<n; i++)
    cout<<" "<<Massiv[i];
    cout<<endl;
 
 
    j=(int)(rand()%20+20);
    for(i=0; i<n; i++)
    {
        int j = (int) rand()%20+20;
        if (!((i+1)%10)) cout << endl;  
        cout<<Massiv[i]<<"\n"<<endl;
    }

Написать программу по формированию динамического вектора целого типа. Имя вектора – Massiv. Размерность вектора задается генератором случайных чисел (размерность примерно 20÷40 элементов). Каждый элемент вектора задается генератором случайных чисел в диапазоне от -100 до 99. Распечатать вектор по 10 элементов в строке (получить аккуратную таблицу). Ввести в начало вектора Massiv первые пять элементов со значением 100.

C++
1
2
3
4
5
6
7
j=(int)(rand()%20+20);
    for(i=0; i<n; i++)
    {
        int j = (int) rand()%20+20;
        if (!((i+1)%10)) cout << endl;  
        cout<<Massiv[i]<<"\n"<<endl;
    }
Этот кусок надо преобразовать так, чтобы генератор случайных чисел, повторял строку рандомное кол-во раз))
Чтобы получить красивую табличку, где в строке 10 элементов))
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2016, 21:44
Ответы с готовыми решениями:

Как прочитать первую строку из файла а остальной текст повторить несколько раз?
Я новичок в этом деле, прошу не осуждать. Помогите разобраться. Задание...

Вывод результата несколько раз отработанной функции в одну строку
Очень интересный момент нашел я для себя сегодня в С++. А точнее в выводе...

Функция, в которой повторить алгоритм любой сортировки n раз
Как сделать функцию, которая бы повторяла алгоритм любой сортировки n кол-во...

Ввести строку. Повторить дважды первое слово в строке
Помогите написать программу Ввести строку. Повторить дважды первое слово в...

Вывести числа, которые встречаются в массиве несколько раз / один раз
дан массив состоящий из 100 целых чисел. а)Вывести все числа,которие...

11
meJevin
157 / 149 / 92
Регистрация: 18.11.2015
Сообщений: 677
Завершенные тесты: 1
19.03.2016, 22:57 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
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <vector>
#include <random>
#include <ctime>
#include <iomanip>
 
void drawLine() {
    for (int i = 0; i < 10 * 7 + 1; i++)
        std::cout << "=";
}
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::default_random_engine randomEngine(time(NULL));
    std::uniform_int_distribution<int> sizeGenerator(20, 40);
    std::uniform_int_distribution<int> numberGenerator(-100, 99);
 
    int size = sizeGenerator(randomEngine);
    std::vector<int> Massiv(size);
 
    for (int i = 0; i < size; i++)
        (i < 5) ? Massiv[i] = 100 : Massiv[i] = numberGenerator(randomEngine);
 
 
    std::cout << "Ваш массив:\n";
    drawLine();
    for (int i = 0, j = 0; i < size; i++, j++) {
 
        if (j % 10 == 0)
            std::cout << "\n| ";
        std::cout << std::setiosflags(std::ios::fixed) << std::setw(4)
            << Massiv[i] << " | ";
    }
    std::cout << "\n";
    drawLine();
 
    _getch();
    return 0;
}
0
meJevin
157 / 149 / 92
Регистрация: 18.11.2015
Сообщений: 677
Завершенные тесты: 1
19.03.2016, 23:04 3
Цитата Сообщение от ShmelVG Посмотреть сообщение
получить аккуратную таблицу
Вроде аккуратно. Но я не до конца понял, что там с первыми пятью элементами, их сразу 100 ставить? Или один раз вывести случайно заполненный массив, а потом с сотнями в начале? (если тебе нужен массив динамический просто, вместо вектора, который я использовал, пиши в строке 23 так: int *Massiv = new int[size]
0
Миниатюры
Повторить строку вектора несколько раз  
ShmelVG
16 / 16 / 10
Регистрация: 27.11.2015
Сообщений: 468
Завершенные тесты: 1
19.03.2016, 23:31  [ТС] 4
Как я понял, намешаны библиотеки и С и С++ что не корректно смотрится) Как я понял из условий, что один раз сделал вектор на 10 элементов, поменял первые пять на 100, получается к примеру 100,100,100,100,100,5,6,7,2,-99 и эту строчку скопировать столько раз, сколько покажет число рандом...т.е. от 20 до 40 раз, так я понимаю это условие, не думаю что требуют что-то сверх, ибо задание расчитаны на самые начальные навыки))Всё таки заочное отделение))
0
meJevin
157 / 149 / 92
Регистрация: 18.11.2015
Сообщений: 677
Завершенные тесты: 1
19.03.2016, 23:34 5
Цитата Сообщение от ShmelVG Посмотреть сообщение
Как я понял
Это у вас в учебнике или препод отправил по почте? Сфоткай задание, я сделаю.
0
nd2
2838 / 2405 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
19.03.2016, 23:40 6
Цитата Сообщение от ShmelVG Посмотреть сообщение
Как я понял из условий, что один раз сделал вектор на 10 элементов,
Где там такое условие? Понимаешь, о чём здесь пишется?
Цитата Сообщение от ShmelVG Посмотреть сообщение
Размерность вектора задается генератором случайных чисел (размерность примерно 20÷40 элементов).
Я тебе уже писал, что нужно сделать, всё равно своё городишь.
Задать размерность вектору генератором случайных чисел
0
meJevin
157 / 149 / 92
Регистрация: 18.11.2015
Сообщений: 677
Завершенные тесты: 1
19.03.2016, 23:41 7
Лучший ответ Сообщение было отмечено ShmelVG как решение

Решение

Цитата Сообщение от ShmelVG Посмотреть сообщение
и эту строчку скопировать столько раз, сколько покажет число рандом...т.е. от 20 до 40 раз
Эммм, нуууу, тогда так, наверное...
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
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <vector>
#include <random>
#include <ctime>
#include <iomanip>
 
void drawLine() {
    for (int i = 0; i < 10 * 7 + 1; i++)
        std::cout << "=";
}
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::default_random_engine randomEngine(time(NULL));
    std::uniform_int_distribution<int> sizeGenerator(20, 40);
    std::uniform_int_distribution<int> numberGenerator(-100, 99);
 
    int size = sizeGenerator(randomEngine);
    std::vector<int> Massiv(size);
 
    for (int i = 0; i < size; i++)
        (i < 5) ? Massiv[i] = 100 : Massiv[i] = numberGenerator(randomEngine);
 
 
    std::cout << "Ваш массив:\n";
    drawLine();
    for (int i = 0, j = 0; i < size; i++, j++) {
        if (j % 10 == 0)
            std::cout << "\n| ";
        std::cout << std::setiosflags(std::ios::fixed) << std::setw(4)
            << Massiv[i] << " | ";
    }
    std::cout << "\n";
    drawLine();
 
    std::cout << "\nНажмите любую клавишу, для копирования первой строки " << size << " раз....";
    _getch();
 
    std::vector<int> Massiv_copy(10);
    for (int i = 0; i < 10; i++)
        Massiv_copy[i] = Massiv[i];
 
    std::cout << "\n";
    for (int p = 0; p < size; p++) {
        std::cout << "\n";
        drawLine();
        for (int i = 0, j = 0; i < 10; i++, j++) {
            if (j % 10 == 0)
                std::cout << "\n| ";
            std::cout << std::setiosflags(std::ios::fixed) << std::setw(4)
                << Massiv_copy[i] << " | ";
        }
    }
    std::cout << "\n";
    drawLine();
 
    _getch();
    return 0;
}
1
meJevin
157 / 149 / 92
Регистрация: 18.11.2015
Сообщений: 677
Завершенные тесты: 1
19.03.2016, 23:42 8
Лучший ответ Сообщение было отмечено ShmelVG как решение

Решение

В итоге так надо?
0
Миниатюры
Повторить строку вектора несколько раз  
ShmelVG
16 / 16 / 10
Регистрация: 27.11.2015
Сообщений: 468
Завершенные тесты: 1
22.03.2016, 09:20  [ТС] 9
Да-да))Так, только генератор сам выдает сколько ему надо от 20 до 40))А у меня веводит 2-3 строки только...

Добавлено через 2 минуты
Написать программу по формированию динамического вектора целого типа. Имя вектора – Massiv. Размерность вектора задается генератором случайных чисел (размерность примерно 20÷40 элементов). Каждый элемент вектора задается генератором случайных чисел в диапазоне от -100 до 99. Распечатать вектор по 10 элементов в строке (получить аккуратную таблицу). Далее с вектором Massiv продолжить работу по вариантам.
Вар. 14 Ввести в начало вектора Massiv первые пять элементов со значением 100.
0
meJevin
157 / 149 / 92
Регистрация: 18.11.2015
Сообщений: 677
Завершенные тесты: 1
22.03.2016, 14:49 10
Цитата Сообщение от ShmelVG Посмотреть сообщение
А у меня веводит 2-3 строки только..
Странно, у меня он выводит кол-во строк, которое генератор выбирает (20-40). Это у вас что-то, скорее всего.

Добавлено через 15 минут
Цитата Сообщение от ShmelVG Посмотреть сообщение
от 20 до 40))А у меня веводит 2-3 строки только...
Или ты хочешь 20-40 строк со случайными числами, а чтобы в первой только были пять сотен вставлены?
0
ShmelVG
16 / 16 / 10
Регистрация: 27.11.2015
Сообщений: 468
Завершенные тесты: 1
23.03.2016, 09:55  [ТС] 11
Вот как на таблице, только произвольно бы показывал от 20-40 строк)) У вас же консольное приложение?)

Добавлено через 9 минут
Ааа..Добавил #include <clocale>, сделал так
C++
1
2
3
4
int main() {
    setlocale(0,"");
    /*SetConsoleCP(1251);
    SetConsoleOutputCP(1251);*/
И всё получилось)))Очень классно получилось)))Спасибо!!..Эх...но мы тут столько не проходили, не знаю как преподу это всё объяснить
C++
1
)))#include <Windows.h>
это мы не трогали, да и так , есть вещи которые мы не трогали)
А разве не удобнее использовать
C++
1
using namespace std;
?)
В общем, ещё не дорос до такого решения))
0
meJevin
157 / 149 / 92
Регистрация: 18.11.2015
Сообщений: 677
Завершенные тесты: 1
23.03.2016, 17:41 12
Цитата Сообщение от ShmelVG Посмотреть сообщение
А разве не удобнее использовать
Да, using namespace std; сильно облегчает работу в таких мелких программках, но не стоит к этому приучаться.
1
23.03.2016, 17:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2016, 17:41

Функция, которая копирует строку в другую строку заданное количество раз
Помогите!!!! срочно нужна задача. Не знаю как сделать. Разработать функцию,...

Ввести строку, подсчитать сколько раз первая буква входит в строку
Ввести строку, подсчитать сколько раз первая буква входит в строку. C++

Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy
Написать функцию которая копирует строку S1 в строку S2 N раз, без...


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

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

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