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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массивы http://www.cyberforum.ru/cpp-beginners/thread55640.html
Задано несколько массивов меток . Удалить парные массивы.
C++ Используя стек ,переписать строку посимвольно в обратном порядке Используя стек ,переписать строку посимвольно в обратном порядке!!!!!!!!!!! http://www.cyberforum.ru/cpp-beginners/thread55624.html
C++ Коммивояжер (бродячий торговец)
Ребят, помогите с реализацией задачи о коммивояжере, желательно простое решение полным перебором: потому как, входные данные будут больше не больше 10 городов, а 9! - вполне решабильно. У меня есть...
Нарушения прав доступа при записи(не в файл). C++
Вот такая проблемка есть: char* ret=""; __asm { lea esi,ret; mov eax,0x34; inc esi; mov ret,eax };
C++ Объявление переменной http://www.cyberforum.ru/cpp-beginners/thread55597.html
Два вопроса: 1) Чем отличается запись: int a = 10; От: int a(10); 2) Что обозначает данная запись: int *a = new int (3); *a = 2;
C++ NULL Здравствуйте!!! Может кто-нибудь знает для чего служит на с++ ключевое слово(оператор) NULL ?? Покажите пожалуйста несколько примеров для его использования?? подробнее

Показать сообщение отдельно
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
11.10.2009, 10:21
шибко на думал, можно и получше сделать, но в общих чертах так (задача 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;
}

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