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

Отсортировать массив таким образом, чтобы все нули находились в начале, а единицы — в конце массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка, указывающая на неинициализированные переменные http://www.cyberforum.ru/cpp-beginners/thread1113466.html
#include <iostream> #include <Windows.h> using namespace std; int main() { setlocale(0, ""); int a; cout << "введите число 0 для умножения, 1 для деления, 2 для сложения, 3 для вычитания"; cin >> a; if (a = 0)
C++ Перевод строки в бинарный код Необходимо перевести строку типа string в бинарный код, соответствующий этой строке, включая пробелы и знаки препинания. Желательно в процедурном виде P.S. Можно ли это сделать по средствам bitset? http://www.cyberforum.ru/cpp-beginners/thread1113452.html
Перевести код с Паскаля на С++ (решение системы уравнений методом Зейделя) C++
uses crt; const a: array of real = (-5,2,1); b: array of real = (1,5,2); c: array of real = (1,-1,4); f: array of real = (-3,6,7); var i,k,m: integer; e: real; x1,x2,x3,max: array of real; b1,c1,f1: array of real;
Работа с модулями элементов массива C++
Здравствуйте, мне нужна ваша помошь, вот есть данная задача, но ее нужно сделать с помощью указателя, а как это сделать я не пойму( Поможете ? В одномерном массиве, состоящем из n действительных элементов, вычислить: • номер минимального по модулю элемента массива; • сумму модулей элементов массива, расположенных после первого отрицательного элемента. Сжимать массив, удалив из него...
C++ Имя запущенного файла http://www.cyberforum.ru/cpp-beginners/thread1113420.html
Вопрос: можно ли определить имя запущенного файла из этого же файла? То есть фай должен сам узнать своё же имя. Подскажите как это сделать средствами С++?
C++ Зависимости в решении Подскажите, пожалуйста, как убрать зависимости между проектами в решении. В свойствах решения, или проектов (Зависимости проектов), снять галку не получается, пишет:"Эта зависимость добавлена системой проектов и не может быть удалена". 10-я студия, Express. подробнее

Показать сообщение отдельно
Voland28RUS
3 / 3 / 0
Регистрация: 26.02.2014
Сообщений: 24

Отсортировать массив таким образом, чтобы все нули находились в начале, а единицы — в конце массива - C++

07.03.2014, 16:15. Просмотров 976. Ответов 21
Метки (Все метки)

Здравствуйте, дано такое задание Элементами массива IM(N) являются числа 0 и 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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// ConsoleApplication3.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "locale.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
const int MaxSize = 79; //Максимальная размерность массива
 
int input(void);
void fill(int*,int);
void show(int*,int);
void exchange(int*,int*);
 
int main(void){
    setlocale(LC_ALL, "Russian");
    int N;
    int* IM;    //Объявление указателя на массив
    printf("Элементами массива IM размерностью от 1 до %i значений являются числа 0 и 1."\
           "\nСортировка массива по возрастанию пузырьковым методом.\n\n",MaxSize);
    do {
        do {
            printf("\nВведите размерность массива: ");
            N=input();
            if (N<=MaxSize && N>0){
                IM=(int*)malloc(sizeof(int)*N); //Выделение памяти под массив
                fill(IM,N);
                show(IM,N);
                putchar('\n');
                for (int i=N-1;i>0;i--){    //Двойной обход массива с сортировкой
                    for (int j=0;j<i;j++) exchange(&IM[j],&IM[j+1]);
                    show(IM,N);     //Вывод промежуточного состояния массива
                    putchar('\n');}
                free (IM);
                break;
            } else printf("^Размерность массива - число 1-%i",MaxSize);
        } while (1);
        printf("\nНажмите любую клавишу чтобы продолжить, [N] чтобы выйти...");
    } while (_getch()!=0x6E);
}
 
int input(void){
    char str[256];
    scanf_s("%s",&str);
    return atoi(str);}
 
void fill(int* dst,int size){
    for (int i=0;i<size;i++){   //Заполнение всех элементов массива
        do{         //элементами 0 или 1 с клавиатуры
            printf("IM[%i]:",i);
            dst[i]=input();
        } while ((dst[i]!=0)&&(dst[i]!=1)); //Повтор ввода если введено неверно
    }
}
 
void show(int* IM,int size){
    for (int i=0;i<size;i++) printf("%i",IM[i]);}
 
void exchange(int* first,int* second){
    int temp;
    if (*second<*first){
        temp=*first;
        *first=*second;
        *second=temp;
    }
 
 
}
Программа запускается, но при вводе размерности массива выскакивает ошибка Необработанное исключение по адресу 0x778DF6A4 (msvcr110d.dll) в ConsoleApplication3.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00AA0000.
Подскажите пожалуйста где ошибка.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru