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

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

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

Массив - C++

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

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

Дан массив размерности n. Заполнить массив случайными числами в диапазоне [-100;100]. Перевернуть массив: - C (СИ)
Дан массив размерности n. Заполнить массив случайными числами в диапазоне . Перевернуть массив: a↔a, a↔a и т.д. Для работы с массивом...

Вывести на печать массив X, массив Z, массив Y, произведение элементов массива X, упорядоченный массив Y - QBasic
Вывести на печать массив X, массив Z, массив Y, произведение элементов массива X, упорядоченный массив Y. ...

Дан массив целых чисел а(12). Переписать в массив х четные, а в массив у нечетные элементы массива а - Turbo Pascal
Помогите пожалуйста решить эту задачу. Массив a выводит на печать. Я пишу a mod 2 = 0 , а он мне 41 ошибку выдает. Что делать? Вот...

Дан одномерный массив A из N элементов. Переписать положительные элементы массива в массив B, а отрицательные в массив C - Pascal
Дан одномерный массив A из N элементов. Переписать положительные элементы массива в массив B, а отрицательные в массив C.

Сформировать массив, который будет состоять из чисел, входящих как в массив A, так и в массив B - C (СИ)
Задание: На основе исходных массивов A и B (n и m – рабочие размеры массивов) сформировать массив C, который будет состоять из чисел,...

Массив: Отсортировать полученный массив 3 способами: по строкам, по столбцам( возр.), 3) и весь массив - Delphi
Помогите, пожалуйста ,решить задачу. Очень нужно. Задан массив (4*6). Элементы задаются по правилу: если j>3, то Aij=i+j, иначе...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 893
19.02.2010, 14:11     Массив #16
терь понятно задание))
Garret192
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 84
19.02.2010, 23:44  [ТС]     Массив #17
to valeriikozlov while(kol_min<k && fl)
Извини ачто значит & fl
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
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
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.02.2010, 05:32     Массив #19
Garret192, insideone правильно пишет. Если бы Вы указали что писать на языке C++ , то я использовал бы не int fl, а bool fl. А int fl он подходит и для C и для C++.
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;
}
valeriikozlov
Эксперт C++
4669 / 2495 / 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 находится самое большое из минимальных значений которые нужно вывести на экран. Остается дело за малым...
Garret192
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 84
21.02.2010, 23:07  [ТС]     Массив #22
valeriikozlov, Спасибо большое.И если трудно не мог бы ты помочь мне дорешать программу.
Эта программа является подпрограммой к мой задаче. Хотел оставшееся дорешать сам но уже сижу часа 3,5 но не получается нормально оптимизовать и закончить,получается что-то для частных случаев. Если не впадлу вот задача.
Дан массив. Найти k наименьших элементов,и вставить их после первого максимального элемента массива.

Добавлено через 40 секунд
valeriikozlov, Спасибо большое.И если не трудно не мог бы ты помочь мне дорешать программу.
Эта программа является подпрограммой к мой задаче. Хотел оставшееся дорешать сам но уже сижу часа 3,5 но не получается нормально оптимизовать и закончить,получается что-то для частных случаев. Если не впадлу вот задача.
Дан массив. Найти k наименьших элементов,и вставить их после первого максимального элемента массива.[/QUOTE]
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2010, 07:33     Массив
Еще ссылки по теме:

Массив: Как сделать так, чтобы результирующий массив представлял собой измененный по заданным правилам первый массив? - C++ Builder
Доброй ночи форумчане, очередной нубо-вопрос не требует отлагательств имеется одномерный массив, из которого по заданным условиям...

Вывести массив а(i, j), одномерный массив b(i) и полученный массив АВ с помощью функции Cells - VBA
Задача 1 Написать программу для решения следующей задачи: для числа n вводимого с клавиатуры (с помощью функции InputBox())...

Построить массив d из элементов, которые входят как в массив a так и в массив b - C (СИ)
Дан массив a и b состоящий из n элементов. Построить массив d из элементов, которые входят как в массив a так и в массив b. Желательно с...

Массив. Разделить на два: массив элементов с четными и массив с нечетными индексами - Pascal ABC
VII.Одномерные массивы 50. Задан массив с количеством элементов N. Сформировать два массива: в первый включить элементы исходного массива...


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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
4669 / 2495 / 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; 
}
Yandex
Объявления
22.02.2010, 07:33     Массив
Ответ Создать тему
Опции темы

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