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

Сортировка массива за один проход - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Лексический анализатор http://www.cyberforum.ru/cpp-beginners/thread193433.html
Получил задание. Ранее с++ не изучал. Если найдутся добрые люди, которые могут помочь, отзовитесь, пожалуйста. Разработать лексический анализатор, который реализует конечный автомат для поиска во входном потоке бинарных векторов с четным числом единиц и нечетным числом нулей
C++ В массиве все элементы, стоящие после максимального, уменьшить на 1 В задаче требуется написать, отладить и протестировать программу, обеспечивающую выполнение следующих действий 1. Ввод одномерного массива 2 Вывод исходного массива 3. Обработка массива в соотвествии с заданием Выод параметров массива, которые требуется найти по заданию 5. Вывод массива после внесенных изменений В программе требуется обязательно использовать функции. Использование... http://www.cyberforum.ru/cpp-beginners/thread193431.html
C++ Поразрядные операции
Найти Поразрядные операции, в результате которой из чисел N1(ABCD) и N2(EFGH)получается минимальное число. Подсчитать число единиц в левом байте этого числа. #include <stdio.h> #include <conio.h> col_ed () { int k=0,i,MIN; for (i=0;i<16;i++) if ((MIN>>i)&&(0x1)) k++; return k; } MIN_numbe ()
C++ Сформировать массив
Помогите написать программу..) Сформировать массив данных с помощью структуры. Предметная область – данные меню столовой (номер по порядку, блюдо, цена, вес порции). Отсортировать полученный список по полю «цена». Вывод результатов оформить в виде таблицы. Добавлено через 13 часов 32 минуты Спасибо.
C++ c++ http://www.cyberforum.ru/cpp-beginners/thread193403.html
помогите написать программу В файле хранятся названия фильмов. Каждая строка отдельное название. Написать программу, которая читает строки из файла в массив строк, и выводит на экран названия фильмов, отсортировав их а) по убыванию количества слов в названии, б) по возрастанию количества строк в названии, в) в алфавитном порядке.
C++ Перечесление из массивов. Всем доброе время суток. Вот не могу не как докумекать над таким действием. Имеется два двух мерных массива содержащие по три целых числа напимер 3,2,9 и 5,6,7 нужно с помощью операторов цикла for,while,switch перемножить каждое из трёх чисел по очереди то есть 3х5 3х6 3х7 подробнее

Показать сообщение отдельно
isgat
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 17
20.11.2010, 21:59  [ТС]     Сортировка массива за один проход
Всем спасибо, программу сдал, в итоге все что вы написали я не использовал, точнее похожее есть, но написал раньше чем вы опубликовали. (Кстати нужно было на Си, но не принципиально)
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
70
71
72
73
74
//Программа генерирует массив случайного размера из диапазона [40,80], и заполняет числами из диапазона [-5,8],
//при этом положительные расположены в правой части массива, отрицательные слева.
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
//Главная функция
int main(){ 
    srand ((unsigned)time(NULL));
    int *a,  //Динамический массив
        k,   //Индекс элемента с которого должны стоять нули 
        size,//Размер массива
        j,i, // Счетчики
        tmp, //Временная переменная для сортировки
        n=0; //Кол-во положительных элементов
 
printf("Programma generiryet massiv sluchainogo razmera [40,80],\ni zapolnyaet chislami [-5,8].\n\n\n");
 
//Генерация размера массива
    size= 40 + rand() % 40;
    a=(int*)malloc(size*sizeof(int));
 
//Заполнение массива случайными числами
    printf ("Ishodnyi massiv");
 
    for (i=0; i < size; i++){
        a[i]= -5 + rand() % 13;
        printf ("\nA[%d] =\t %2.1d", i, a[i]);
        if (a[i]>0) n+=1;
    }
 
//Сортировка массива
    i=0;
    j=size-1;
    k=n;
    while (i!=n) { 
           if (a[i]==0) 
                { 
                a[i]=a[k];
                a[k]=0;
                k+=1;
                }
           if (a[i] < 0) {
                if (a[j]==0) 
                { 
                    a[j]=a[k];
                    a[k]=0;
                    k+=1;
                }
                if (a[j]>0) 
                {
                    tmp=a[i];
                    a[i]=a[j];
                    a[j]=tmp;
                    j-=1;
                    i+=1;
                }
                if (a[j]<0) j-=1;
           }
           if (a[i]>0) i+=1;
 
    }
 
printf ("\n\n______________________\n");
 
//Вывод отсортированного массива
        printf ("Otsortirovannyi massiv\n");
        for (i=0; i < size; i++){
            printf ("\nA[%d] =\t %2.1d", i, a[i]);
        }
printf ("\n\n\n");
    return 0;
}
 
Текущее время: 21:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru