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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Humff
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 14
#1

Вставка в одномерный массив произвольного элемента. - C++

04.05.2010, 20:29. Просмотров 1219. Ответов 5
Метки нет (Все метки)

Переменные объявлены глобально.
Вот функции для получения рандомного числа и самой вставки.
C++
1
2
3
4
5
6
7
int GetRandom1(int rand_count)
{
using namespace std;
srand(time(0));
a = (rand() % 10)-5;
cout<<"\nRandom= "<<a<<"\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
int vstav()
{
int mas_tmp[100];
 
 
    for (q = 0; q < j; q++) {
    mas_tmp[q] = B[q];
    }
 
    bool IfChecked=false;
    for (q = 0; q < j; q++)
     {
     if  ((a>=mini) && (a<=maxi) && (a<=mas[m]))
     { IfChecked=true;
     B[q+1] = mas_tmp[q];
     a = B[q];  }
     else
     { if (IfChecked)
     {
     B[q+1] = mas_tmp[q];
 
     }
     else {B[q] = mas_tmp[q];}
 
      }
     }
cout<<"New massive = ";
for (q = 0; q < j+1; q++)
{cout<<B[q];}
}

Не буду выводить функции ввода массива, нахождения упорядоченности, макса, минимума. Если надо, то выложу.
Допустим, у нас есть массив B[q] из 3 чисел: 1, 2, 3.
Берем рандомное число, например от -5 до 5 и вставляем в массив так, чтобы упорядоченность его не нарушилась. На экран же вывести массив с 4 элементами, 3 от старого, 1 от нового. Нужно сделать даже не на Си++, а на Си. Классы не нужно использовать.
Помогите пожалуйста, исправьте ошибки которые есть у меня во второй функции. В данный момент на экран выводит следующее: 1 2 3 0. А нужно, если например рандом число равно 1, выводить вот это: 1 1 2 3.
Заранее, огромное спасибо!

Добавлено через 58 минут
up ........
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2010, 20:29     Вставка в одномерный массив произвольного элемента.
Посмотрите здесь:

Вставка элемента в одномерный массив - C++
Задан упорядоченный по возростанию массив целых чисел A и число B. Для числа B найти такое место среди элементов массива А, чтобы после...

Вставка в одномерный массив - C++
Есть массив cin.getline(m_text, 256) Например : &quot;После завтра я еду домой.&quot; Нужно после слова &quot;еду&quot; вставить &quot;на поезде&quot; ...

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

Вставка элемента в массив после последнего положительного - C++
Нужно сделать программу, которая бы вставляла после последнего положительного элемента массива заданное значение, в противном случае...

Вставка нового элемента в массив (дополнить код) - C++
Здравствуйте, нужна помощь. Суть такова имеется Куча, и туда нужно Вставить новый элемент, код имеется но не такой как надо :( Сделал, и...

Вставка заданного числа в массив после k-го элемента - C++
Написать программу, вставляющую заданное число m в целочисленный массив A после k-го элемента. Число для вставки m и номер k-го элемента...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
05.05.2010, 16:32     Вставка в одномерный массив произвольного элемента. #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
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
#include <iostream>
#include <time.h>
using namespace std;
const int SIZE =20;
 
void main()
{
    setlocale (LC_ALL, "Russian");
    int n, i, k, j, a[SIZE], buf;
    srand(time(NULL));
    cout<<"Введите количество элементов: ";
    cin>>n;
    cout<<"Введите "<<n<<" элементов: \n";
    for (i=0; i<n; i++)
        a[i]=rand()%15-5;
    cout<<endl;
    for (i=0; i<n; i++)
        cout<<a[i]<<" ";
    cout<<endl;
    k=rand()%10-5;
    cout<<"\nk: "<<k<<endl;
 
    for (i=0; i<n; i++)
        for(j=n-1; j>i; j--)
            if (a[j-1]>a[j])
            {
                buf=a[j-1];
                a[j-1]=a[j];
                a[j]=buf;
            }
    cout<<"\nУпорядоченный массив: \n";
    for (i=0; i<n; i++)
        cout<<a[i]<<" ";
    cout<<endl; 
 
    for (i=0; i<n; i++)
    {
        if (k<a[0])
        {
            for (j=n; j>0; j--)
                a[j]=a[j-1];
            n++;
            a[0]=k;
            break;
        }
        if (k>a[n-1])
        {
            a[n]=k;
            n++;
            break;
        }
        if (a[i]<=k&&a[i+1]>=k)
        { 
            for (j=n; j>i; j--)
                a[j]=a[j-1];
            n++;
            a[i+1]=k;
            break;
        }
    }
            
    cout<<"\nМассив: \n";
    for (i=0; i<n; i++)
        cout<<a[i]<<" ";
    cout<<endl; 
}
Humff
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 14
05.05.2010, 18:01  [ТС]     Вставка в одномерный массив произвольного элемента. #3
спасибо огромное, буду разбираться

Добавлено через 15 минут
...
все, получилось, еще раз спасибо
Humff
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 14
28.05.2010, 15:02  [ТС]     Вставка в одномерный массив произвольного элемента. #4
Что бы не создавать новую глупую тему, напишу тут.
Не могу кое-что сделать.
Вообщем есть 5 чисел. Эти числа задаются ЧЕРЕЗ формулы + у них есть индекс от класса, то есть они такие
M.SR,S,SR,T.SR,Ma.SR,Sy.SR
Средние значения для пяти объектов.
Как из них организовать массив?

int Prybil[5] = {M.SR,S,SR,T.SR,Ma.SR,Sy.SR};
пробовал так - не получается....
Помогите пожалуйста!

Добавлено через 49 минут
Кидаю всю программу и задание....

Задание 4. Кот Матроскин владеет стадом коров, а также организовал производство молока, сметаны, творога, масла, сыра. Ежедневно он записывает в текстовый файл дневной сбыт каждого вида продукции, причем цены товара у Матроскина могут изменяться, и цены ему приходится тоже ежедневно записывать. В конце месяца необходимо подвести итог по результатам торговли, чтобы выяснить, какая продукция пользуется наибольшим и наименьшим спросом, а также какая продукция приносит наибольшую и наименьшую прибыль.
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#include <math.h>
#include <conio.h>
#include <iostream.h>
#include <cstdlib.h>
#include <ctime>
#include <fstream.h>
 
 
 
 
using namespace std;
 
class params
{
public:
 
 
    double SUM;
    double SR;
 
};
 
 
void main()
{
 
//====ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ И ДНЕЙ=============================================
 
int DAYS;
FILE *fo;
fo = fopen("c:\\laba10.txt", "wt");
fprintf(fo, "Hi! Proverka na rabotosposobnost'\n\n");
 
 
int Moloko[1000], Smetana[1000], Tvorog[1000], Maslo[1000], Syr[1000];
params M,S,T,Ma,Sy;
int i,j;
 
M.SUM=0;
 
 
//======================МОЛОКО=================================================
cout<<"Vvedite sbyt Moloka za 31 den'";
for (i = 0; i < 5; i++)
cin>>Moloko[i];
 
for (i = 0; i < 5; i++)
M.SUM+=Moloko[i];
 
M.SR = M.SUM / 5;
 
fprintf(fo,"MOLOKO: \n");
for(i=0;i<5;i++)
fprintf(fo,"%d ",Moloko[i]);
fprintf(fo,"\nSumma = %d",(int) M.SUM);
fprintf(fo,"\nSredniy Sbyt = %5.2f \n\n\n\n",M.SR);
 
 
for(i=0;i<5;i++)
{cout<<Moloko[i]<<" ";}
cout<<"\nSumma = "<<M.SUM;
printf("\nSredniy Sbyt = %5.2f ",M.SR);
 
//=============================================================================
 
 
//====СМЕТАНА===================================================================
cout<<"\nVvedite sbyt Smetani za 31 den'";
for (i = 0; i < 5; i++)
cin>>Smetana[i];
 
for (i = 0; i < 5; i++)
S.SUM+=Smetana[i];
 
S.SR = S.SUM / 5;
 
fprintf(fo,"SMETANA:\n");       for(i=0;i<5;i++)
fprintf(fo,"%d ",Smetana[i]);
fprintf(fo,"\nSumma = %d",(int) S.SUM);
fprintf(fo,"\nSredniy Sbyt = %5.2f \n\n\n\n",S.SR);
 
 
for(i=0;i<5;i++)
{cout<<Smetana[i]<<" ";}
cout<<"\nSumma = "<<S.SUM;
printf("\nSredniy Sbyt = %5.2f ", S.SR);
 
 
//===ТВОРОГ=====================================================================
cout<<"\nVvedite sbyt Tvoroga za 31 den'";
for (i = 0; i < 5; i++)
cin>>Tvorog[i];
 
for (i = 0; i < 5; i++)
T.SUM+=Tvorog[i];
 
T.SR = T.SUM / 5;
 
for(i=0;i<5;i++)
{fprintf(fo,"%d ",Tvorog[i]);}
fprintf(fo,"\nSumma = %d",(int) T.SUM);
fprintf(fo,"\nSredniy Sbyt = %5.2f \n\n\n\n",T.SR);
fclose(fo);
 
for(i=0;i<5;i++)
{cout<<Tvorog[i]<<" ";}
cout<<"\nSumma = "<<T.SUM;
printf("\nSredniy Sbyt = %5.2f ", T.SR);
 
 
//===МАСЛО=====================================================================
cout<<"\nVvedite sbyt Masla za 31 den'";
for (i = 0; i < 5; i++)
cin>>Maslo[i];
 
for (i = 0; i < 5; i++)
Ma.SUM+=Maslo[i];
 
Ma.SR = Ma.SUM / 5;
 
for(i=0;i<5;i++)
{fprintf(fo,"%d ",Maslo[i]);}
fprintf(fo,"\nSumma = %d",(int) Ma.SUM);
fprintf(fo,"\nSredniy Sbyt = %5.2f \n\n\n\n",Ma.SR);
fclose(fo);
 
for(i=0;i<5;i++)
{cout<<Maslo[i]<<" ";}
cout<<"\nSumma = "<<Ma.SUM;
printf("\nSredniy Sbyt = %5.2f ", Ma.SR);
 
 
 
//======СЫР=====================================================================
cout<<"\nVvedite sbyt Syra za 31 den'";
for (i = 0; i < 5; i++)
cin>>Syr[i];
 
for (i = 0; i < 5; i++)
Sy.SUM+=Syr[i];
 
Sy.SR = Sy.SUM / 5;
 
fprintf(fo,"CblP");
for(i=0;i<5;i++)
fprintf(fo,"%d ",Syr[i]);
fprintf(fo,"\nSumma = %d",(int) Sy.SUM);
fprintf(fo,"\nSredniy Sbyt = %5.2f \n\n\n\n",Sy.SR);
fclose(fo);
 
for(i=0;i<5;i++)
{cout<<Syr[i]<<" ";}
cout<<"\nSumma = "<<Sy.SUM;
printf("\nSredniy Sbyt = %5.2f ", Sy.SR);
//==============================================================================
 
 
cout<<"Poschitaem pribyl...";
 
int*Prybil=new int [256];
 
for (i = 0; i < 5; i++)
Prybil[i] = .SR;
 
//int Prybil[5] = {M.SR,S,SR,T.SR,Ma.SR,Sy.SR};
 
 
 
 
 
 
cout<<"\nEti dannie otpravleny na FILE.. Dalee\n\n";
getch();
 
}
Добавлено через 5 минут
В задании не учитывается сбыт продукции, то есть спрос на нее. Но это неважно, если получится сделать с прибылью, получится и со сбытом
Sura
6 / 6 / 0
Регистрация: 23.05.2010
Сообщений: 87
28.05.2010, 15:57     Вставка в одномерный массив произвольного элемента. #5
Как из них организовать массив?

int Prybil[5] = {M.SR,S,SR,T.SR,Ma.SR,Sy.SR};
пробовал так - не получается....
Humff, можно попробовать так: создать массив и каждому элементу присвоить значение...правда это громоздко
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2010, 15:59     Вставка в одномерный массив произвольного элемента.
Еще ссылки по теме:

Вставка нового элемента в упорядоченный массив (без нарушения упорядоченности) - C++
Нужно вставить в упорядоченный по убыванию массив заданный элемент, чтобы не нарушилась упорядоченность. Что не так с кодом? Помогите...

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

Запись в одномерный массив не с нулевого элемента - C++
Добрый день, форумчане. Уже как с неделю учусь CPP и пишу свою программу для вычисления геометрической прогрессии. Решил...

Одномерный динамический массив, найти значение и позицию максимального элемента - C++
Дан одномерный динамический массив размерностью N, найти значения и позицию максимального элемента


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

Или воспользуйтесь поиском по форуму:
Humff
0 / 0 / 0
Регистрация: 23.04.2010
Сообщений: 14
28.05.2010, 15:59  [ТС]     Вставка в одномерный массив произвольного элемента. #6
Да, я так уже и начал делать. И классы отпустил, что ужасно. Ну ничего, у мен клиентов нету, препод любое примет, главное чтобы работало
Все.
Yandex
Объявления
28.05.2010, 15:59     Вставка в одномерный массив произвольного элемента.
Ответ Создать тему
Опции темы

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