Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Одномерный массив / 15 сообщений из 15, страница 1 из 1
24.12.2012, 19:45
    #38091132
conNNNNN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
Помогите доработать программу пожалйста:
Сформировать одномерный массив целых чисел, используя датчик случайных чисел, и распечатать массив. Удалить из массива все элементы, совпадающие с его минимальным значением. Добавить в начало массива 3 элемента, которые равны среднему арифметическому массива. Распечатать полученный массив.
Код:

Код: plaintext
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.
#include <clocale>
#include <ctime>
#include <cstdlib>
#include <cmath>
#include <iostream>

using namespace std;

int main() {
	setlocale(LC_ALL, "Russian");

	const int N = 10;
	int massiv[N];

	int srar = 0;
	srand(time(NULL));

        //Заполняем массив
	for (int i = 0; i < N; i++) {
		massiv[i] = 1 + rand() % 10;
		printf("%d ", massiv[i]);
	}

        //Удаляем минимальный элемент в массиве
	int min = massiv[0];
	for (int i = 0; i < N; i++) {
		if (min > massiv[i])
			min = massiv[i];
	}
	for (int i = 0; i < N; i++) {
		if (massiv[i] == min) {
			for (int j = i + 1; j < N; j++) {
				massiv[j - 1] = massiv[j];

			}

			cout << endl;
			for (i = 0; i < N; i++) {
				cout << massiv[i] << " ";
			}
			cout << "\nmin=" << min << endl;

                        //Ищем среднее арифметическое
			int sum = 0;
			for (int i = 0; i < N; i++) {
				sum += massiv[i];
			}

			srar = sum / N;

			/*for (int i = 0;i<N;++i)
			 {
			 if (massiv[i] == srar)
			 {
			 for (int c=N, i = 0;i>3;i++)
			 {
			 massiv[c] = massiv [i];
			 c++;
			 }}
			 }
			 cout<<massiv[c];*/
			cout << "Srednee arifmeticheskoe: " << srar << "\n";
			system("pause");
			return 0;
		}
	}
}


Модератор: Отформатировано
...
Рейтинг: 0 / 0
24.12.2012, 22:48
    #38091261
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
conNNNNN,

Так все ж верно...

Только одна проблема ... Если у тебя 10 элементов изначально, и 3 еще надо добавить, а минимум 1 элемент удалить, то размер-то массива должен быть побольше...

И массив переменного размера вообще то должен быть.
...
Рейтинг: 0 / 0
27.12.2012, 17:18
    #38095251
conNNNNN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
Помогите переделать код, вроде уже выводит 3 среднеарифметических в начало массива но удаляет 3 изначальных элемента. Как сделать динамическим массив. Вот наработки:

Код: plaintext
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.
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
	 srand( time( NULL ) );
    int n,i,min,max,min_i,max_i;
    float s=0;
    cout<<"  n=";
    cin>>n;
    int *a=new int[n+2];
    cout<<"  Array: ";
    for(i=0;i<n;i++) { a[i]=rand()%10; cout<<a[i]<<" "; s+=(float)a[i]/n; }
    min=max=a[0]; 
    min_i=max_i=0;
    for(i=1;i<n;i++) 
    {
        if(a[i]<min) { min=a[i]; min_i=i; }
        if(a[i]>max) { max=a[i]; max_i=i; }
    }
    cout<<"\n  min="<<min;
    cout<<"\n  max="<<max;
  
    cout<<"\n  S_a="<<s;
    cout<<"\n  New array: "; 
         a[0] = a[1] = a[2] = (int) (s + 0.5);
            for(i=0;i<n;i++) if(a[i]>min) cout<<a[i]<<" ";
  
    delete []a;
    getch();
    return 0;
}
...
Рейтинг: 0 / 0
27.12.2012, 20:58
    #38095469
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
conNNNNNПомогите переделать код, вроде уже выводит 3 среднеарифметических в начало массива но удаляет 3 изначальных элемента. Как сделать динамическим массив. Вот наработки:Не понял чего ты хочешь

Код: plaintext
1.
    int *a=new int[n+2];


Вот это и есть выделение динамического массива. Зачем делать то что уже сделано?

Код: plaintext
1.
         a[0] = a[1] = a[2] = (int) (s + 0.5);


Да, ты сам удаляешь 3 изначальных элемента. ЗАЧЕМ???
...
Рейтинг: 0 / 0
27.12.2012, 21:13
    #38095476
conNNNNN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
сперва программа удаляет из массива элементы имеющие минимальные значения, после этого добавляет 3 округленных среднеарифметических в начало массива, и в итоге они стирают первые 3 элемента которые вообще не должны были удаляться
...
Рейтинг: 0 / 0
27.12.2012, 21:26
    #38095481
conNNNNN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
вот мой вывод программы: добавилось 3 пятерки , но одновременно они стерли элементы 8 и 7, и ставили на их место
...
Рейтинг: 0 / 0
27.12.2012, 21:41
    #38095491
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
conNNNNNсперва программа удаляет из массива элементы имеющие минимальные значения,Где?
conNNNNN после этого добавляет 3 округленных среднеарифметических в начало массива,Не добавляет, а замещает.
conNNNNN и в итоге они стирают первые 3 элемента которые вообще не должны были удалятьсяЯ не вижу в твоей программе удалений элементов вообще.
...
Рейтинг: 0 / 0
27.12.2012, 21:45
    #38095493
conNNNNN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
честно скажу что я ноль в с++, но из 1 массива выводится минимальное - это единица, в следующем полученном массиве единиц нет, это что не удаление разве?
...
Рейтинг: 0 / 0
27.12.2012, 21:53
    #38095501
conNNNNN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
еще насчет замещения. по примеру приблизительно должно так получится, чтобы сместить массив на 3 элемента вправо, но куда этот код запихнуть чтобы работало:

for( i = n; i > 0; i++) a[i+2] = a[i-1];
n += 3;
...
Рейтинг: 0 / 0
28.12.2012, 00:52
    #38095601
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
conNNNNNчестно скажу что я ноль в с++, но из 1 массива выводится минимальное - это единица, в следующем полученном массиве единиц нет, это что не удаление разве?Нет, это невнимательность. В опубликованном коде есть только две строки в которых задаются значения для элементов массива. Судя по этому коду единички никуда исчезнуть не должны. Вывод: скриншот с работой программы сделан на основе другого кода, не того который ты здесь опубликовал.



conNNNNNеще насчет замещения. по примеру приблизительно должно так получится, чтобы сместить массив на 3 элемента вправо, но куда этот код запихнуть чтобы работало:

for( i = n; i > 0; i++) a[i+2] = a[i-1];
n += 3; Сначала прогони его вручную, с бумажкой и карандашом. Когда поймешь где ошибка и исправишь ее - запихнешь этолт код в текст основной программы (хотя я думаю, что к моменту нахождения ошибки этот код тебе будет уже ненужен вообще).
...
Рейтинг: 0 / 0
28.12.2012, 07:22
    #38095681
conNNNNN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
как не тот код, скомпилируй у себя в компиляторе, так ведь получится
...
Рейтинг: 0 / 0
28.12.2012, 09:31
    #38095737
m_Sla
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
В задании "Добавить в начало массива 3 элемента". Почему тут +2?
Код: plaintext
1.
    int *a=new int[n+2];


И добавляй не с 1-го элемента, а с 4-го. Первые 3 элемента массива отводятся для среднего.
Код: plaintext
1.
2.
3.
4.
5.
6.
    for(i=0;i<n;i++) { a[i]=rand()%10; cout<<a[i]<<" "; s+=(float)a[i]/n; }
    // т.е. должно получиьтся
    a[3]=rand()%10;
    a[4]=rand()%10;
    a[5]=rand()%10;
    ...


В задании "Удалить из массива все элементы, совпадающие с его минимальным значением.". ИМХО ты это не реализовал вообще.
Создай еще один массив, например:
Код: plaintext
1.
    int *b=new int[n+2];


Затем скопируй только те элементы из а[i] в b[i], которые не совпадают с минимальным значением.
Затем выведи массив b.
...
Рейтинг: 0 / 0
28.12.2012, 10:10
    #38095769
defragmentator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
conNNNNNУдалить из массива все элементы, совпадающие с его минимальным значением.
Тогда надо удалить все элементы:)
...
Рейтинг: 0 / 0
28.12.2012, 12:36
    #38096020
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
Да давно все ясно. Надо сдать зачет.
В тырнете находится программа, которая делает почти то, что надо. Выкладывается на форум, авось кто допилит. Зачет сдан. Профит.
...
Рейтинг: 0 / 0
28.12.2012, 22:04
    #38096702
conNNNNN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Одномерный массив
переделал, все работает. ТЕМА ЗАКРЫТА
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Одномерный массив / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]