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

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

Восстановить пароль Регистрация
 
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
07.05.2012, 15:00     Сформировать массив из элементов исходных массивов, меньших произведения последних элементов заданных массивов. #1
Программа должна:
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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2012, 15:00     Сформировать массив из элементов исходных массивов, меньших произведения последних элементов заданных массивов.
Посмотрите здесь:

C++ Сформировать массив из двух других массивов с исключением повторяющихся элементов
Создать третий массив из неповторяющихся элементов исходных массивов C++
C++ Заданы массивы вещественных чисел X и Y. Сформировать массив Z из положительных элементов массивов X и Y.
C++ Сформировать массив С, каждый элемент которого равен максимальному значению соответствующих элементов массивов А и В
Сформировать массив С, каждый элемент которого равен максимальному значению соответствующих элементов массивов А и В C++
C++ Из двух массивов сформировать общий массив и вычислить сумму элементов, являющихся полными квадратами
Сформировать массив S, состоящий из одинаковых элементов исходных массивов C++
Сформировать новый массив С из элементов массивов А и В по правилу C++
C++ Сформировать массив со значениями максимума соответствующих элементов двух других массивов
Сформировать массив, состоящий из одинаковых элементов выходных массивов C++
C++ Сформировать массив из элементов исходных массивов, образующих возрастающую последовательность
Заполнить массив цифрами произведения чисел двух исходных массивов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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. Используйте оформление кода.
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
07.05.2012, 18:28  [ТС]     Сформировать массив из элементов исходных массивов, меньших произведения последних элементов заданных массивов. #3
Спасибо большое за пояснение, да действительно переменную потеряла и в конце z[i].
Извините а где можно прочитать про srand((unsigned) time(&t)+n) ? не совсем понятно как это работает

Добавлено через 26 минут
кажется поняла всё кроме: почему +n ?
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;
}
melanu
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 118
07.05.2012, 18:35  [ТС]     Сформировать массив из элементов исходных массивов, меньших произведения последних элементов заданных массивов. #5
спасибки сейчас буду пробовать!
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
07.05.2012, 18:36     Сформировать массив из элементов исходных массивов, меньших произведения последних элементов заданных массивов. #6
Цитата Сообщение от melanu Посмотреть сообщение
почему +n ?
Да нипочему... Просто так поставил
Yandex
Объявления
07.05.2012, 18:36     Сформировать массив из элементов исходных массивов, меньших произведения последних элементов заданных массивов.
Ответ Создать тему
Опции темы

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