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

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

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

Массив - C++

18.02.2010, 20:18. Просмотров 1104. Ответов 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
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
18.02.2010, 20:49 #2
тупо конечно
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
void swap(int &A, int &B)
{
        int t = A;
        A = B;
        B = t;
}
// Сортировка методом пузырька
void sort(int * a, int l, int r)
{
        for(int i = l; i < r; i++)
                for(int j = r; j > i; j--)
                        if(a[j-1] > a[j])
                                swap(a[j-1], a[j]);
}
int main()
{
    const int SIZE = 6;
    int a[] = { 3, 5, 76, 4, 2, 4 };
    int k, c = 0;
    
    cout << "введите k: ";
    cin >> k;
    
    int * t = new int[SIZE];
    memcpy(t, a, SIZE*sizeof(int));
    sort(t, 0, SIZE-1);
    for(int i = 0; i < SIZE && c < k; i++)
        if(t[i] != t[i+1])
            c++;
    c = t[c];
    delete[] t;
    
    for(int i = 0; i < SIZE; i++)
        if(a[i] <= c)
            cout << a[i] << " ";
    
    cout << endl;
    system("pause");
}
1
Garret192
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 84
18.02.2010, 21:13  [ТС] #3
Прости а
C++
1
2
3
4
5
6
void swap(int &A, int &B)
{
        int t = A;
        A = B;
        B = t;
}
и
C++
1
2
3
4
5
6
7
void sort(int * a, int l, int r)
{
        for(int i = l; i < r; i++)
                for(int j = r; j > i; j--)
                        if(a[j-1] > a[j])
                                swap(a[j-1], a[j]);
}
это равносильные функции или состовлящие одной программы?
0
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
18.02.2010, 21:16 #4
состовлящие одной программы.
с их помощью массив сортируется по возрастанию, чтобы можно было определить максимальный элемент, который нужно выводить.
1
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 894
18.02.2010, 21:50 #5
пжди.....те над чтоб были выведены ток числа которые больше или меньше чем k на еденецу?
типа старший младший..... гдет была такая задача тогда, и она проще пишется....

Добавлено через 14 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void main()
{
const int N1=100;
int i,k,n,a[N1];
system("echo введите количество элементов в массиве");
scanf("%d",&n);
system("echo введите число k");
scanf("%d",&k);
system("echo введите елементы массива");
for(i=0;i<n;i++)
 scanf("%d",&a[i]);
system("echo полученный массив");
 for(i=0;i<n;i++)
  {
  if(a[i]==k-1 || a[i]==k+1 || a[i]==k)
  printf("%3d",a[i]);
  }
 
getch();
}
Добавлено через 30 секунд
вот так )

Добавлено через 3 минуты
кста здесь использовано system("echo сообщение"); это то же что и стандартные для си функции вывода на экран, только работают системно, и уж точно русский язык выводят)
0
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
18.02.2010, 21:53 #6
cibertronic, а задание мы читать умеем?
Дан массив. Найти k наименьших элементов.
Добавлено через 16 секунд
Ключевое слово "наименьших", а не "соседних"
0
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 894
18.02.2010, 22:00 #7
ну а если тут нужно вывести элементы меньше 10 но больше нуля то в 18й строке просто if(a[i]<10 && a[i]>0) ток причем тут k? гг

Добавлено через 2 минуты
Цитата Сообщение от fasked Посмотреть сообщение
Ключевое слово "наименьших", а не "соседних"
ну если k у него 3 то по идее тогда должно быть 3 4 4 и все

Добавлено через 2 минуты
Цитата Сообщение от fasked Посмотреть сообщение
а задание мы читать умеем?
читаем вроди)
0
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
18.02.2010, 22:03 #8
k - это количество наименьших элементов, а не количество элементов, которые надо вывести.

Добавлено через 25 секунд
Цитата Сообщение от cibertronic Посмотреть сообщение
читаем вроди)
Плохо читаем, человек же даже пример привел
0
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,471
18.02.2010, 22:08 #9
fasked, я так думаю, тс понятия не имел что ему надо выводить.
в приведённом им примере (задании) выведены числа 3 4 4 2 4
...По какому принципу они выведены- одному Богу известно. Нигде не сказано, что должно вывестись 5 наименьших.
Признатьься, я тоже понял, что необходимо вывести k наименьших, то есть три числа
3 4 4

а у тебя при k==3 выводится 4 числа
3 4 2 4
Почему ты вывел именно 4 числа а не 2 или 1 спрашивать не берусь. Наверное, ты просто ошибся. Бывает.
0
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
18.02.2010, 22:12 #10
Цитата Сообщение от Garret192 Посмотреть сообщение
если в массиве
3 4 76 4 2 4
k=3
То выведется 3 4 4 2 4
Вот поэтому, почему человек в примере вывел не 3 числа, а именно 5 вы видимо тоже не возьметесь спрашивать у него.
0
Garret192
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 84
18.02.2010, 23:06  [ТС] #11
fasked всё правильно говорит.

Добавлено через 3 минуты
Наименьших 3 числа это 2 3 и 4, но 4 встречается несколько раз поэтому мы и выводим 3 4 4 2 4
0
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,471
18.02.2010, 23:06 #12
Ну он тебя понял а я не могу. Вот оъясни мне почему у тебя в задании выводятся пять чисел 3 4 4 2 4?
То, что они наименьшие, я вижу. Но почему их 5?
Нет, я жду!
...Ну так бы сразу исказал.
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.02.2010, 23:07 #13
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
#include <iostream>
 
using namespace std;
int main ()
{
    const n=6;
    int k, i, kol_min=1, min, fl=1, temp, fl1;
    int mas[6]={3, 4, 76, 4, 2, 4};
    // здесь можно сделать ввод значения k с клавиатуры
    k=3;
    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;
    else
    {
        for(i=0; i<n; i++)
            if(mas[i]<=min)
                cout<<mas[i]<<"  ";
    } 
    return 0; 
}
1
Garret192
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 84
19.02.2010, 00:16  [ТС] #14
Наименьших. 2 3 4 их 3=к ,а в порядке в котором они в массиве и с повторениями они мне нужны для другого задания где эта операция является одной из подпрограмм.
0
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
19.02.2010, 00:52 #15
вот valeriikozlov вроде более красивое и адекватное решение предложил))
хотел сначала что-то наподбе изобразить, но сил соображать уже нет)))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2010, 00:52
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
19.02.2010, 00:52
Ответ Создать тему
Опции темы

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