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

Одномерные массивы (практика) - C++

Восстановить пароль Регистрация
 
t.kirill.90
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 3
03.04.2011, 13:22     Одномерные массивы (практика) #1
Уважаемые программисты, помогите пожалуйста решить задачи изложенные ниже с использованием библиотеки "math".
Задание:
В одномерном массиве, состоящем из n-целых элементов, вычислить:
1. Кол-во нечетных элементов, стоящих на нечетных местах в массиве;
2. Поменять местами первую и вторую половину массива(расположение элементов в каждой половине массива оставить в исходном порядке).
Заранее спасибо большое за помощь.

З.Ы.: В С++ Шарю очень плохо; если можно, напишите полностью программу от начала до конца.
З.З.Ы: Очень срочно!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2011, 13:22     Одномерные массивы (практика)
Посмотрите здесь:

одномерные массивы C++
Одномерные массивы C++
C++ Одномерные массивы
Практика\двумерные массивы C++
Одномерные массивы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
romanriddick
 Аватар для romanriddick
36 / 36 / 4
Регистрация: 06.07.2010
Сообщений: 154
03.04.2011, 13:33     Одномерные массивы (практика) #2
1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
#include "conio.h"
int main()
{
   int n,j;
   int *x;
   cout<<"n= ";
   cin >> n;
   j=0;
   x = new int [n];
        for (int i=1 ; i<=n;i++)
        {   cout<<"x"<<i<<"="<<endl;
                cin>>x[i];
                if ((i%2!=0) && (x[i]%2!=0))
                        j++;
 
      }
     cout<<j;
     getch();
    
}
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
03.04.2011, 14:25     Одномерные массивы (практика) #3
to romanriddick

1) если вы уж выделяете память под массив динамически, то необходимо ее очищать через delete [] x
2) индексация массивов начинается с 0 а не c 1

1.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int main()
{
    int arrSize, count = 0;
    cout << "Input size of array: ";
    cin >> arrSize;
    int * arr = new int [ arrSize ];
    for (int i = 0 ; i < arrSize; i++ ) {
        arr[ i ] = rand() % 10;
        cout << "arr[ " << i << " ] = " << arr[ i ] << endl;
        if ( ( i % 2 ) && ( arr[ i ] % 2 ) )
            count++;
    }
    cout << count << " elements of array is not even\n\n";
    delete [] arr;
    cin.ignore( 1 );
    cin.get();
}
romanriddick
 Аватар для romanriddick
36 / 36 / 4
Регистрация: 06.07.2010
Сообщений: 154
03.04.2011, 14:38     Одномерные массивы (практика) #4
Цитата Сообщение от vitaska Посмотреть сообщение
1) если вы уж выделяете память под массив динамически, то необходимо ее очищать через delete [] x
она сама очиститса при выходе (ето ведь не длинная прога где нужно смотреть за памяттю)...
но спасибо , забыл


Цитата Сообщение от vitaska Посмотреть сообщение
2) индексация массивов начинается с 0 а не c 1
знаю...а 0 -- ето четный индекс или нет ???))))))))



у вас выделяетса н+1 памяти , а нужно то н... индексацию всеже с еденички нужно делать
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
03.04.2011, 14:40     Одномерные массивы (практика) #5
Цитата Сообщение от romanriddick Посмотреть сообщение
она сама очиститса при выходе
Ошибаетесь, в С++ нет автоматического зборщика мусора.
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
03.04.2011, 14:50     Одномерные массивы (практика) #6
2.
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand( ( unsigned ) time ( NULL ) );
    int arrSize, count = 0, tmp;
    cout << "Input size of array: ";
    cin >> arrSize;
    int * arr = new int [ arrSize ];
    for (int i = 0 ; i < arrSize; i++ ) {
        arr[ i ] = rand() % 10;
        cout << "arr[ " << i << " ] = " << arr[ i ] << endl;
    }
 
    int middle = arrSize / 2;
 
    if ( arrSize % 2 ) {
        for ( int i = 0; i < middle; i++ ) {
            tmp = arr[ i ];
            arr[ i ] = arr[ middle + i + 1 ];
            arr[ middle + i + 1 ] = tmp;        
        }
    } 
    else {
        for ( int i = 0; i < middle; i++ ) {
            tmp = arr[ i ];
            arr[ i ] = arr[ middle + i ];
            arr[ middle + i ] = tmp;        
        }       
    }
    cout << "Array: ";
    for (int i = 0 ; i < arrSize; i++ ) {
        cout << arr[ i ] << " ";
    }
    cout << endl << endl;
    delete [] arr;
    cin.ignore( 1 );
    cin.get();
}
Добавлено через 5 минут
Цитата Сообщение от romanriddick Посмотреть сообщение
у вас выделяетса н+1 памяти , а нужно то н...
с чего вы взяли что n+1, памяти выделяется ровно под n элементов, поскольку индексация массива начинается с 0 и заканчивается arrSize-1, то есть последний элемент массива имеет индекс [arrSize-1].
Советую вам еще раз освежить знания по массивам.
romanriddick
 Аватар для romanriddick
36 / 36 / 4
Регистрация: 06.07.2010
Сообщений: 154
03.04.2011, 14:58     Одномерные массивы (практика) #7
Цитата Сообщение от vitaska Посмотреть сообщение
i < arrSize
да , ладно вы победили)))) знак недосмотрел ... думал <= поставили

но всеже так и не услышал 0 ето четное или нет ???))))
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
03.04.2011, 15:04     Одномерные массивы (практика) #8
Цитата Сообщение от romanriddick Посмотреть сообщение
но всеже так и не услышал 0 ето четное или нет ???))))
http://ru.wikipedia.org/wiki/%D0%A7%...81%D0%BB%D0%B0
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
03.04.2011, 15:25     Одномерные массивы (практика) #9
Цитата Сообщение от romanriddick Посмотреть сообщение
но всеже так и не услышал 0 ето четное или нет ???))))
если плясать от "человеческого счета" то в первом задании строку 16 просто заменить с
C++
1
if ( ( i % 2 ) && ( arr[ i ] % 2 ) )
на
C++
1
if ( !( i % 2 ) && ( arr[ i ] % 2 ) )
и все.
Я просто ошибся и четность проверял индексов массива, а нужно так как представляет человек.

А вообще 0 это четное число!
romanriddick
 Аватар для romanriddick
36 / 36 / 4
Регистрация: 06.07.2010
Сообщений: 154
03.04.2011, 15:29     Одномерные массивы (практика) #10
Цитата Сообщение от vitaska Посмотреть сообщение
а вообще 0 это четное число!
да , спасибо ... извиняюсь , забыл ...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2011, 20:44     Одномерные массивы (практика)
Еще ссылки по теме:

C++ Одномерные массивы
C++ С++ одномерные массивы

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

Или воспользуйтесь поиском по форуму:
t.kirill.90
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 3
03.04.2011, 20:44  [ТС]     Одномерные массивы (практика) #11
Спасибо большое всем Мастерам кто откликнулся на просьбу о помощи!
Yandex
Объявления
03.04.2011, 20:44     Одномерные массивы (практика)
Ответ Создать тему
Опции темы

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