Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 05.01.2009
Сообщений: 11

Работа с одномерным масивом

05.01.2009, 20:41. Показов 1730. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста:'(.....У меня такая задача по Visual C++.......есть масcив(вводится с клавиатуры) из 5 чисел....нужно найти в нем максимальный и минимальный элемент, порядковый номер этих элементов,потом удалить эти элементы с массива и вывести новый сформировавшийся("сжатый") массив без этих элементов.....помогите очень прошу!!!!!!!....Ниче не получается:'(
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.01.2009, 20:41
Ответы с готовыми решениями:

задание с масивом
Задан массив y1,y2....y15 нужно сформировать новый масив, заменив y_min на y_max, а y_max на y_min,т.е. поменять их местами. //

Работа с одномерным массивом
Задание такое: В одномерном массиве, состоящим из n вещественных элементов, вычислить: 1) Номер минимального по модулю элемента...

Работа с одномерным масивом
Ребят пожалуйста помогите с заданием: Дана строка символов (вводится через компонент TextBox). С помощью компонента CheckBox...

10
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
05.01.2009, 21:16
Покажи то, что уже написал, и тогда мы укажем тебе на ошибки, и если понадобится, то исправим.
0
0 / 0 / 0
Регистрация: 05.01.2009
Сообщений: 11
05.01.2009, 21:22  [ТС]
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
#include <iostream>
#include <conio.h>
using namespace std;
int a[5];
 
int main()
{ int max,min,i,t,r;
cout<<"vvedite elementi masiva\n";
for (i=1;i<=5;i++)
{cin>>a[i];
}
    cout << "masiv budet\n";
    for (i=1;i<=5;i++)
    {cout<<a[i]<<"\t";}
    max=a[1];
    t=0;
    for (i=1;i<=5;i++)
    {if ((max<a[i])&&(max=a[i]))
    {max=a[i];
    t=i;}
    }
    cout<<"\n";
    cout<<"max="<<max<<"\n";
    cout<<" nomer max elemen="<<t+1<<"\n";
    r=t+1;
    cout<<"masiv budet\n";
    for (i=1;i<=5;i++)
    { 
    if (r=1)
    {for (i=r+1;i<=5;i++){cout<<a[i]<<"\t";}}else
    if (r=5)
    {for (i=0;i<=r-1;i++){cout<<a[i]<<"\t";}}else
    if ((r!=1)&&(r!=5))*/
    for (i=1;i<=5;i++){cout<<a[i]<<"\t";}
        }}
    return 0;
}
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
05.01.2009, 21:48
Основная ошибка была в том, что ты элементы массива нумеровал с 1 до 5, а надо от 0 до 4.
Вот я тебе исправил. Теперь работает как надо, но не совсем по заданию. Ты ведь в конце просто выводишь масив без мин и макс элементов, а надо сформировать новый. Исправь в коде место которое я указал коментарием на помещение в другой массив(например int result[3]).
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
#include <iostream>
#include <conio.h>
using namespace std;
int a[5];
 
int main()
{
int max,min,i,t,r;
cout<<"vvedite elementi masiva\n";
for (i=0;i<5;i++)
        {
        cin>>a[i];
        }
cout << "masiv budet\n";
for (i=0;i<5;i++)
        {
        cout<<a[i]<<"\t";
        }
max=a[0];
t=0;
min=a[0];
r=0;
for (i=0;i<5;i++)
        {
        if (max<=a[i])
                {
                max=a[i];
                t=i;
                }
        if(min>=a[i])
                {
                min=a[i];
                r=i;
                }
        }
cout<<"\n";
cout<<"max="<<max<<"\n";
cout<<" nomer max elemen="<<t+1<<"\n";
cout<<"min="<<min<<"\n";
cout<<" nomer min elemen="<<r+1<<"\n";
cout<<"masiv budet\n";
for (i=0;i<5;i++)
{
if((i==r)||(i==t))continue;
cout<<a[i]<<"\t";//Вот это место можно исправить
}
getch();
return 0;
}
1
0 / 0 / 0
Регистрация: 05.01.2009
Сообщений: 11
05.01.2009, 22:09  [ТС]
Отличный вариант но, видишь ли в чем дело.......вобщем смотри эта задачка вершина айсберга!!!.....есть массив из 20 чисел...надо отобрать из него 3 самые минимальные и з самые максимальные (массив не упорядочин)....так вот что я надумал.......беру масив нахожу в нем мин. и макс. потом эти элементы удаляю с масива..остается 18...потом опять нахожу в оставшемся мин и макс...опять удаляю их..остается 16 и потом еще раз проделываю эту де процедуру......в результате получу 2 масива(один из мин. элементов, другой из макс.)...и потом их надо будет вывести......
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
05.01.2009, 22:20
А ты скопируй массив и упорядочи его. Например пузырьком. Очень просто.
C++
1
2
3
4
5
6
7
8
9
10
for(int j=0;j<20;j++)
    for(int i=0;i<19;i++)
    {
    if(a[i]>a[i+1])
        {
        int temp=a[i];
        a[i]=a[i+1];
        a[i+1]=temp;
        }
    }
После этого цикла у тебя будут элементы a[0] и a[1] и a[2] - минимальные,
a[17]a[18]a[19] - максимальные. А потом выводи те элементы из исходного, которые не равны a[0],a[1],a[2],a[17],a[18],a[19].
Решение мож и не самое красивое, но простое, и ты спокойно можешь его сделать сам.
1
0 / 0 / 0
Регистрация: 05.01.2009
Сообщений: 11
05.01.2009, 22:37  [ТС]
Это т вариант просто идеален я его тож думал но есть одно но!......Мой препод сказал, что это слишком легко.........но это еще не все...я буду работать с потоками...разпаралеливать процессы...то есть.......у меня есть 3 процессора......я сделаю потоковые процедуры, в которых будут вызываться процедуры, что отвечают за поиск мин. и макс. и потом удаляют эти элементы с масива данного(наши 20 чисел).....потом в главной процедуре я буду вызывать потоки.....один за одним...и так получу желаемые 3 мин. и 3 макс. элемента.....тоесть важно работать именно с этим массивом.......а я хотел узнать нет ли какого нибуть алгоритма, что б удалять заданый элемент с массива и потом сдвигать("сжимать") массив??....может есть какая то функция специальная?(MSDN у меня нету к сожаленью).....

Добавлено через 6 минут 41 секунду
Да еще хлтел узнать а можно ли в "If" задавать больше параметров???.....ну вот например if(i=0;i<5;i++) - это по стандарту а мне надо.....что б "i" была допусим от 0 до 2 и от 4 до 6.....ну что то типа if (i=0 && i<2;i=4&&i<6;i++) ну только прапвильно как написать это условие, не подскажешь???
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
05.01.2009, 22:45
Может ты имел ввиду for(int i=0;i<5;i++). Параметров там можно ставить скока угодно:
C++
1
for(int i=0,j=0,z=0; (c[i]!=0 || i<5);i++,j++,z++){...}
1
0 / 0 / 0
Регистрация: 05.01.2009
Сообщений: 11
05.01.2009, 22:56  [ТС]
Наверно не совсем то ))))...я имеел виду в функции for(ты правильно подметил)....ставить приделы от допустим 0 до 3 и потом здесь же 5 до 7 и все это работая с одной переменной (в нашем случаи i )......напишу словами что б было понятнее for (i равно от 0 до 3 ; i равно от 5 до 7;i ++ )??????
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
05.01.2009, 23:06
Не, так просто не выйдет. Да я и не понимаю зачем.
for - оператор

А вот удалять элемент из массива нельзя. Если его выделить с помощью malloc, то его размер можно изменить с помощью realloc(самый простой вариант). Можно конечно создавать каждый раз новый массив и копировать в него результаты обработки предыдущего, но как потом выполнять синхронизацию между потоками я не знаю. Наверное надо использовать какой-нибудь контейнер из STL, например vector или list. Можно удалять все из любых позиций, но медленней, и я не знаю как это все будет работать на многопоточности.

Еще непонятно:
Цитата Сообщение от verfallen Посмотреть сообщение
потом в главной процедуре я буду вызывать потоки.....один за одним
По идее потоки создаются для того, что бы работать одновременно, а не запускаться один после другого. Где же тут паралельное вычисление?
Я очень плохо шарю в паралельных вычислениях
1
0 / 0 / 0
Регистрация: 05.01.2009
Сообщений: 11
06.01.2009, 10:34  [ТС]
Спасибо тебе за то что помог......я знаю ,что потоки работают одновременно..єто я просто не совсем правильно выразился....да препод задолбал...я такой алгоритм придумал классный с сортировкой (то что ты мне предлагал)на мьютексах реализованый а он пад****....забраковал сказал, мол это слишком легко...вот и приходится теперь мучатся (((((.....ну все равно спасибо большое за подсказки

Добавлено через 27 минут 25 секунд
Спасибо тебе огромное за помощь!!!!

Добавлено через 10 часов 51 минуту 55 секунд
Помогите решить еще одну задачку!!!!!.......есть 5 чисел(неупорядоченный массив).....надо найти макс. и мин. элементы и заменить их нулями...потом снова пройтись по массиву и снова найти мин. и макс. элементы, учитывая что в нем уже есть нули(то есть предведущие макс. мин. элементы были заменены нулями)....такую процедуру проделать 3 раза...в результате должно быть 6 чисел (3 мин. и 3 макс.)......и масив с одним оставшимся числом.....помогите очень надо!!!!!

Добавлено через 34 секунды
вот код программы...не могу понять че не работает

Добавлено через 39 секунд
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
#include <iostream>
    #include <conio.h>
    using namespace std;
    int a[5],b[3];
 
    int main()
    {
    int max2,min2,max,min,i,j,t,r,t2,r2;
    cout<<"vvedite elementi masiva\n";
   for (i=0;i<5;i++)
           {
           cin>>a[i];
           }
   cout << "masiv budet\n";
   for (i=0;i<5;i++)
           {
           cout<<a[i]<<"\t";
           }
           max=a[0];
   t=0;
   min=a[0];
   r=0;
   for (i=0;i<5;i++)
           {
           if (max<=a[i])
                   {
                   max=a[i];
                   t=i;
                   }
           if(min>=a[i])
                   {
                   min=a[i];
                   r=i;
                   }
           }
   cout<<"\n";
   cout<<"max="<<max<<"\n";
   cout<<" nomer max elemen="<<t+1<<"\n";
   cout<<"min="<<min<<"\n";
   cout<<" nomer min elemen="<<r+1<<"\n";
   cout<<"masiv budet\n";
   for (i=0;i<5;i++)
   {
   if((a[t]==max)||(a[r]==min))
   {a[t]=NULL;a[r]=NULL;
   for(i=0;i<5;i++){cout<< a[i]<<"\t";
   }}
   }
   cout <<"\n";
   max2=a[0];
   t2=0;
   min2=a[0];
   r2=0;
   for (i=0;i<5;i++)
           {
           if (a[i]!=NULL){
           if (max2<=a[i])
                   {
                   max2=a[i];
                   t2=i;
                   }
                   if (min2>=a[i])
                   {
                   min2=a[i];
                   r2=i;
                   }
                   }}
   cout<<"\n";
   cout<<"max="<<max2<<"\n";
   cout<<" nomer max elemen="<<t2+1<<"\n";
   cout<<"min="<<min2<<"\n";
   cout<<" nomer min elemen="<<r2+1<<"\n";
   cout<<"masiv budet\n";
   {
    for(i=0;i<5;i++)
    if((a[t2]==max2)||(a[r2]==min2))
   {a[t2]=NULL;a[r2]=NULL;
   for(i=0;i<5;i++){cout<< a[i]<<"\t";}}
   }
   getch();
   return 0;
   }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2009, 10:34
Помогаю со студенческими работами здесь

Работа с одномерным масивом на C#
Нужно решить с использованием ввода одномерных массивов с клавиатуры либо их заданием с помощью генератора псевдослучайных чисел с...

Работа с масивом
Как предоставить пользователю ввод кол-ва элементов масива вручную. cout&lt;&lt;&quot;input number of mas element and press...

Работа с масивом элементов управления
Нужно написать программу &quot;Конструктор Японских кросcвордов на Visual Basic 6.0&quot; Как бы я эту задачу реализовывал (часть программы) : ...

Две задачи : Работа с двухмерным масивом и Псевдографический редактор
Здавствуйте уважаемые форумчане я студент ВУЗа. Сейчас пишу курсовую по Системному программированью. Работа состоит из следующего: две...

Получение данных из файла перевод в массив работа над масивом и запись массива в другой файл
Есть файл с данными в него входят как буквенные значения(разделять нельзя), так и цифровые. Данные в файле записанны в виде строки.строк...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru