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

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

Войти
Регистрация
Восстановить пароль
 
DiabloRossi
2 / 2 / 0
Регистрация: 09.02.2011
Сообщений: 49
#1

Упрощаем код и вносим замечания - C++

10.03.2011, 22:03. Просмотров 427. Ответов 8
Метки нет (Все метки)

Задание:
Дана последовательность из 100 различных целых чисел. Найти сумму чисел этой последовательности, расположенных между максимальным и минимальными числами (в сумму включить оба этих числа)
Рабочий вариант кода:
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
#define Max_Size 20
 
int main()
{
    int MassivOfNumber[Max_Size];
    int Min, Max, Summ;
    unsigned int i,j,k,temp;
    MassivOfNumber[0] = rand()%101 - 50;
    Max = Min = MassivOfNumber[0];
    Summ = 0;
    for (i=1; i<Max_Size; printf("%d ", MassivOfNumber[i]), ++i)
    {
        MassivOfNumber[i] = rand()%101 - 50;
        if (MassivOfNumber[i]>Max)
        {
            Max = MassivOfNumber[i];
            j = i;
        }
        if (MassivOfNumber[i]<Min)
        {
            Min = MassivOfNumber[i];
            k = i;
        }
    }
    printf("\nMax - %d, number of max - %d\nMin - %d, number of min - %d", Max, j, Min, k);
    if (k>j)
    {
        temp = j;
        j = k;
        k = temp;
    }
    for (k ; k<j+1; Summ+=MassivOfNumber[k], ++k);
    printf("\n%d", Summ);
    getch();
    return 0;
}

Прога работает без проблем.
Как можно реализовать ту же самую задачу, допустим, сократив число переменных, или кол-во кода..
Ну и вообще как можно сократить все это дело)
Слушаю ваши советы и комментарии)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2011, 22:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Упрощаем код и вносим замечания (C++):

Исправте! мною написанный код на более Грамотный.... или скажите замечания - PHP
if (isset($_REQUEST)) { /** =========== Change Login and Pass =============== */ if (isset($_REQUEST)) { if ($_REQUEST != &quot;New...

Упрощаем себе жизнь - Visual Basic .NET
Народ, вот нашел такой способ как в переменную вставить текст Dim d As String = &lt;Code&gt;1. Проверка 2. проверка 3. проверка&lt;/Code&gt; ...

Замечания - C#
Недавно начал осваивать с#. Сделал игру крестики-нолики. Хочу услышать замечания и пожелания. Буду очень благодарен. Проект прилагаю)

замечания по верстке - HTML, CSS
Посмотрите, пожалуйста, правильно ли сделана верстка http://web-portfolio1.narod.ru/index4/index.html, выскажите замечания.

Замечания по коду - Java EE
Здравствуйте! Можете посмотреть код, и написать замечания по нему...Я на Java пишу недавно.Хотелось бы выслушать замечания по коду или...

Замечания по сайту - HTML, CSS
Всем привет. Задали в универе, контрольную работу, сверстать сайт. Реализация сайта в HTML формате. Задание – создать статический...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
10.03.2011, 22:22 #2
Цитата Сообщение от DiabloRossi Посмотреть сообщение
100 различных целых чисел
Цитата Сообщение от DiabloRossi Посмотреть сообщение
Max_Size 20
это как???

Цитата Сообщение от DiabloRossi Посмотреть сообщение
Summ+=MassivOfNumber[k], ++k
можно так
Summ+=MassivOfNumber[k++]

Цитата Сообщение от DiabloRossi Посмотреть сообщение
printf("%d ", MassivOfNumber[i]), ++i
тоже самое
хотя я бы вынес
printf в тело цикла более читабельно и логично

Цитата Сообщение от DiabloRossi Посмотреть сообщение
k<j+1
k<=j

Добавлено через 5 минут
Цитата Сообщение от DiabloRossi Посмотреть сообщение
MassivOfNumber[0] = rand()%101 - 50;
Max = Min = MassivOfNumber[0];
Max = Min =-50(я так понимаю минимальное значение)
MassivOfNumber[0] = rand()%101 - 50;
в тело цикла
Цитата Сообщение от DiabloRossi Посмотреть сообщение
for (i=1; i<Max_Size; printf("%d ", MassivOfNumber[i]), ++i)
а нулевую ячейку не печатаешь??
0
DiabloRossi
2 / 2 / 0
Регистрация: 09.02.2011
Сообщений: 49
10.03.2011, 22:29  [ТС] #3
Цитата Сообщение от ValeryS Посмотреть сообщение

Max = Min =-50(я так понимаю минимальное значение)
MassivOfNumber[0] = rand()%101 - 50;
в тело цикла
Вот это слегка не понял)


А с нулевой ячейкой и правда оплошал)
все остальное пофиксил, благодарю)
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
10.03.2011, 23:03 #4
смотри в мин вводишь максимальное а в мах минимальные значения
цикл начинаешь не с 1 а с нуля
и в теле цикла инициализируешь все ячейки начиная с нулевой
поскольку мах самые малые значения
а мин самое большое
то при первой же проверке они инициализируются значением 0 ячейки

Добавлено через 34 секунды
Цитата Сообщение от DiabloRossi Посмотреть сообщение
Max = Min =-50
здесь я накосячил
0
DiabloRossi
2 / 2 / 0
Регистрация: 09.02.2011
Сообщений: 49
11.03.2011, 14:22  [ТС] #5
То, что цикл начинается с 1 я сегодня пофиксю)
Лучше подскажите кто-нить, почему rand()... выдает все время один и тотже рандом)
как сделать, чтобы рандомные числа были разными
0
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
11.03.2011, 14:38 #6
DiabloRossi, srand(unsigned(time(NULL))) + #include <time.h>
1
DiabloRossi
2 / 2 / 0
Регистрация: 09.02.2011
Сообщений: 49
11.03.2011, 20:03  [ТС] #7
Все спасибо, все пофиксил)
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
11.03.2011, 22:20 #8
Цитата Сообщение от DiabloRossi Посмотреть сообщение
почему rand()... выдает все время один и тотже рандом)
потому что гладиолус
нет такой вещи в мире генератор случайных чисел!(любое число случайно)
нет и не может быть ! есть генератор случайных последовательностей чисел.
приведу пример как меня учили
1,2,3,4,5
какая вероятность что следующее число будет 6 ??????
так вот все генераторы ПСЕВДОслучайных чисел(последовательностей) в любых языках программирования берут изначальное число и генерят последовательность
она не предсказуема(почти что)там у каждого свой алгоритм (простейшее умножить число PI на какое-то число и выдать дробную часть, следующим числом будет результат)
и получается что изначальное число одно и тоже последовательность хоть и не предсказуемая но всегда одна и та же.
для этого и придумана инициализация начального числа генератора
для С это srand а для того чтобы каждый раз по разному инициализируем его time
согласись вероятность что программу запустят в одно и тоже время очень мала
0
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.03.2011, 22:41 #9
Вот так еще можно.
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
#include <cstdlib>
#include <cstdio>
#include <ctime>
#include <vector>
#include <algorithm>
#include <numeric>
 
int RandomNumber() {
  return rand() % 101 - 50;
}
 
void Print(int value) {
  printf("%4d", value);
}
 
int main() {
  srand(time(NULL));
  std::vector<int> array(100);
  std::generate(array.begin(), array.end(), RandomNumber);
  std::for_each(array.begin(), array.end(), Print); printf("\n");
  std::vector<int>::iterator i, j;
  i = std::min_element(array.begin(), array.end());
  j = std::max_element(array.begin(), array.end());
  printf("Min: %d, max: %d.\n", *i, *j);
  if (i > j)
    std::swap(i, j);
  std::for_each(i, j, Print); printf("\n");
  int sum = std::accumulate(i, j, 0);
  printf("Sum %d\n", sum);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2011, 22:41
Привет! Вот еще темы с ответами:

Замечания по верстке - HTML, CSS
Посмотрите, пожалуйста, правильно ли сделана верстка http://web-portfolio1.narod.ru/index5/index.html, выскажите замечания. *Ссылки на...

Замечания по сборке - Рабочая станция
Всем доброго вечера. Решил обновить пк, но опыта не очень много, поэтому обращаюсь сюда. На данный момент вырисовывается такая сборка....

Есть ли замечания? - PHP
Доброго времени суток. Есть ли какие-либо замечания, по приведенному ниже коду. Буду очень рад конструктивной критике. Что нужно добавить,...

Замечания по верстке - HTML, CSS
Посмотрите, пожалуйста, правильно ли сделана верстка http://web-portfolio1.narod.ru/food/index.html, выскажите замечания.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.03.2011, 22:41
Ответ Создать тему
Опции темы

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