Как найти номера нечетных элементов массива

Tifani

5 / 5 / 0

Регистрация: 23.10.2012

Сообщений: 21

1

Найти номера нечетных элементов одномерного массива, подсчитать количество нечетных элементов

11.11.2012, 20:22. Показов 7488. Ответов 10

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Задача вроде пустяковая, но как-то не сходится.

Pascal
1
2
3
4
5
6
7
if a[i] mod 2=0 then write(i);
for i:=1 to 5 do
Begin
If (min>mas[i]) then
Begin
min:=mas[i];
end;

Вроде так должно быть? Но как это правильно оформить? У меня с этим беда =(



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

11.11.2012, 20:22

10

pryda

Неадекват и грубиян

310 / 297 / 301

Регистрация: 22.02.2010

Сообщений: 645

11.11.2012, 20:48

2

Pascal
1
2
3
4
5
6
7
8
k:=0;
for i:=1 to 5 do
if odd(a[i]) then
begin
  writeln('Номер нечетного элемента: ',i);
  inc(k);
end;
writeln('Кол-во нечетных элементов: ',k);



0



brunis

100 / 97 / 61

Регистрация: 08.08.2012

Сообщений: 163

11.11.2012, 20:50

3

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var a:array[1..20] of integer;
    i,c:integer;
begin
  for i:=1 to 20 do Begin
    a[i]:=Random(20)-10;
    write(a[i],' ');
  End;
  for i:=1 to 20 do
    if a[i] mod 2 <> 0 then Begin  //проверка на нечётность
      write(i,' ');  //выводим номер елемента
      inc(c);  // увеличиваем их количество
    End;
    writeln(c); //выводим количество
    readln;
end.



0



5 / 5 / 0

Регистрация: 23.10.2012

Сообщений: 21

11.11.2012, 20:57

 [ТС]

4

brunis
Паскаль выдает ошибку, арифметическое переполнение. Что означает inc? Мы этого не проходили =(



0



PotatoLove

5 / 8 / 11

Регистрация: 06.11.2012

Сообщений: 36

11.11.2012, 20:57

5

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var a:array [1..20] of integer;
    n,i,t:integer;
begin
  writeln('Введите размерность массива');
  readln(n);
  Randomize;
  for i:=1 To n do a[i]:=Random(20);
  T:=0;
  for i:=1 to n do
  if not(a[i] mod 2 = 0) then
    begin 
      writeln('Нечетный элемент под номером ',i); 
      t:=t+1;
    end;
writeln('В массиве ',t,' нечетных элементов');
end.

поскольку данных мало, допридумывал сам



0



privit_91

13 / 13 / 0

Регистрация: 06.11.2012

Сообщений: 79

11.11.2012, 20:58

6

Вроде так, программа считает сумму нечетных элементов и выводит номера нечетных элементов.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
program primer;
var
i,n,s: integer;
mas: array [1..15] of integer;
     begin
     writeln('Введите число элементов');
     readln(n);
               for i:=1 to n do
               readln(mas[i]);
                              for i:=1 to n do
                              begin
                                   if i mod 2=1 then
                                   begin
                                   writeln('Элемент под номером =',i);
                                   s:=s+mas[i];
                                   end;
                              end;
               writeln('Summa=',s)
    end.



0



5 / 8 / 11

Регистрация: 06.11.2012

Сообщений: 36

11.11.2012, 21:00

7

Цитата
Сообщение от Tifani
Посмотреть сообщение

Что означает inc?

увеличение переменной на 1



0



Paster Fob

296 / 274 / 194

Регистрация: 03.05.2012

Сообщений: 570

11.11.2012, 21:02

8

как много советчиков.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var a:array [1..10] of integer;
    i,j:byte;
begin
  randomize;
  for i:=1 to 10 do begin
    a[i]:=random(30);
    write(a[i],' ');
  end;
  writeln;
  writeln('номера нечётных элементов');
  j:=0;
  for i:=1 to 10 do
    if a[i] mod 2<>0 then begin
      write(i,' ');
      inc(j);
    end;
  writeln;
  writeln('кол-во нечётных элементов');
  writeln(j);
  readln
end.

Цитата
Сообщение от Tifani
Посмотреть сообщение

Что означает inc? Мы этого не проходили =(

inc(j); то же что и j:=j+1;



1



5 / 5 / 0

Регистрация: 23.10.2012

Сообщений: 21

11.11.2012, 21:08

 [ТС]

9

Paster Fob
Огромное спасибо за разъяснение, остальным тоже =)
Буду благодарна, если объясните, что такое byte.



0



296 / 274 / 194

Регистрация: 03.05.2012

Сообщений: 570

11.11.2012, 21:23

10

byte это целочисленный тип данных диапозон чисел в нём от 0 до 255.



1



Неадекват и грубиян

310 / 297 / 301

Регистрация: 22.02.2010

Сообщений: 645

11.11.2012, 21:24

11

PotatoLove, при запросе размерности я хочу ввести 25…



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 =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;
}

Что тут не верно?Помогите исправить пожалуйста.Не серчайте,я только учусь работать с массивами…Задача всё ещё не решена.

Найти в массиве нечётные числа

Уровень сложности:






  • Задание
  • Решение

Дан массив размера 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

Следующие статьи помогут вам в решении данной задачи:

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.

Помогите, пожалуйста написать программу! Дан массив целых чисел. Найти номера всех нечетных элементов. Если нечетных элем

Veronika Podkina



Знаток

(327),
на голосовании



10 лет назад

Дан массив целых чисел. Найти номера всех нечетных элементов. Если нечетных элементов нет в массиве, то должно быть напечатано соответствующее сообщение.

Голосование за лучший ответ

David

Гуру

(4330)


10 лет назад

Подсказки:

1) Нечетные это те которые делятся на 2 с остатком
2) Если это массив и нужно что-то отыскать – то речь идет об итерации над ним
Нужно просто начать итерацию и добавлять элементы исходя из условия задания

3) Если нечетных нет – значит имелось ввиду также хранить счетчик во время итерации. И в конце если счетчик равен 0, то значит нет элементов

Добавить комментарий