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

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

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

Author24 — интернет-сервис помощи студентам
Программа должна:
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2012, 15:00
Ответы с готовыми решениями:

Сформировать третий массив из положительных элементов исходных массивов, меньших 10
Сформировать третий массив из положительных элементов исходных массивов, меньших 10.

Сформировать третий массив из элементов исходных массивов, большиз 3, но меньших 10
1.Сформировать третий массив из элементов исходных массивов,большиз 3 ,но меньших 10. 2.Заменить...

Сформировать третий массив из меньших - 3 элементов исходных массивов, стоящих на четных местах.
Сформировать третий массив из меньших - 3 элементов исходных массивов, стоящих на четных местах

Сформировать массив S, состоящий из одинаковых элементов исходных массивов
2 массива X, Y, каждый из 10 эл-в. Сформировать массив S, состоящий из одинаковых эл-в исходных...

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

Добавлено через 26 минут
кажется поняла всё кроме: почему +n ?
0
67 / 67 / 9
Регистрация: 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
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 120
07.05.2012, 18:35  [ТС] 5
спасибки сейчас буду пробовать!
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
07.05.2012, 18:36 6
Цитата Сообщение от melanu Посмотреть сообщение
почему +n ?
Да нипочему... Просто так поставил
0
07.05.2012, 18:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2012, 18:36
Помогаю со студенческими работами здесь

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

Сформировать массив из отрицательных элементов исходных массивов, больших -5
Сформировать массив из отрицательных элементов исходных массивов, больших - 5. помогите пожалуйста

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

Сформировать новый массив из элементов, входящих только в один из исходных массивов
Даны два массива A и B. Сформировать новый массив C, состоящий из элементов, входящих только в один...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru