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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 292
#1

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

30.11.2011, 12:27. Просмотров 1412. Ответов 14
Метки нет (Все метки)

Имеется массив целых чисел 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++
помогите переделать этот код: #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define RANGE 20 int main() { int ARRAY_SIZE=100; ...

Целую частьиз массива действительных чисел переписать в массив целых чисел - C++
Использовать два одномерных массива - массив целых чисел и массив действительных чисел. Прочитать 15 действительных чисел и записать их в...

Ввести массив из 10 целых чисел.Найти сумму чётных чисел - C++
Ввести массив из 10 целых чисел.Найти сумму чётных чисел. Обьясните что делать?

Опишите массив 30 действительных чисел, матрицу 6Х6 целых чисел, 256 символов - C++
Опишите массив 30 действительных чисел, матрицу 6Х6 целых чисел, 256 символов.

Массив из 20 целых чисел. Подсчитать количество четных чисел - C++
вот такая задача: в массиве а из 20 целых чисел. подсчитать количество четных чисел

Найти ошибку. Записать 20 целых чисел в массив. Переписать отрицательные в массив А, а положительные в Б - C++
Доброго времени суток. Записать 20 целых чисел в массив А. Переписать отрицательные из них подряд в массив В, а положительные - в массив C....

Дано двумерный массив целых чисел. В каждом столбце найти сумму и количество чисел.(исправить) - C++
Исправить программу: Дано двумерный массив целых чисел. В каждом столбце найти сумму и количество чисел. #include &lt;iostream.h&gt; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 724
30.11.2011, 12:59     Массив целых чисел #2
ну условие в выводе напишите когда вывод на экран делаете
C++
1
2
3
for(i = 0; i < 19;i++)
if(a[i] != i)
cout << -1;
Так вам надо?или я не прав?
DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 292
30.11.2011, 13:01  [ТС]     Массив целых чисел #3
Мне нужно чтобы человек сам вводил числа в массив и выводилось как я описал выше.
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++
4225 / 2199 / 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
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 292
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
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
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
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 292
30.11.2011, 19:10  [ТС]     Массив целых чисел #13
Спасибо огромное, но: Имеется массив целых чисел a[1]...a[n], причём все числа неотрицательны и не превосходят m . Отсортировать этот массив; Число действий порядка m+n.
Вот мне помогли, но препод забраковал эту прогу.
Препод точно докапается мол: Где проверка на то отрицательные в нём элементы или нет?
Thinker
Эксперт C++
4225 / 2199 / 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++
Дан массив целых чисел. Переписать все положительные элементы во второй массив, а остальные - в третий Помогите, подправьте немного код,...

Задан массив целых чисел. Вывести на экран массив, составленный из заданного количества минимальных элементов исходного - C++
Помогите доделать!!! Массив должен быть динамический, с указателями, а вывод минимальных элементов во втором массиве. #include...

Дано произвольный одномерный массив целых чисел М и натуральное число n. Определить, если такие есть, количество чисел n в массиве М и их индексы - C++
Ребята,помогите с заданием: Дано произвольный одномерный массив целых чисел М и натуральное число n. Определить, если такие есть,...

Массив целых чисел. - C++
Дан массив целых чисел. а) Разделить все элементы массива на его первый элемент; б) увеличить все элементы массива в два раза; в) уменьшить...

массив целых чисел - C++
Дан массив целых чисел не более 20 если этот массив упорядочен по возраст то все элем возвести в квадрат в противном случае записать что не...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru