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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Garret192
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 84
#1

Массив - C++

18.02.2010, 20:18. Просмотров 1110. Ответов 22
Метки нет (Все метки)

Привет всем.Помогите пожалуйста решить задачу.
Дан массив. Найти k наименьших элементов.
Т.е с клавы вводится k и если в массиве
3 4 76 4 2 4
k=3
То выведется 3 4 4 2 4
P.S.. Выводить числа в той же последовательности в которой они были в массиве.
P.P.S. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2010, 20:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив (C++):

Ввести массив А. В массив В перенести все элементы массива А, стоящие правее максимального элемента, и имеющие нечетный индекс. Массив В отсортировать - C++
Добрый Вечер! Написал первую часть программы по этому заданию"Ввести массив А. В массив В перенести все элементы массива А, стоящие правее...

Массив: Как скопировать двумерный массив в другой массив? - C++
Как скопировать двумерный массив в другой массив?

Дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько раз оно входит в массив... - C++
помогите!!!((( дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько...

Файл: Загрузка данных из файла: первый столбец записывался в 1й массив, второй столбец - во 2й массив, а 3й столбец - в 3й массив. - C++
Есть текстовый файл, в нем 3 столбца чисел (число строк заранее неизвестно). Напишите пожалуйста код, чтобы первый столбец записывался в...

с клавиатуры ввести массив,во второй массив записать нечетные элементы из первого - C++
с клавиатуры ввести массив,во второй записать нечетные элеиенты из первого.В третий массив записать четные элементы, стоящие на нечетных...

Переписать положительные элементы массива K,кратные пяти в массив M,а остальные-в массив Q. - C++
Дан массив K(N).Переписать положительные элементы массива K,кратные пяти в массив M,а остальные-в массив Q.

22
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 895
19.02.2010, 14:11 #16
терь понятно задание))
0
Garret192
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 84
19.02.2010, 23:44  [ТС] #17
to valeriikozlov while(kol_min<k && fl)
Извини ачто значит & fl
0
insideone
Модератор
Автор FAQ
3642 / 921 / 50
Регистрация: 10.01.2010
Сообщений: 2,477
19.02.2010, 23:48 #18
C++
1
while(kol_min<k && fl)
Тоже что
C++
1
while(kol_min<k && fl == true)
Т.к. fl int тип. наверное имеется ввиду такое условие
C++
1
while(kol_min<k && fl != 0)
Потому как 0 - это false а остальное преобразуется в true
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.02.2010, 05:32 #19
Garret192, insideone правильно пишет. Если бы Вы указали что писать на языке C++ , то я использовал бы не int fl, а bool fl. А int fl он подходит и для C и для C++.
0
Garret192
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 84
21.02.2010, 21:07  [ТС] #20
valeriikozlov, Извини ты не мог бы обьяснить эту часть порграммы
Цитата Сообщение от valeriikozlov Посмотреть сообщение
for(i=0; i<n; i++)
if(min>mas[i])
min=mas[i];
while(kol_min<k && fl)
{
fl1=0;
fl=0;
for(i=0; i<n; i++)
{
if(!fl1 && mas[i]>min)
{
fl1=1;
temp=mas[i];
fl=1;
}
if(fl && temp>mas[i] && mas[i]>min)
temp=mas[i];
}
kol_min++;
min=temp;
}
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.02.2010, 21:35 #21
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for(i=0; i<n; i++)// в этой строке и в двух ниже ищем самый минимальный элемент массива, значение которого запишем в переменную min
if(min>mas[i])
min=mas[i];
while(kol_min<k && fl) начинаем цикл, который закончится когда fl станет равным нулю или переменная kol_min (сейчас эта переменная равна 1) станет равной k (сейчас она равна 3) - т.е. когда вычислим три самых минимальных элемента
{
fl1=0;
fl=0;
for(i=0; i<n; i++)// в этой строчке и семи ниже ищем первый попавшийся элемент массива, который больше min, если такого не найдем, то fl останется равной 0 и мы выйдем из цикла
{
if(!fl1 && mas[i]>min)
{
fl1=1;
temp=mas[i];
fl=1;
}
if(fl && temp>mas[i] && mas[i]>min)// в этой строке и двумя строчками ниже ищем минимальный элемент в массиве, но который больше значения в min, найденное значение записываем в temp
temp=mas[i];
}
kol_min++;// увеличиваем переменную на 1
min=temp;// присваиваем min значение temp
}
По окончании этого цикла в переменной min находится самое большое из минимальных значений которые нужно вывести на экран. Остается дело за малым...
1
Garret192
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 84
21.02.2010, 23:07  [ТС] #22
valeriikozlov, Спасибо большое.И если трудно не мог бы ты помочь мне дорешать программу.
Эта программа является подпрограммой к мой задаче. Хотел оставшееся дорешать сам но уже сижу часа 3,5 но не получается нормально оптимизовать и закончить,получается что-то для частных случаев. Если не впадлу вот задача.
Дан массив. Найти k наименьших элементов,и вставить их после первого максимального элемента массива.

Добавлено через 40 секунд
valeriikozlov, Спасибо большое.И если не трудно не мог бы ты помочь мне дорешать программу.
Эта программа является подпрограммой к мой задаче. Хотел оставшееся дорешать сам но уже сижу часа 3,5 но не получается нормально оптимизовать и закончить,получается что-то для частных случаев. Если не впадлу вот задача.
Дан массив. Найти k наименьших элементов,и вставить их после первого максимального элемента массива.[/QUOTE]
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
22.02.2010, 07:33 #23
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
#include <iostream>
#include <process.h>
using namespace std;
int main ()
{
    int k, i, j, kol_min=1, min, fl=1, temp, fl1, *mas, n, *mas_min, i_min, i_max;
    cout<<"Vvod kol-vo elementov massiva: ";
    cin>>n;   
    mas=new int[n];
    for(i=0; i<n; i++)
    {
        cout<<"Vvod ["<<i<<"]= ";
        cin>>mas[i];
    }
    cout<<"Vvod znacheniy k:";
    cin>>k;    
        min=mas[0];
        for(i=0; i<n; i++)
                if(min>mas[i])
                        min=mas[i];
        while(kol_min<k && fl)
        {
                fl1=0;
                fl=0;
                for(i=0; i<n; i++)
                {
                        if(!fl1 && mas[i]>min)
                        {
                                fl1=1;
                                temp=mas[i];
                                fl=1;
                        }
                        if(fl && temp>mas[i] && mas[i]>min)
                                temp=mas[i];
                }
                kol_min++;
                min=temp;
        }
        if(!fl)
        {
                cout<<"Stolko minimalnih elementov net"<<endl;
                exit(1);
        }
        kol_min=0;
        i_max=0;
        for(i=0; i<n; i++)
        {
           if(mas[i]<=min)
               kol_min++;
           if(mas[i]>mas[i_max])
               i_max=i;
        }
        mas_min=new int[kol_min];
        i_min=0;
        for(i=0; i<n; i++)
           if(mas[i]<=min)
           {
               mas_min[i_min]=mas[i];
               i_min++;
           }
        temp=i_max;
        for(i=0; i<temp; i++)
            if(mas[i]<=min)
            {
                for(j=i; j<temp; j++)
                    mas[j]=mas[j+1];
                temp--;
                i--;
            }
        for(i=n-1; i>i_max; i--)
            if(mas[i]<=min)
            {
                for(j=i; j>i_max; j--)
                    mas[j]=mas[j-1];
                i++;    
            }
        for(i=0; i<kol_min; i++)
            mas[temp+1+i]=mas_min[i];
        cout<<"Itogovi massiv: "<<endl;
        for(i=0; i<n; i++)
            cout<<mas[i]<<"  ";
        cout<<endl; 
    return 0; 
}
1
22.02.2010, 07:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2010, 07:33
Привет! Вот еще темы с ответами:

Сжать массив, выбросив из него отрицательные элементы - массив становится пустым - C++
Задачка такая: Разработать программу, обеспечивающую ввод с клавиатуры целых чисел и сохранение их в одномерном массиве. Ввод...

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька - C++
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...

Массив: найти номера столбцов с положительными элементами и записать их в одномерный массив - C++
ввести двумерный массив I . найти номера столбцов с положительными элементами и записать их в одномерный массив, отобразить его на экране. ...

Можно ли в классе создавать массив переменной длинны. Например динамический массив? - C++
Динамические массивы привлекают больше. :)


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

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