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

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

Войти
Регистрация
Восстановить пароль
 
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 120
#1

Сформировать массив из элементов исходных массивов, меньших произведения последних элементов заданных массивов. - C++

07.05.2012, 15:00. Просмотров 1154. Ответов 5
Метки нет (Все метки)

Программа должна:
1)генерировать случайным образом элементы исходных массивов;
2)выполнять действия в соответствии с условием задачи;
3)выводить:
- исходные массивы,
- сформированный массив, если он был сформирован. В противном случае – соответствующее сообщение.

Вот я сделала 2 исходных массива случайных чисел, а как выполнить дальнейшее условие задания совсем не понимаю, если можете набросайте пожалуйста дальнейший код желательно с комментариями. Заранее спасибо.

#include <stdio.h>
#include <stdlib.h>
int main(void){
int a[20],b[20],i,n,j,s;
printf("Введите исходное число n:");
scanf("%d",&n);
srand(n);
for (i=0; i<20; i++)
a[i]=rand();
for (i=0; i<20; i++)
printf("a[%d]=%d\n", i,a[i]);
printf("Введите исходное число s:");
scanf("%d",&s);
srand(s);
for (j=0; j<20; j++)
b[j]=rand();
for (j=0; j<20; j++)
printf("b[%d]=%d\n", i,b[j]);
return 0;
}

Добавлено через 3 часа 26 минут
нужна помощь

Добавлено через 3 часа 15 минут
help

Добавлено через 15 часов 44 минуты
набросала на паре программу, к сожалению не очень верно, help

#include <stdio.h>
#include <stdlib.h>
int main(void){
int a[10],b[10],z[15],i,n,s,k,m;
printf("Введите исходное число n:");
scanf("%d",&n);
srand(n);
for (i=0; i<10; i++)
a[i]=rand();
for (i=0; i<10; i++)
printf("a[%d]=%d\n", i,a[i]);
printf("Введите исходное число s:");
scanf("%d",&s);
srand(s);
for (i=0; i<10; i++)
b[i]=rand();
for (i=0; i<10; i++)
printf("b[%d]=%d\n", i,b[i]);
k=0;
for (i=0; i<n; i++){
if (a[i]<a[9]*b[9]){
z[k]=a[i];
k++;}
}
for (i=0; i<m; i++){
if (b[i]<a[9]*b[9]){
z[k]=b[i];
k++;}
}
printf("massiv a:");
for (i=0; i<n; i++)
printf("a[%d]=%d\n",i,a[i]);
printf("massiv b:");
for (i=0; i<m; i++)
printf("b[%d]=%d\n",i,b[i]);
if (k==0)
printf("massiv ne sformirovan\n");
else
{
printf("massiv z:");
for (i=0; i<k; i++)
printf("z[%d]=%d\n",i,z[k]);
}
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2012, 15:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сформировать массив из элементов исходных массивов, меньших произведения последних элементов заданных массивов. (C++):

Сформировать массив S, состоящий из одинаковых элементов исходных массивов - C++
2 массива X, Y, каждый из 10 эл-в. Сформировать массив S, состоящий из одинаковых эл-в исходных массивов. #include&lt;iostream&gt; ...

Сформировать массив из элементов исходных массивов, образующих возрастающую последовательность - C++
Задача: Заданы массивы целых положительных чисел X(n), Y (k), Z(m). Сформировать массив U из таких элементов массивов X, Y , Z, которые в...

Создать третий массив из неповторяющихся элементов исходных массивов - C++
помогите плиз.. чет проблемы с массивом у меня ((( Задать два массива вещественных чисел с помощью датчика случайных чисел. Создать...

Заполнить массив цифрами произведения чисел двух исходных массивов - C++
Массивы А(N), В(М) содержат числа N-значного и M-значного чисел соотвественно (1 &lt;=N, М &lt;= 100). Заполнить массив С(Nх M) цифрами...

Сформировать новый массив С из элементов массивов А и В по правилу - C++
Вывести два целочисленных массива А и В одинаковой длинны и сформировать новый массив С, который состоит из элементов : {c}_{i}= max ...

Из упорядоченных по возрастанию значений двух исходных массивов сформировать третий массив - C++
Добрый день, друзья, очень нужна ваша помощь. Задача: Ввести два массива действительных чисел, состоящих из N и M элементов. ...

5
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
07.05.2012, 15:49 #2
Сначала вопрос по поводу кода:
Зачем нужна переменная m и что она делает в цикле неинициализированная:
C++
1
2
3
4
5
for (i=0; i<m; i++){
 if (b[i]<a[9]*b[9]){
 z[k]=b[i];
 k++;}
 }
Итак, внесённые изменения:
1. Переменная t - нужна для формирования случайного числа. Сильно расписывать как это работает не буду - просто посмотрите, что происходит без неё (прогоните программу пару раз вводя одинаковые значения).
2. Константы MAS и MASZ - просто для удобства редактирования программы.
3. В последнем цикле должна выводиться z[i], а не z[k].
Листинг:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 int main(){
     const int MAS=10, MASZ=20; //В случае изменения размера массивов достаточно поменять значения этих констант
     int a[MAS],b[MAS],z[MASZ],i,n,s,k;
     time_t t; //Для формирования случайного числа
     printf("Введите исходное число n: ");
     scanf("%d",&n);
     srand((unsigned) time(&t)+n);
     for (i=0; i<MAS; i++)
        a[i]=rand();
     for (i=0; i<MAS; i++)
     printf("a[%d]=%d\n", i,a[i]);
     printf("Введите исходное число s: ");
     scanf("%d",&s);
     srand((unsigned) time(&t)+s);
     for (i=0; i<MAS; i++)
        b[i]=rand();
     for (i=0; i<MAS; i++)
        printf("b[%d]=%d\n", i,b[i]);
     k=0;
     for (i=0; i<MAS; i++)
        if (a[i]<a[MAS-1]*b[MAS-1])
        {
            z[k]=a[i];
            k++;
        }
     for (i=0; i<MAS; i++)
        if (b[i]<a[MAS-1]*b[MAS-1])
        {
            z[k]=b[i];
            k++;
        }
     printf("massiv a:");
     for (i=0; i<MAS; i++)
        printf("a[%d]=%d\n",i,a[i]);
     printf("massiv b:");
     for (i=0; i<MAS; i++)
        printf("b[%d]=%d\n",i,b[i]);
     if (k==0)
        printf("massiv ne sformirovan\n");
     else 
     {
        printf("massiv z:");
        for (i=0; i<k; i++)
            printf("z[%d]=%d\n",i,z[i]);
     }
     return 0;
 }
P.S. Используйте оформление кода.
1
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 120
07.05.2012, 18:28  [ТС] #3
Спасибо большое за пояснение, да действительно переменную потеряла и в конце z[i].
Извините а где можно прочитать про srand((unsigned) time(&t)+n) ? не совсем понятно как это работает

Добавлено через 26 минут
кажется поняла всё кроме: почему +n ?
0
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
07.05.2012, 18:31 #4
Цитата Сообщение от melanu Посмотреть сообщение
Извините а где можно прочитать про srand((unsigned) time(&t)+n) ?
Честно говоря, лень ползти в поиск, так что попробую объяснить как помню.
Функция srand() определяет последующие значения функции rand() в зависимости от переданного ей аргумента. То есть если передавать ей в качестве аргумента переменную со значением 2, то она выдаст определённый результат. Однако, если снова запустить программу и передать в качестве аргумента то же значение 2, то эта функция выдаст тот же самый результат. Поэтому полученные значения элементов массива являются не случайными, а псевдослучайными (зависят от аргумента). Насколько я помню, функция time() возвращает время в секундах от какого-то момента до переменной, переданной ей в качестве параметра. Переменная t содержит время на момент своего объявления (~время запуска программы). Поэтому элементы массива зависят не только от введённого пользователем значения переменной, но и от времени запуска программы.
Вот наглядный пример кода (попробуй запустить пару раз и сравни результаты):
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{
    time_t t;
    int i, zn;
    srand(3);
    printf("Argument srand() = 3:\n");
    for (i=0; i<3; i++)
    {
        zn=rand();
        printf("%d - %d\n", i, zn);
    }
    srand((unsigned) time(&t));
    printf("\nArgument srand() = t\n");
    for (i=0; i<3; i++)
    {
        zn=rand();
        printf("%d - %d\n", i, zn);
    }
    return 0;
}
0
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 120
07.05.2012, 18:35  [ТС] #5
спасибки сейчас буду пробовать!
0
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
07.05.2012, 18:36 #6
Цитата Сообщение от melanu Посмотреть сообщение
почему +n ?
Да нипочему... Просто так поставил
0
07.05.2012, 18:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2012, 18:36
Привет! Вот еще темы с ответами:

Сформировать массив, состоящий из одинаковых элементов выходных массивов - C++
Ввести два массива X и Y, состоящие из 10-ти элементов целого типа. Сформировать массив S, состоящая из одинаковых элементов выходных...

Сформировать массив из двух других массивов с исключением повторяющихся элементов - C++
Дано 2 массива. Сформировать третий массив, включив в него все элементы, которые есть и в первом, и во втором массиве. Повторяющиеся...

Сформировать массив со значениями максимума соответствующих элементов двух других массивов - C++
Реализовать на C++ Как это сделать? ( Даны два массива А и В одинакового размера N. Сформировать новый массив С того же размера,...

Заданы массивы вещественных чисел X и Y. Сформировать массив Z из положительных элементов массивов X и Y. - C++
Заданы массивы вещественных чисел X и Y. Сформировать массив Z из положительных элементов массивов X и Y. Определить номера максимального и...


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

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

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