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

Массив целых чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
30.11.2011, 12:27     Массив целых чисел #1
Имеется массив целых чисел a[1]...a[n], причём все числа неотрицательны и не превосходят m . Отсортировать этот массив; Число действий порядка m+n.
Вот мне помогли, но препод забраковал эту прогу.
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
#include <ctime>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
        long i,j,k,m,n,buf;
        long * a;//Указатель на элементы последовательности
        do
        {
                cout<<"Введи число элементов : ";cin>>n;//Ввели число элементов
                cout<<"Введите предел последовательности : ";cin>>m;//Ввели предел последовательности
                a = new long[n];//Память под элементы последовательности
                cout<<"\tInput sequence\n";
                srand(time(0));//Чтобы случайные элементы не повторялись
                //Генерируем последовательность случайных чисел
                for(i = 0; i < n; i++)
                {
                        a[i] = rand() % m;
                        cout<<"a["<<i + 1<<"] = "<<a[i]<<"\n";
                }
                cout<<"\tSorted sequence\n";
                //Cортируем методом прямого выбора
                for(i = 0, k = 0; i < n; i++)
                {
                        for(j = i + 1; j < n; j++)
                        {
                                if(a[j] < a[i])
                                {
                                        buf = a[i];
                                        a[i] = a[j];
                                        a[j] = buf;
                                        k++;//Счётчик операций
                                }
                        }
                        cout<<"a["<<i + 1<<"] = "<<a[i]<<"\n";
                }
                cout<<"Кол-во операций : "<<k<<"\n";
                cout<<"Сумма m + n   : "<<m + n<<"\n";
                delete [] a;//Чистим память
                cout<<"Введите 1 для продолжения \n";
                cin>>n;
        }
        while(n == 1);
    
    return 0;
}
Преподу нужно, чтобы если например пользователь вводит числа (в массив например размерности 10) например 1 4 7 9. Чтобы потом на экране вывело массив:
1
-1
-1
4
-1
-1
7
-1
9
Т.Е. Чтобы те числа которых в массиве нет, заменялись на -1.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2011, 12:27     Массив целых чисел
Посмотрите здесь:

C++ Сформировать одномерный массив целых чисел, используя датчик случайных чисел
Дан двумерный массив целых чисел, найти количество чисел, кратных N C++
C++ 2)Дан массив из N целых чисел. Получить из него массив отрицательных чисел и отсортировать его по возрастанию методом выбора
C++ 2)Дан массив из N целых чисел. Получить из него массив отрицательных чисел и отсортировать его по возрастанию методом выбора
Преобразовать одномерный массив вещественных случайных чисел в массив целых чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rexer
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
30.11.2011, 12:59     Массив целых чисел #2
ну условие в выводе напишите когда вывод на экран делаете
C++
1
2
3
for(i = 0; i < 19;i++)
if(a[i] != i)
cout << -1;
Так вам надо?или я не прав?
DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
30.11.2011, 13:01  [ТС]     Массив целых чисел #3
Мне нужно чтобы человек сам вводил числа в массив и выводилось как я описал выше.
SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
30.11.2011, 13:05     Массив целых чисел #4
Цитата Сообщение от DebieCooepr Посмотреть сообщение
Мне нужно чтобы человек сам вводил числа в массив и выводилось как я описал выше.
Тогда вместо
C++
1
2
3
4
5
for(i = 0; i < n; i++)
                {
                        a[i] = rand() % m;
                        cout<<"a["<<i + 1<<"] = "<<a[i]<<"\n";
                }
Просто напишите
C++
1
2
3
4
5
for(i = 0; i < n; i++)
{        
cout<<"a["<<i + 1<<"]=";
cin>>a[i];
}
И добавьте библиотеки #include <locale> и #include <iostream>
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.11.2011, 13:10     Массив целых чисел #5
Цитата Сообщение от DebieCooepr Посмотреть сообщение
Имеется массив целых чисел a[1]...a[n], причём все числа неотрицательны и не превосходят m . Отсортировать этот массив; Число действий порядка m+n.
Вот мне помогли, но препод забраковал эту прогу.
Еще бы Вашему преподавателю нужен алгоритм сложности O(m+n), а вы ему подсунули алгоритм сложности O(n^2) с сортировкой пузырьком, а требовалось организовать сортировку подсчетом.

Добавлено через 45 секунд
Цитата Сообщение от DebieCooepr Посмотреть сообщение
Мне нужно чтобы человек сам вводил числа в массив и выводилось как я описал выше.
Лучше на сортировку упор сделайте
DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
30.11.2011, 13:20  [ТС]     Массив целых чисел #6
Цитата Сообщение от SleepMaster Посмотреть сообщение
Тогда вместо
C++
1
2
3
4
5
for(i = 0; i < n; i++)
                {
                        a[i] = rand() % m;
                        cout<<"a["<<i + 1<<"] = "<<a[i]<<"\n";
                }
Просто напишите
C++
1
2
3
4
5
for(i = 0; i < n; i++)
{        
cout<<"a["<<i + 1<<"]=";
cin>>a[i];
}
И добавьте библиотеки #include <locale> и #include <iostream>
После того как заменил, вот что выскакивает:
1>z:\petrushkdv\массив целых чисел1\массив целых чисел1\массив.cpp(16) : warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
1>z:\petrushkdv\массив целых чисел1\массив целых чисел1\массив.cpp(49) : fatal error C1075: end of file found before the left brace '{' at 'z:\petrushkdv\массив целых чисел1\массив целых чисел1\массив.cpp(6)' was matched

Добавлено через 2 минуты
Этот код не я писал) Сам я без понятия как делать это задание). У нас препод любит на наш НИЗКИЙ уровень знания С++, давать жуткие задания, а потом когда сделаеш - всегда до чего-нибудь докапается)
SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
30.11.2011, 13:21     Массив целых чисел #7
Всю программу покажите, у вас вероятно где-то пропущена закрывающая фигурная скобка.
-=ЮрА=-
Заблокирован
Автор FAQ
30.11.2011, 13:29     Массив целых чисел #8
Цитата Сообщение от DebieCooepr Посмотреть сообщение
Мне нужно чтобы человек сам вводил числа в массив и выводилось как я описал выше.
- узнаю свой кодХорошо сейчас замену вам рандомный инит элементов на ввод с клавиатуры

Цитата Сообщение от DebieCooepr Посмотреть сообщение
//Генерируем последовательность случайных чисел
* * * * * * * * for(i = 0; i < n; i++)
* * * * * * * * {
* * * * * * * * * * * * a[i] = rand() % m;
* * * * * * * * * * * * cout<<"a["<<i + 1<<"] = "<<a[i]<<"\n";
* * * * * * * * }
-=ЮрА=-
Заблокирован
Автор FAQ
30.11.2011, 13:39     Массив целых чисел #9
Вот код, помним что предел последовательности нужно уже не вводить а определять его при вводе, программа сама его посчитает. Иначе ввод вручную уже с известным максимумом просто бессмыслен скажем вбили макс 5 а ввести хотим 11. Ввод максимума вначале имел смысл лишь при рандомной генерации чисел
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
#include <iostream>
using namespace std;
 
int main()
{
    system("chcp 1251");
        //setlocale(LC_ALL, "rus")
        long i,j,k,m,n,buf;
        long * a;//ÓêГ*Г§Г*òåëü Г*Г* ýëåìåГ*ГІГ» ïîñëåäîâГ*òåëüГ*îñòè
        do
        {
                cout<<"Ââåäè ÷èñëî ýëåìåГ*òîâ : ";cin>>n;//Ââåëè ÷èñëî ýëåìåГ*òîâ
                a = new long[n];//ГЏГ*ìÿòü ïîä ýëåìåГ*ГІГ» ïîñëåäîâГ*òåëüГ*îñòè
                cout<<"\tÂâåäèòå ïîñëåäîâГ*òåëüГ*îñòü\n";
                cout<<"a["<<1<<"] = ";
                cin>>a[0];m = a[0];
                //Ââîäèì ïîñëåäîâГ*òåëüГ*îñòü
                for(i = 1; i < n; i++)
                {
                    cout<<"a["<<i + 1<<"] = ";
                    cin>>a[i];
                    if(m < a[i])
                        m = a[i];
                }
                cout<<"Ïðåäåë ïîñëåäîâГ*òåëüГ*îñòè : "<<m<<endl;
                cout<<"\tÎòñîðòèðîâГ*Г*Г*Г*Гї ïîñëåäîâГ*òåëüГ*îñòü\n";
                //Cîðòèðóåì ìåòîäîì ïðÿìîãî âûáîðГ*
                for(i = 0, k = 0; i < n; i++)
                {
                        for(j = i + 1; j < n; j++)
                        {
                                if(a[j] < a[i])
                                {
                                        buf = a[i];
                                        a[i] = a[j];
                                        a[j] = buf;
                                        k++;//Ñ÷¸ò÷èê îïåðГ*öèé
                                }
                        }
                        cout<<"a["<<i + 1<<"] = "<<a[i]<<"\n";
                }
                cout<<"Êîë-ГўГ® îïåðГ*öèé : "<<k<<"\n";
                cout<<"ÑóììГ* m + n   : "<<m + n<<"\n";
                delete [] a;//Г—ГЁГ±ГІГЁГ¬ ГЇГ*ìÿòü
                cout<<"Ââåäèòå 1 äëÿ ïðîäîëæåГ*ГЁГї \n";
                cin>>n;
        }
        while(n == 1);
    return 0;
}
Миниатюры
Массив целых чисел  
-=ЮрА=-
Заблокирован
Автор FAQ
30.11.2011, 13:44     Массив целых чисел #10
Я позволил себе руссифицировать не через локаль
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
setlocale(LC_ALL, "rus")
а через смену кодировки посредством system - chcp
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
system("chcp 1251");

Не по теме:

(сейчас пишу на работе здесь VC98 и никакие локали не работают, для поздних версий можно свободно юзать setlocale(LC_ALL, "rus"))



Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от SleepMaster Посмотреть сообщение
И добавьте библиотеки #include <locale> и #include <iostream>
- учень уместное замечание и суть замены ранда на ручной ввод также правильна

SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
30.11.2011, 13:58     Массив целых чисел #11
DebieCooepr, Нет, я понять не могу, вот препод хочет чтобы
на экране вывело массив:
1
-1
-1
4
-1
-1
7
-1
9
Т.Е. Чтобы те числа которых в массиве нет, заменялись на -1.
Значит, я так понял, тебе нужно выделить память под массив, не превышающий m елементов. Например 10. Пусть u - рандомное число, a - наш основной массив. Дальше у тебя будет спрашивать: введите кол-во элементов массива a, которые вы хотите ввести, пусть h. Потом спросит, введите сам размер массива, Пусть r. А потом цикл примерно такой cin>>a[u%h] при условии что не может быть два одинавых u%h, это надо предусмотреть. Потом сортирует и выводит на экран, используя только те элементы, которые использовались для присвоения значения. Выводим экран элементы массива от a[0] до a[m-1], если значение есть - выводим его. Для всех остальных выводим -1. Я правильно всё понял?

Добавлено через 1 минуту
-=ЮрА=-, Красавчик, я ещё задания не понял, а ты уже настрочил
Thinker
30.11.2011, 16:06
  #12

Не по теме:

DebieCooepr, надеюсь про сортировку подсчетом не забыли, а то преподаватель вам опять разворот-поворот даст.

DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
30.11.2011, 19:10  [ТС]     Массив целых чисел #13
Спасибо огромное, но: Имеется массив целых чисел a[1]...a[n], причём все числа неотрицательны и не превосходят m . Отсортировать этот массив; Число действий порядка m+n.
Вот мне помогли, но препод забраковал эту прогу.
Препод точно докапается мол: Где проверка на то отрицательные в нём элементы или нет?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.11.2011, 19:33     Массив целых чисел #14
Цитата Сообщение от DebieCooepr Посмотреть сообщение
Спасибо огромное, но: Имеется массив целых чисел a[1]...a[n], причём все числа неотрицательны и не превосходят m . Отсортировать этот массив; Число действий порядка m+n.
Вот мне помогли, но препод забраковал эту прогу.
Препод точно докапается мол: Где проверка на то отрицательные в нём элементы или нет?
Он до вас скорее докапается что у вас сортировки подсчетом нет, а не до проверки на неотрицательные числа
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2011, 23:20     Массив целых чисел
Еще ссылки по теме:

C++ Сформировать одномерный массив целых чисел, используя датчик случайных чисел
Задан массив K(m) попарно различных целых чисел. Получить все перестановки целых чисел C++
Переделать массив целых чисел на массив вещественных чисел C++

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

Или воспользуйтесь поиском по форуму:
DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
30.11.2011, 23:20  [ТС]     Массив целых чисел #15
Зачем она тут? Есть же уже одна сортировка. Или я что-то не догоняю. А она обязательна? И можно подробнее об этой сортировке) а то нам не говорили о такой вроде)
Yandex
Объявления
30.11.2011, 23:20     Массив целых чисел
Ответ Создать тему
Опции темы

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