Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> одномерный числовой массив, создал код, но что-то не так 
:(
    Опции темы
tisit
  Дата 29.3.2015, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.12.2014

Репутация: нет
Всего: нет



Задание:
Если в массиве сумма нечетных по значениям элементов кратна заданному n, 
раскрасить зеленым цветом при выводе элементы, кратные заданному n.

Код

#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include <ctime>

// Заполняет массив arr случайными числами в диапазоне от [from, to)
// Входные данные:
//    arr - массив для заполнения случайными числами
//    n - размерность массива
//    from - начало диапазона (случайных чисел)
//    to - конец диапазона (случайных чисел)
// Выходные данные:
//    arr - массив заполненый случайными числами
void fillArrayRandomNumber(int *&arr, int n, int from, int to){
    std::srand(std::time(0));
    for(int i = 0; i < n; i++){
        arr[i] = std::rand() % abs(to - from) + from;
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    int n = 0;
    int sum = 0;
    int *arrayInput = (int*)malloc(sizeof(int));

    printf("Input size array:\nN = ");
    scanf("%d", &n);
    // Выделим память, заданную с клавиатуры
    arrayInput = (int*)realloc(arrayInput, n * sizeof(int));
    // Заполняем массив случайными числами
    fillArrayRandomNumber(arrayInput, n, 0, 10);

    printf("Printf random array:\n");
    for(int i = 0; i < n; i++){
        printf("%d  ", arrayInput[i]);
    }

    // Считаем сумму нечетных по значениям элементов массива
    for(int i = 0; i < n; i++){
        // Если текущий элемент нечетный,
        if(arrayInput[i] % 2 != 0){
            sum += arrayInput[i];        // то добавляем его к сумме
        }
    }
    printf("\nSumma = %d\n", sum);

    // Если сумма кратна n
    if(sum % n) 
        printf("The sum is a multiple of N\n");    
    else 
        printf("The sum is not a multiple of N\n");

    system("pause");
    return 0;
}

Второе задание:
определить в одномерном числовом массиве наибольшее количество последовательно расположенных положительных элементов.
код
Код

#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include <math.h>
#include <ctime>

// Заполняет массив arr случайными числами в диапазоне от [from, to)
// Входные данные:
//    arr - массив для заполнения случайными числами
//    n - размерность массива
//    from - начало диапазона (случайных чисел)
//    to - конец диапазона (случайных чисел)
// Выходные данные:
//    arr - массив заполненый случайными числами
void fillArrayRandomNumber(int *&arr, int n, int from, int to){
    std::srand(std::time(0));
    for(int i = 0; i < n; i++){
        arr[i] = std::rand() % abs(to - from) + from;
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    int n = 0;
    int count = 0, countArr = 0;    // Счетчик последовательностей, размерность для массива maxElement
    // Массив для хранения рандомных значений
    int *arrayInput = (int*)malloc(sizeof(int));    
    // Массив для хранения максимальных последовательностей пол. элементов
    int *maxElement = (int*)malloc(sizeof(int));    

    printf("Input size array:\nN = ");
    scanf("%d", &n);
    // Выделим память, заданную с клавиатуры
    arrayInput = (int*)realloc(arrayInput, n * sizeof(int));
    // Заполняем массив случайными числами
    fillArrayRandomNumber(arrayInput, n, -10, 10);

    printf("Printf random array:\n");
    for(int i = 0; i < n; i++){
        printf("%d  ", arrayInput[i]);
    }

    // Найдем массив максимальных значений последовательностей пол. элементов
    for(int i = 0; i < n; i++){
        if(arrayInput[i] > 0) count++;
        else{
            // Перевыделяем память для массива
            maxElement = (int*)realloc(maxElement, (countArr + 1) * sizeof(int));
            maxElement[countArr++] = count;
            count = 0;
        }
    }

    // Определим наибольшее кол-во последоваетльно расположенных положительных элеметов
    int max = 0;
    if(countArr != 0){
        max = maxElement[0];
        for(int i = 0; i < countArr; i++){
            if(max < maxElement[i]) max = maxElement[i];
        }
    }
    else max = count;
    printf("\nMax number posledovatel'no = %d\n", max);
    
    system("pause");
    return 0;
}

PM MAIL   Вверх
feodorv
Дата 29.3.2015, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Какой красивый код. Он написан Вами? Половина кода на C++, половина на C, своеобразно.

Цитата(tisit @  29.3.2015,  19:45 Найти цитируемый пост)
но что-то не так

Что именно? 


А точно размерность массива должна совпадать с "заданным n"?


Цитата(tisit @  29.3.2015,  19:45 Найти цитируемый пост)
    // Если сумма кратна n
    if(sum % n) 
        printf("The sum is a multiple of N\n");    

Тут все наоборот, if(sum % n) означает, что остаток от деления не равен нулю, следовательно, "sum is not a multiple of N".


Окраска в зеленый цвет - это бред. Давайте уж тогда заодно болдом и италиком, чего стесняться то.


Прием
Цитата(tisit @  29.3.2015,  19:45 Найти цитируемый пост)
    int *arrayInput = (int*)malloc(sizeof(int));
    arrayInput = (int*)realloc(arrayInput, n * sizeof(int));

так же своеобразен, почему не сразу 
Код

    int *arrayInput;
    arrayInput = (int *) malloc( arrayInput, n * sizeof(int));

???



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.