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

Поразрядная сортировка массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа про Stack http://www.cyberforum.ru/cpp-beginners/thread803178.html
Помогите пожалуйста, решить программу про Stack. The input file should be HomeworkSixInput.txt, provided by the assignment. This file has one postfix notation expression per line. (You can test...
C++ Что-то не могу въехать в задание Написать функцию которая получает в качестве аргумента указатели к двум переменным типа int, которая изменяет значение указанных переменных, только тогда, когда указанная через второй аргумент... http://www.cyberforum.ru/cpp-beginners/thread803148.html
C++ обработка файлов
товарищи подскажите что не так??? заранее благодарен!!! суть задачи следующая: "Найти максимальный из отрицательных элементов в файле целых чисел." То есть в той же папке что и программа я создаю...
C++ Рекурсивные функции. В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму отрицательных элементов. Упорядочить элементы
2) 2. В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму отрицательных элементов. Упорядочить элементы массива по возрастанию.
C++ Разработайте класс MONEY http://www.cyberforum.ru/cpp-beginners/thread803139.html
Задание 1: Разработка класса. Разработайте класс MONEY. Элемент класса: рубли; копейки. Методы: конструктор без параметров ( по умолчанию); конструктор с параметрами; ...
C++ Перезагрузка функций 1 С помощью механизма перегрузки функций реализовать функции для нахождения суммы: 1) 2-х чисел; 2) 2-х строк; 3) строки и числа; 4) числа и строки. подробнее

Показать сообщение отдельно
TonyPride
2 / 2 / 1
Регистрация: 22.10.2012
Сообщений: 47
11.03.2013, 13:44  [ТС]
Почти доделал программу, похоже что ошибка в цикле for с переменной i, но никак не могу понять где. Ввожу 1111, 1001, 1000, 1101 - всё верно. Ввожу 1001, 1111, 1000, 1101 либо 1101, 1111, 1000, 1011 - второй элемент (точнее i=1) не просматривается в цикле и он остаётся как есть. Ввёл несколько проверок с printf, но всё равно не могу никак понять, где я ошибку допустил. Подскажите, пожалуйста, что не так?
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
75
76
77
78
79
80
81
82
83
84
85
86
#include <cstdlib>
#include <stdio.h>
#include <math.h>
#define L 16 
 
int binary (int n)
{
    int a=n;
    while (a>0)
    {
          if (a%10>1) return 0;
          a=a/10;
    } 
    return 1;
}
 
 
void binsort (int A[], int N, int bit, int c1, int c2) 
{                                                                  
     if (bit<0) return;                                
     int i=0, j=0, a=0, b=0, count=0;
     printf ("bit = %d\n", bit);
     for (i=c1; i<(c2+c1)/2; i++)                      
     {
         b=A[i]/pow(10,bit);                           
         if(b%10==1)
         {
                    a=A[i];
                    for (j=c2-1; j>=(c2+c1)/2; j--)   
                    {
                        b=A[j]/pow(10,bit);
                        if (b%10==0 && A[i]/pow(10,bit+1)>=A[j]/pow(10,bit+1)) {count++; A[i]=A[j]; A[j]=a; printf ("CHANGE %d and %d\n", i, j);} 
                    }
         }
     }
     if (count>0)                                                
     {
                 binsort (A, N, bit-1, c1, c1+count+1);           
                 binsort (A, N, bit-1, c1+count+1, c2);           
     }                                                            
     else {printf ("NEXT\n"); binsort (A, N, bit-1, c1, c2);}                       
}
 
int main()
{
    int A[L], N=0, i=0;
    while(1)
    {
    printf ("Print N (2-%d)\n", L);
    scanf ("%d", &N);
    if (N>1 && N<L)
    {
         break;
    }
    else
    {
        printf ("Incorrect value\n");
    }
    }
    int bit=0; // êîëè÷åñòâî öèôð Гў ÷èñëå
    while (1)
    {
          printf ("Enter max bit < 5\n");
          scanf ("%d", &bit);
          if (bit<5) break;
          else printf ("Incorrect value\n");
    }
    for (int i=0; i<N; i++)
    {
        while(1)
        {
                printf ("\nEnter %d element\n", i+1);
                scanf ("%d", &A[i]);
                if (binary(A[i])==1 && A[i]<pow(10,bit)) break;
                else printf ("Incorrect element\n");
        }
    }
    binsort (A, N, bit-1, 0, N);                                 
    printf ("Result\n");
    for (i=0; i<N; i++)
    {
        printf ("%d\n", A[i]);
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru