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

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

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

Вопрос по программе на тему: Массивы и указатели. Динамическое выделение памяти - C++

10.10.2009, 22:59. Просмотров 1148. Ответов 3
Метки нет (Все метки)

народ, очень прошу! пожалуйста!
Помогите решить задачку на тему: Массивы и указатели. Динамическое выделение памяти
Вот задача.
Объявить массив целых чисел и заполнить его случайными значениями. Размер массива и диапазон значений его элементов заданы ниже.

№ подзадачи - 1
Размерность массива -200
Диапазон значений -50 - 50
Что нужно сделать - Определить среднюю длину непрерывных участков положительных чисел

№ подзадачи - 2
Размерность массива 100
Диапазон значений -100 - 100
Что нужно сделать - Ограничить значения всех элементов, абсолютные значения которых превышают среднее для положительных и отрицательных элементов


Далее необходимо Выполнить задания с такими дополнительными условиями (тема: “Массивы и указатели. Динамическое выделение памяти”):
* размер массива определяется в начале выполнения программы, как случайное число в диапазоне 50-200;
* память под массив выделяется динамически, на этапе выполнения программы;
в тексте программы запрещается применять операцию индексации.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2009, 22:59     Вопрос по программе на тему: Массивы и указатели. Динамическое выделение памяти
Посмотрите здесь:

Указатели С++. Динамическое выделение памяти - C++
Не пойму, почему перед квадратными скобками нужна звездочка? int **memoryAddr = new int *; Звездочка при работе с указателями несет смысл...

Указатели и динамическое выделение памяти - C++
Нужно заполнить массив из 200 элементов числами на промежутке , и найти последовательность из 10 элементов у которых наибольшее срееднее...

Указатели и функции. Динамическое выделение памяти - C++
1) Напишите программу, которая позволяет вводить динамический одно-мерный целочисленный массив и посредством вызова функции опреде-лять...

Указатели, динамическое выделение памяти, работа с файлом - C++
Программа должна предоставлять возможность нескольким пользователям работать с числовыми данными. Сведения о пользователях должны храниться...

Указатели, связной список (Linked List) и динамическое выделение памяти - C++
Я вообще не понимаю как сделать. Ребят! Помогите, как сможете! /* Написать связной список используя структуры и функции Позволить...

Указатели, Динамическое выделение памяти, Ошибка invalid allocation size - C++
Есть задание: Есть решение: #include <stdio.h> #include <stdlib.h> #include <time.h> void func(int **a,int lines,int...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chel
0 / 0 / 0
Регистрация: 20.05.2008
Сообщений: 19
11.10.2009, 01:15  [ТС]     Вопрос по программе на тему: Массивы и указатели. Динамическое выделение памяти #2
вот что у меня вышлог.. подзадача 1
Код
#include "stdafx.h"
#include "iostream"
#include "iomanip"
#include "time.h"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	int *Ar;
	int *Cr;
	int v_min = -50, v_max = 100;
	int count = 0;
	int chain = 0;
	int size;

	srand(unsigned(time(NULL)));

	size = size = rand()%150+50;
	Ar = new int [size];
	
	for (Cr = Ar; Cr < Ar + size; Cr++){
		*Cr = rand()%v_max+v_min;
		cout<<setw(3)<<*Cr<<' ';		
	}

	///////// Ниже Обработка
	return 0; 
	getch();
}
подзадача 2
Код
#include "stdafx.h"
#include "iostream"
#include "iomanip"
#include "time.h"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	int *Ar;
	int *Cr;	
	int v_min = -100, v_max = 200;
	int min = v_min;	
	int size;

	srand(unsigned(time(NULL)));

	size = rand()%150+50;
	Ar = new int [size];
	
	for (Cr = Ar; Cr < Ar + size; Cr++){
		*Cr = rand()%v_max+v_min;		
		cout<<setw(3)<<*Cr<<' ';		
	}

	////// Ниже обработка
	return 0;
}
помогите плиз с обработкой!
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
11.10.2009, 10:21     Вопрос по программе на тему: Массивы и указатели. Динамическое выделение памяти #3
шибко на думал, можно и получше сделать, но в общих чертах так (задача 1)
компиляторы у нас разные, расскоментишь под свой
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
//#include "stdafx.h"
#include "iostream"
#include "iomanip"
#include "time.h"
// Определить среднюю длину непрерывных участков положительных чисел
using namespace std;
 
//int _tmain(int argc, _TCHAR* argv[])
int main()
{
    int *Ar;
    int *Cr;
    int v_min = -50, v_max = 100;
    int count = 0;
    int chain = 0;
    int lenghtChain=0;
    int size;
 
    srand(unsigned(time(NULL)));
 
    //size = size = rand()%150+50;  // зачем два раза size?
    size=10;
    Ar = new int [size];
 
    for (Cr = Ar; Cr < Ar + size; Cr++)
    {
        *Cr = rand()%v_max+v_min;
        cout<<setw(3)<<*Cr<<' ';        
    }
 
    ///////// Ниже Обработка
    for (Cr = Ar; Cr < Ar + size; Cr++)
    {
        if (*Cr>=0) 
            ++chain;        // если положительное инкрементируем длину цепочки
        else 
            if(chain)       // длина не 0
            {
                lenghtChain+=chain; // подсчёт общей длины положит послед.
                chain=0;    // обрываем цепочку, 
                ++count;  // увеличиваем счётчик цепочек
            }       
    }
 
    if(count)
        cout<<"\nmean lenght: "<<(double)lenghtChain/count<<endl;
    else
        cout<<"\nmean lenght: 0 "<<endl;
                 
    
 
//  return 0;  это странно, сначало обычно тормозят процесс, а потом возвращаются
//  getch();
 
    system("PAUSE");
    return 0;
}
Добавлено через 29 минут
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
//#include "stdafx.h"
#include "iostream"
#include "iomanip"
#include "time.h"
 
using namespace std;
 
// Ограничить значения всех элементов, абсолютные значения которых превышают среднее для //// положительных и отрицательных элементов
//int _tmain(int argc, _TCHAR* argv[])
int main()
{
    int *Ar;
    int *Cr;    
    int v_min = -100, v_max = 200;
    int min = v_min;    
    int size;
    int meanPositiv=0, meanNegativ=0, countPositiv=0, countNegativ=0;
    
 
    srand(unsigned(time(NULL)));
 
    size = rand()%150+50;
    size=6;
    Ar = new int [size];
 
    for (Cr = Ar; Cr < Ar + size; Cr++){
        *Cr = rand()%v_max+v_min;       
        cout<<setw(3)<<*Cr<<' ';        
    }
 
    // считаем среднее для положительных и отрицательных
    for (Cr = Ar; Cr < Ar + size; Cr++)
    {
        if(*Cr>=0)  {meanPositiv+=*Cr; ++countPositiv; }
        else                {meanNegativ+=*Cr; ++countNegativ; }
    }
    if (countPositiv)  meanPositiv/=countPositiv;
    if (countNegativ)  meanNegativ/=countNegativ;
 
    // выбираем максимальное среднее    
    // но без точности то есть делим без остатка и правильного округления
    if(meanPositiv<(-meanNegativ)) meanPositiv=-meanNegativ;
 
    // ограничиваем согласно условию
    for (Cr = Ar; Cr < Ar + size; Cr++)
    {
        // несовсем понятно чем ограничивать
        // ограничиваем meanPositiv с учётом знака
        if(*Cr>meanPositiv)      *Cr=meanPositiv;
        if(*Cr<(-meanPositiv)) *Cr=-meanPositiv;        
    }
 
    cout<<"\nResult (modul limit: "<<meanPositiv<<"): ";
    for (Cr = Ar; Cr < Ar + size; Cr++){
        cout<<setw(3)<<*Cr<<' ';        
    }
  cout<<endl;
    system("PAUSE");
    return 0;
}

!!! везде установил ограничитель размера последовательности - для отладки, закоментируй или увери его на ... совсем
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2009, 21:38     Вопрос по программе на тему: Массивы и указатели. Динамическое выделение памяти
Еще ссылки по теме:

Указатели, функции и динамическое выделение памяти: вывести строки с неповторяющимися данными - C++
Задана матрица A(n,n) ,n&lt;=15 . Написать программу, которая находит и выводит на экран номера тех строк, элементы которых не...

Динамическое выделение памяти, массивы - C++
Напишите программу, которая динамически выделяет память для переменной типа float, инициализируемого значением 3,0 и для массива из 15...

String в классе (конструктор): когда стоит применять указатели и динамическое выделение памяти? - C++
Добрый вечер всем. Я вот начал писать для себя одну программку по книжке Стэнли Липманна, в общем хочу понять кое-что: предположим, у меня...

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

Динамическое выделение памяти - C++
Имеется такая вот задача ! Нужно сделать что бы память выделялась динамически,а не на этапе компиляции!!! Какие будут предложения ??? ...

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


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

Или воспользуйтесь поиском по форуму:
Chel
0 / 0 / 0
Регистрация: 20.05.2008
Сообщений: 19
11.10.2009, 21:38  [ТС]     Вопрос по программе на тему: Массивы и указатели. Динамическое выделение памяти #4
TanT, спасибо большущее!
Yandex
Объявления
11.10.2009, 21:38     Вопрос по программе на тему: Массивы и указатели. Динамическое выделение памяти
Ответ Создать тему
Опции темы

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