Работа с одномерными массивами

 
0
 
C++
ava
lightcigar | 30.03.2013, 14:28
Всем доброго времени суток! У меня  есть задача с одномерными массивами, с которой никак не могу разобраться! надеюсь вы сможете разобраться)

1. Постановка задачи
1.Сформировать массив из n элементов с помощью датчика случайных чисел (n задается пользователем с клавиатуры).
2.Распечатать полученный массив.
3.Выполнить удаление указанных элементов из массива.
4.Вывести полученный результат.
5.Выполнить добавление указанных элементов в массив.
6.Вывести полученный результат.
7.Выполнить перестановку элементов в массиве.
8.Вывести полученный результат.
9.Выполнить поиск указанных в массиве элементов и подсчитать количество сравнений, необходимых для поиска нужного элемента.
10.Вывести полученный результат.
11.Выполнить сортировку массива указанным методом.
12.Вывести полученный результат.
13.Выполнить поиск указанных элементов в отсортированном массиве и подсчитать количество сравнений, необходимых для поиска нужного элемента.
14.Вывести полученный результат.

2. Задание:
Удаление - Все четные элементы
Добавление - К элементов в начало массива
Перестановка - Четные элементы переставить в начало  массива, нечетные  - в конец
Поиск - Первый четный
Сортировка - Простой выбор


вот код программы: 

#include "stdafx.h"
#include "iostream"
#include "math.h"
#include "stdlib.h"
using namespace std;

int _tmain()
{
    system("chcp 1251> null");
    const int max=100;
    int i,n;
    int a[max];
    cout<<"Введите размер массива<"<<max<<":";
    cin>>n;
    cout<<"\n";
    //Удаление чётных элементов массива
    int newsize=0;
for(int i=0; i<n; i++) if(a[i]%2!=0) a[newsize++]=a[i];
for(int i=0; i<newsize; i++) cout << a[i] << " ";
    //добавление К элементов в начало массива
    int k;
    cout<<"\nВведите количество добавляемых элементов(K)<"<<max-n<<":";
    cin>>k;
    for (int i=n;i<n+k;++i) a[i]=rand()%100-50;
    n+=k;
    cout<<"\n";
    for (int i=0;i<n;i++) 
        cout<<a[i]<<" ";
    //Добавление K элементов в конец массива
    int k;
    cout<<"\nВведите количество добавляемых элементов(K)<"<<max-n<<":";
    cin>>k;
    for (int i=n;i<n+k;++i) a[i]=rand()%100-50;
    n+=k;
    cout<<"\n";
    for (int i=0;i<n;i++) 
        cout<<a[i]<<" ";
    //перестановка четные элементы переставить в начало  массива, нечетные  - в конец
    int i,c;

for(i=0;i<a[i];i++) scanf(" %d",&a[i]);

for(i=0;i<a[i];i++) {
  if(i % 2==0) {
     c=a[i];
     a[i]=a[i+1];
     a[i+1]=c;
  }
}

for(i=0;i<a[i];i++) printf("%d \n",a[i]);

}

    //Поиск первого отрицательного элемента
    int ok,otr,g;
    g=0;
    for (int i=0; i<n; i++){
        ++g;
        if(i % 2==0){
            otr=a[i]; ok=1; j=i; break;
        }
    }
    if (ok==1) cout<<"\notr="<<otr<<" результат ="<<g; 
    else cout<<"\nНету четных элементов";
    //Сортировка простой выбор
    for (int i=0; i<n-1; i++){
        min=a[i]; k=i;
        for(int j=i+1; j<n; j++){
            if (a[j]<min) {
                min=a[j];
                k=j;
            }
        }
        a[k]=a[i];
        a[i]=min;
    }
    cout<<"\n";
    for (int i=0;i<n;i++){
        cout<<a[i]<<" ";
    }
        g=0;
    for (int i=0; i<n; i++){
        ++g;
        if (a[i]<0){
            otr=a[i]; ok=1; j=i; break;
        }
    }
    if (ok==1) cout<<"\notr="<<otr<<" Количество сравнений равно="<<g;else cout<<"\nНету отрицательных элементов";
    cout<<"\n";
    system("pause");
}




Опытные программисты, где у меня имеются ошибки! Большое спасибо за помощь
Kommentare (3)
ava
Crafty | 30.03.2013, 14:13 #
Почему инклуды в кавычках? Заголовок стандартной библиотеки подключают так

#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <cstdlib>



Цитата (lightcigar @  30.3.2013,  13:28 findReferencedText)
где у меня имеются ошибки!

Напиши сам что не работает и что не получается, так быстрее помогут.
ava
fish9370 | 30.03.2013, 14:21 #
да тут все просто - халявщик, взял у кого-то не рабочий пример, выложил задание и ждет когда его решат..
ava
Afinogen | 30.03.2013, 14:34 #

if(i % 2==0)

первый раз вижу такой поиск отрицательного числа, и после ввода размера массива надо его заполнить

for (int i=0;i<n;++i) a[i]=rand()%100-50;
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden