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

Заполнить одномерный массив двадцатью первыми натуральными числами, кратными 5-ти или 7-ми

09.11.2014, 16:31. Показов 7703. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Составьте программу, которая заполняет одномерный массив двадцатью первыми натуральными числами, кратными 5-ти или 7-ми. Полученный массив вывести на экран.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2014, 16:31
Ответы с готовыми решениями:

Заполнить массив двадцатью первыми натуральными числами, делящимися нацело на 13 или на 17 и большими 300
1. Заполнить массив: а) двадцатью первыми натуральными числами, делящимися нацело на 13 или на 17...

Заполнить массив двадцатью первыми натуральными числами, делящимися нацело на 13 или на 17
Заполнить массив двадцатью первыми натуральными числами, делящимися нацело на 13 или на 17 и...

Заполнить массив двадцатью первыми натуральными числами, делящимися нацело на 13 или на 17 и находящимися в ин
Заполнить массив двадцатью первыми натуральными числами, делящимися нацело на 13 или на 17 и...

Заполнить массив двадцатью первыми натуральными числами, делящимися нацело на 13 или на 17 и большими 300
заполнить массив двадцатью первыми натуральными числами делящимися нацело на 13 или на17 и...

27
_Ivana
09.11.2014, 16:44
  #2

Не по теме:

Haskell
1
print $ take 20 [i|i<-[1..], mod i 5==0 || mod i 7==0]
[5,7,10,14,15,20,21,25,28,30,35,40,42,45,49,50,55,56,60,63]

0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
09.11.2014, 17:28 3
Лучший ответ Сообщение было отмечено Maru11 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int main()
{
    int n;
    scanf("%d", &n);            /* вводим размер массива n*/
    int* arr = new int[n];      /* создаём динамический массив размера n */
 
    int j = 0;
    for (int i = 0; i < n && j < 20; i++) {
        scanf("%d", &arr[i]);
        if ((arr[i] % 5 == 0 || arr[i] % 7 == 0) && arr[i] > 0)     /* берём первые 20 натуральных элементов массива, кратных 5-ти и 7-ми */
            arr[j++] = arr[i];
        }
 
    for (int k = 0; k < j; k++)
        printf("%d ", arr[k]);      /* выводим "новый" массив на экран */
 
    delete[] arr;   /*  удаляем динамическую память */
    return 0;
}
Добавлено через 8 минут

Не по теме:

_Ivana, а ты учёл, что элементы массива могут быть ненатуральными числами, например, -25. :D

1
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
09.11.2014, 17:43 4
Dennis Ritchie, не могут:
Цитата Сообщение от Maru11 Посмотреть сообщение
заполняет одномерный массив двадцатью первыми натуральными числами
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
09.11.2014, 17:56 5
Цитата Сообщение от _Ivana Посмотреть сообщение
Dennis Ritchie, не могут:
Там не написано, что элементы массива не могут быть ненатуральными. В массиве могут "валяться" и отрицательные числа, а твоя программа должна "заполнить одномерный массив двадцатью первыми натуральными элементами, кратными 5-ти или 7-ми." Ещё раз: там не сказано, что исходный массив (ряд чисел) содержит только натуральные числа. Так что доделай свой код. На C++ это сделать просто (&& arr[i] > 0), а на Haskell?
0
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
09.11.2014, 17:58 6
Dennis Ritchie, приведите конкретный пример вашего бредового понимания задачи, чтобы я понял - реализуем и его
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
09.11.2014, 18:17 7
Цитата Сообщение от _Ivana Посмотреть сообщение
Dennis Ritchie, приведите конкретный пример вашего бредового понимания задачи, чтобы я понял - реализуем и его
Исходный массив, например, на 40 элементов:
[1, -7, -5, -55, -100, -15, 2, 5, 10, 15, 4, 49, 50, 9, 7, 7, 40, 20, 21, 14, 8, 12, 16, 63, 80, 100, 35, 42, 28, 45, 80, 43, 99, 0, 55, 65, 56, 33, 98, 77]
Новый массив:
[5, 10, 15, 49, 50, 7, 7, 40, 20, 21, 14, 63, 80, 100, 35, 42, 28, 45, 80, 55]
Да, моё понимание этой задачи оказалось бредовым. Я подумал, что у нас имеется исходный массив. Но всё равно, напишите, пожалуйста, код для моего "бредового" понимания этой задачи.
0
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
09.11.2014, 18:32 8
Haskell
1
2
l = [1, -7, -5, -55, -100, -15, 2, 5, 10, 15, 4, 49, 50, 9, 7, 7, 40, 20, 21, 14, 8, 12, 16, 63, 80, 100, 35, 42, 28, 45, 80, 43, 99, 0, 55, 65, 56, 33, 98, 77]
main = print $ take 20 [i|i<-l, (mod i 5==0 || mod i 7==0) && i>0]
[5,10,15,49,50,7,7,40,20,21,14,63,80,100,35,42,28,45,80,55]

Добавлено через 6 минут
Haskell
1
main = print $ take 20 $ filter (\i -> (i>0) && (mod i 5==0 || mod i 7==0)) l
1
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
09.11.2014, 18:41 9
Правильное решение задачи:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
#define LIM 100
 
int main()
{
    int arr[LIM];
 
    int j = 0;
    for (int i = 5; i < LIM && j < 20; i++)
        if (i % 5 == 0 || i % 7 == 0) {
            arr[j++] = i;
            printf("%d ", arr[j - 1]);
        }
 
    putchar('\n');
    return 0;
}

Не по теме:

Спасибо, _Ivana

0
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
09.11.2014, 18:54 10
Зачем LIM? Вы сомневаетесь, что в диапазоне интов мы найдем 20 натуральных чисел, кратных 5 или 7?
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
09.11.2014, 18:58 11
Цитата Сообщение от _Ivana Посмотреть сообщение
Зачем LIM? Вы сомневаетесь, что в диапазоне интов мы найдем 20 натуральных чисел, кратных 5 или 7?
Я не знаю, как написать без LIM. Предложите свой вариант.
0
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
09.11.2014, 19:01 12
Dennis Ritchie, возможности программы ограничиваются. Тут же ясно даются на вход "20", так вот, когда найдется "20" - закрыть цикл.
Поначалу вы явно переоценили тз)
0
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
09.11.2014, 19:01 13
Например, так:
C++
1
2
3
4
5
6
7
8
9
10
11
int main()
{
    int arr[20], j = 0;
    for (int i = 5; j < 20; i++)
        if (i % 5 == 0 || i % 7 == 0) {
            arr[j++] = i;
            printf("%d ", arr[j - 1]);
        }
    putchar('\n');
    return 0;
}
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
09.11.2014, 19:20 14
Цитата Сообщение от _Ivana Посмотреть сообщение
Например, так:
Без вопросов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
#define LIM 20
 
int main()
{
    int arr[LIM];
 
    int j = 0;
    for (int i = 5; i < LIM && j < 20; i++)
        if (i % 5 == 0 || i % 7 == 0) {
            arr[j++] = i;
            printf("%d ", arr[j - 1]);
        }
 
    putchar('\n');
    return 0;
}
Просто я сначала придумал более плохое решение, а потом переделал его на однопроходной цикл. В итоге я забыл снизить LIM = 100 на LIM = 20.

Цитата Сообщение от ReinDeer Посмотреть сообщение
Поначалу вы явно переоценили тз)
Да, я просто не мог подумать, что оно такое простое, поэтому мысленно усложнил его.
0
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
09.11.2014, 19:23 15
Dennis Ritchie, несмотря на ваш ник, вы умудряетесь путаться в простейших вещах. Запустите ваш последний код с лимом, к которому вы прикипели душой и не можете отказаться - что он вам выдаст?
Я же вам привел код без этого ненужного лима.
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
09.11.2014, 19:50 16
Цитата Сообщение от _Ivana Посмотреть сообщение
Я же вам привел код без этого ненужного лима.
Не паникуйте: LIM - это очень важная штука (то бишь константа) :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
#define LIM 20
 
int main()
{
    int arr[LIM];
 
    int j = 0;
    for (int i = 5; j < LIM; i++)
        if (i % 5 == 0 || i % 7 == 0) {
            arr[j++] = i;
            printf("%d ", arr[j - 1]);
        }
 
    putchar('\n');
    return 0;
}
0
19 / 19 / 9
Регистрация: 15.09.2014
Сообщений: 127
09.11.2014, 19:51 17
Dennis Ritchie, у меня всегда так.
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
09.11.2014, 19:54 18
Цитата Сообщение от ReinDeer Посмотреть сообщение
Dennis Ritchie, у меня всегда так.
Это же C++, здесь никак нельзя иначе.
0
1 / 1 / 0
Регистрация: 24.09.2014
Сообщений: 33
10.11.2014, 19:46  [ТС] 19
а что означает arr[j-1] то,что в квадратных скобках?...
спасибо за программку
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
10.11.2014, 19:56 20
Цитата Сообщение от Maru11 Посмотреть сообщение
а что означает arr[j-1] то,что в квадратных скобках?...
В квадратных скобках находится индекс элемента массива, т. е. из переменной j вычитается единица. Число, получившееся в результате этого вычитания, и будет индексом элемента массива.
0
10.11.2014, 19:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2014, 19:56
Помогаю со студенческими работами здесь

Заполнить массив двадцатью первыми натуральными числами, делящимися нацело на 13 или на 17 и большими 300
а) двадцатью первыми натуральными числами, делящимися нацело на 13 или на 17 и большими 300; б)...

Заполнить массив двадцатью первыми натуральными числами
Заполнить массив двадцатью первыми натуральными числами, делящимися нацело 13 или на 17 и...

Заполнить массив двадцатью первыми натуральными числами, делящимися нацело на 13 и 17.
1 Заполнить массив двадцатью первыми натуральными числами, делящимися нацело на 13 и 17. 2 Имеется...

Создать массив и заполнить его двадцатью первыми целыми числами
Помогите создать консольное приложение. Создать массив и заполнить его 20-ю первыми целыми...


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

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