0 / 0 / 0 Регистрация: 17.11.2016 Сообщений: 18 |
|
1 |
|
Найти все элементы массива с нечетными порядковыми номера17.11.2016, 20:48. Показов 2049. Ответов 2
C++ Дан целочисленный массив A размера N (≤ 15). Переписать в новый целочисленный массив B все элементы с нечетными порядковыми номера-ми (1, 3, …) и вывести размер полученного массива B и его содержимое
0 |
Александр321321 55 / 18 / 19 Регистрация: 11.11.2014 Сообщений: 463 |
||||
18.11.2016, 07:03 |
2 |
|||
Решение
0 |
0 / 0 / 0 Регистрация: 17.11.2016 Сообщений: 18 |
|
19.11.2016, 10:59 [ТС] |
3 |
изменил : #include «windows.h» #include <iostream> #include «stdlib.h» #include «iomanip» #include <stdio.h> int A[15]; int B[15]; int main(int argc, char* argv[]) { printf(«A:= «); int i=0; do{ A[i] = i*2 +7; printf(«%i «, A[i]); i++; } while ( i < 15); printf(«n»); printf(«B:= «); for (int i = 0; i<15; i++){ if (i % 2 != 0){ B[i] = A[i]; printf(«%i «, B[i]); } } system(«pause»); return 0; }
0 |
nums = [1,2,3,4,5,6,7,8,9,10,11,12]
odds = [ n for n in nums if n%2 ]
print odds
Gives:
>>>
[1, 3, 5, 7, 9, 11]
This can be put into a function like so:
def getOdds(aList):
return [ n for n in aList if n%2 ]
Example usage:
myOdds = getOdds(nums)
print("{0} has {1} odd numbers which were {2}".format(nums,len(myOdds),myOdds))
print("The odd numbers sum to {0}".format(sum(myOdds)))
Produces:
>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] has 6 odd numbers which were [1, 3, 5, 7, 9, 11]
The odd numbers sum to 36
As to what you’re doing wrong, you’re iterating over an iterable containing the elements 0
to size
this won’t always be the value of num
(unless num
is indeed range(size)
). Once you make i
represent a value in num
which you’re iterating over, if i%2 == 0
will mean it’s even, if you want odds, the number musn’t be divisible by two. Hence this should be changed to either if i%2 != 0
or if i%2
. You will also have to declare the odd
list before the for i ...
loop, so you can append the numbers in num
which meet the condition in the if i%2
selection control structure. You should appened the number in num
by doing odd.append(i)
, at the moment you’re reassigning odd a new value. You also should not be incrementing i
. ‘i’ should represent a number in num
not the index of the number in num
.
Найти в массиве нечётные числа
Уровень сложности:
- Задание
- Решение
Дан массив размера n
, заполнить его случайными числами, Найти все нечётные числа массива.
Читаем у нас на сайте — Как работать с массивами. После создания массива, его необходимо заполнить случайными числами, а для этого нужно воспользоваться генератором случайных чисел. Пример работы программы смотрим ниже:
// array_even_numbers.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> #include <ctime> using namespace std; int main(int argc, char* argv[]) { srand(time(0)); // генерация случайных чисел cout << "Enter size array: "; int array_size; cin >> array_size; int *ptrarray = new int [array_size]; // создание динамического массива for (int count = 0; count < array_size; count++) ptrarray[count] = (rand() % 99 + 1); //заполнение массива случайными числами с масштабированием от 1 до 99 cout << "array = "; for (int count = 0; count < array_size; count++) cout << ptrarray[count] << " "; // печать первоначального массива cout << "nRezult = "; for (int count = 0; count < array_size; count++) if ((ptrarray[count] % 2) != 0) // отсеиваем чётные числа cout << ptrarray[count] << " "; // печать нечётных значений элементов массива delete [] ptrarray; // высвобождение памяти cout << endl; system("pause"); return 0; }
Создаётся динамический массив, который заполняется случайными числами в диапазоне [1;99] и выполняется поиск нечётных чисел. Вот результат:
CppStudio.com
Enter size array: 20
array = 60 78 78 77 75 94 49 7 8 81 35 94 8 38 29 31 76 42 12 67
Rezult = 77 75 49 7 81 35 29 31 67
Следующие статьи помогут вам в решении данной задачи:
Оставить комментарий
Вы должны войти, чтобы оставить комментарий.
Дан массив A размера N. Вывести вначале его элементы с четными номерами (в порядке возрастания номеров), а затем — элементы с нечетными номерами (также в порядке возрастания номеров): A2,A4,A6,. . ., A1,A3,A5, . . . . Условный оператор не использовать.
Решение задачи
Решение задачи довольно простое. Мы будем использовать два цикла для прохода по массиву. В первом цикле мы будем выводить на экран элементы массива с чётными номерами, во втором цикле – с нечётными номерами.
Важно помнить, что индексация в массивах происходит с нуля. То есть первый элемент А1 будет иметь индекс 0, а элемент А2 – индекс 1.
Сначала объявим переменную, которую будем использовать в циклах:
int i = 1;
Сначала будем обращаться к элементам с чётными номерами в порядке возрастания и выводить их на экран:
while (i <= elements.length - 1) { System.out.print(elements[i] + " "); i = i + 2; }
Затем начнём выводить на экран нечётные элементы:
i = 0; while (i <= elements.length - 1) { System.out.print(elements[i] + " "); i = i + 2; }
Полный исходный код программы
import java.util.Arrays; public class ArrayPrintEvenOddElements { public static void main(String[] args) { printArray(new Integer[]{1, 2, 3, 4, 5, 6, 7}); printArray(new Integer[]{1, 2, 3, 4, 5, 6}); printArray(new Integer[]{1}); } public static void printArray(Object[] elements) { if (elements == null || elements.length == 0) { return; } System.out.print(Arrays.toString(elements) + ": "); int i = 1; while (i <= elements.length - 1) { System.out.print(elements[i] + " "); i = i + 2; } System.out.print(", "); i = 0; while (i <= elements.length - 1) { System.out.print(elements[i] + " "); i = i + 2; } System.out.println(); } }
Пусть дано:Вывести номера всех минимальных нечетных элементов. Нумерация
начинается с нуля. Если таких элементов нет, то вывести сообщение об
этом.n =8 Массив =0, 5, 9, 1, 2, 7, 1, 3 Результат = 3 6
n =8 Массив= 2, 6, 10, 6, 8, 8, 8, 2 Результат = нечетных элементов нет
Вот мой вариант:
//вывести номера всех минимальных нечётных элементов массива
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Rus");
int n;
cout << "Введите размерность массива - ";
cin >> n;
int* a = new int[n];
for (int i = 0; i < n; i++)
{
cout << "a[" << i << "]= ";
cin >> a[i];
}
int min = a[0];
for (int i = 0; i < n; i++)
{
if (a[i] % 2 != 0)
{
if (a[i] < min) min = a[i];
}
else if (a[i] == min)
cout << "Номера всех минимальных нечётных элементов равна " << n;
cout << endl;
}
if (min % 2 == 0)
cout << "не чётных элементов нет/n" << endl;
cout << min << endl;
delete []a;
return 0;
}
Что тут не верно?Помогите исправить пожалуйста.Не серчайте,я только учусь работать с массивами…Задача всё ещё не решена.