powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Одномерный массив
15 сообщений из 15, страница 1 из 1
Одномерный массив
    #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
Одномерный массив
    #38091261
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
conNNNNN,

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

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

И массив переменного размера вообще то должен быть.
...
Рейтинг: 0 / 0
Одномерный массив
    #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
Одномерный массив
    #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
Одномерный массив
    #38095476
conNNNNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сперва программа удаляет из массива элементы имеющие минимальные значения, после этого добавляет 3 округленных среднеарифметических в начало массива, и в итоге они стирают первые 3 элемента которые вообще не должны были удаляться
...
Рейтинг: 0 / 0
Одномерный массив
    #38095481
conNNNNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот мой вывод программы: добавилось 3 пятерки , но одновременно они стерли элементы 8 и 7, и ставили на их место
...
Рейтинг: 0 / 0
Одномерный массив
    #38095491
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
conNNNNNсперва программа удаляет из массива элементы имеющие минимальные значения,Где?
conNNNNN после этого добавляет 3 округленных среднеарифметических в начало массива,Не добавляет, а замещает.
conNNNNN и в итоге они стирают первые 3 элемента которые вообще не должны были удалятьсяЯ не вижу в твоей программе удалений элементов вообще.
...
Рейтинг: 0 / 0
Одномерный массив
    #38095493
conNNNNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
честно скажу что я ноль в с++, но из 1 массива выводится минимальное - это единица, в следующем полученном массиве единиц нет, это что не удаление разве?
...
Рейтинг: 0 / 0
Одномерный массив
    #38095501
conNNNNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще насчет замещения. по примеру приблизительно должно так получится, чтобы сместить массив на 3 элемента вправо, но куда этот код запихнуть чтобы работало:

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



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

for( i = n; i > 0; i++) a[i+2] = a[i-1];
n += 3; Сначала прогони его вручную, с бумажкой и карандашом. Когда поймешь где ошибка и исправишь ее - запихнешь этолт код в текст основной программы (хотя я думаю, что к моменту нахождения ошибки этот код тебе будет уже ненужен вообще).
...
Рейтинг: 0 / 0
Одномерный массив
    #38095681
conNNNNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как не тот код, скомпилируй у себя в компиляторе, так ведь получится
...
Рейтинг: 0 / 0
Одномерный массив
    #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
Одномерный массив
    #38095769
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
conNNNNNУдалить из массива все элементы, совпадающие с его минимальным значением.
Тогда надо удалить все элементы:)
...
Рейтинг: 0 / 0
Одномерный массив
    #38096020
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да давно все ясно. Надо сдать зачет.
В тырнете находится программа, которая делает почти то, что надо. Выкладывается на форум, авось кто допилит. Зачет сдан. Профит.
...
Рейтинг: 0 / 0
Одномерный массив
    #38096702
conNNNNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
переделал, все работает. ТЕМА ЗАКРЫТА
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Одномерный массив
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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