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

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

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

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

10.10.2009, 22:59. Просмотров 1121. Ответов 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++
Динамическое выделение памяти new C++
C++ Указатели и функции. Динамическое выделение памяти
C++ Указатели и динамическое выделение памяти
C++ Динамическое выделение памяти
Файлы,массивы и динамическое выделение памяти.Непонятная ошибка в коде. C++
Указатели, функции и динамическое выделение памяти: вывести строки с неповторяющимися данными C++
Указатели, Динамическое выделение памяти, Ошибка invalid allocation size C++
C++ Указатели С++. Динамическое выделение памяти
C++ Динамическое выделение памяти, массивы
Указатели, связной список (Linked List) и динамическое выделение памяти C++
String в классе (конструктор): когда стоит применять указатели и динамическое выделение памяти? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
эволюционирую потихоньку
464 / 462 / 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;
}

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

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