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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массивы, Помочь дописать код 
:(
    Опции темы
stargame
  Дата 16.3.2016, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сгенерировать и вывести на экран массив с 10 рандомных чисел от -50 до 50. Положительные элементы массива перенести в другой массив №1, а отрицательные в другой №2. 
#include "stdafx.h" 
#include <iostream> 
#include <conio.h> 
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int *mas, n;
    cout<< "n=";
    cin>> n;
    mas = new int[n];
    int positiv = 0, negativ = 0;
    for (int j = 0; j<n; j++)
    {
        mas[j] = rand() % 101 - 50;
        cout<< mas[j]<< " ";
        if (mas[j]<0)
            negativ++;
        if (mas[j]>0)
            positiv++;

    }
    int *mas_p = new int[positiv];
    int *mas_n = new int[negativ];
    
    _getch();

}
PM MAIL   Вверх
rudolfninja
Дата 16.3.2016, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

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



Вы код забыли полностью дописать.
Если вы этот код писали самостоятельно, то, в принципе, у вас не должно возникнуть проблем с дальнейшим решением задачи.
Еще я бы как-нибудь обработал ситуацию с нулевыми элементами.
В чем именно проблема?

Это сообщение отредактировал(а) rudolfninja - 16.3.2016, 21:18
PM MAIL Skype   Вверх
baldman88
Дата 16.3.2016, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Если про 0 в задании ничего не сказано, то вариант автора вполне имеет право на жизнь. Он же никакой  smile 
Во-первых, зачем вводить размерность массива? Она задана в задании (10). Во-вторых, зачем Вам указатели? В задании про них ни слова. Но если уж Вы их создаете, то сразу приучивайтесь их удалять (когда они становятся не нужны). Ну и импортировать пространства имен не есть хорошо (субъективное мнение). В результате должно получиться что-то вроде такого:
Код

#include "stdafx.h" 
#include <iostream> 
#include <conio.h> 
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int n = 10;
    int mas[n];
    int positiv = 0;
    int negativ = 0;
    cout << "Random numbers: ";
    for (int j = 0; j < n; j++)
    {
        mas[j] = rand() % 101 - 50;
        cout << mas[j] << " ";
        if (mas[j] < 0)
            negativ++;
        if (mas[j] > 0)
            positiv++;
    }
    cout << endl;
    int mas_p[positiv];
    int mas_n[negativ];
    positiv = 0;
    negativ = 0;
    for (int j = 0; j < n; j++)
    {
        if (mas[j] > 0)
            mas_p[positiv++] = mas[j];
        if (mas[j] < 0)
            mas_n[negativ++] = mas[j];
    }
    cout << "Positive numbers: ";
    for (int j = 0; j < positiv; j++)
        cout << mas_p[j] << " ";
    cout << endl;
    cout << "Negative numbers: ";
    for (int j = 0; j < negativ; j++)
        cout << mas_p[j] << " ";
    cout << endl;
    _getch();
}

Выглядит халтурно, но, по идее, должно работать. И еще вопрос, а разве инициализировать генератор случайных чисел не нужно?
PM MAIL   Вверх
disputant
Дата 18.3.2016, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(baldman88 @ 16.3.2016,  23:20)
Код

    int mas_p[positiv];
    int mas_n[negativ];


Как минимум это не должно сработать - размер массива должен быть известен во время компиляции...
PM MAIL   Вверх
dreindeimos
Дата 18.3.2016, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ошибка в размерах масива 
PM MAIL   Вверх
baldman88
Дата 18.3.2016, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Дык, на дворе уже 2016 год. Или для лабораторных работ строго-настрого запрещено пользоваться С++11?
И да, в 40-й строке mas_p нужно заменить на mas_n.
Если без С++11, то как-то так:
Код

#include "stdafx.h" 
#include <iostream> 
#include <conio.h> 
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int n = 10;
    int mas[n];
    int positiv = 0;
    int negativ = 0;
    cout << "Random numbers: ";
    for (int j = 0; j < n; j++)
    {
        mas[j] = rand() % 101 - 50;
        cout << mas[j] << " ";
        if (mas[j] < 0)
            negativ++;
        if (mas[j] > 0)
            positiv++;
    }
    cout << endl;
    int* mas_p = new int[positiv];
    int* mas_n = new int[negativ];
    positiv = 0;
    negativ = 0;
    for (int j = 0; j < n; j++)
    {
        if (mas[j] > 0)
            mas_p[positiv++] = mas[j];
        if (mas[j] < 0)
            mas_n[negativ++] = mas[j];
    }
    cout << "Positive numbers: ";
    for (int j = 0; j < positiv; j++)
        cout << mas_p[j] << " ";
    cout << endl;
    cout << "Negative numbers: ";
    for (int j = 0; j < negativ; j++)
        cout << mas_n[j] << " ";
    cout << endl;
    delete[] mas_p;
    delete[] mas_n;
    _getch();
}

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


Бывалый
*


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

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



Цитата(baldman88 @ 18.3.2016,  17:07)
Дык, на дворе уже 2016 год. Или для лабораторных работ строго-настрого запрещено пользоваться С++11?

Берем последний Visual C++ 2015.

Код
int main(int argc, const char * argv[])
{
    int mas[atoi(argv[1])];
}


Имеем: error C2131: выражение не определяется константой

Витая в эмпиреях, вы можете использовать распоследний стандарт, но компилировать вы будете на земле реальным компилятором...


PM MAIL   Вверх
baldman88
Дата 19.3.2016, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(disputant @ 18.3.2016,  21:18)
Берем последний Visual C++ 2015.
Имеем: error C2131: выражение не определяется константой

Витая в эмпиреях, вы можете использовать распоследний стандарт, но компилировать вы будете на земле реальным компилятором...

Искренне Вам сочувствую ... Свет не сошелся клином на поделиях MS.

Это сообщение отредактировал(а) baldman88 - 19.3.2016, 00:09
PM MAIL   Вверх
disputant
Дата 19.3.2016, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(baldman88 @ 19.3.2016,  00:09)
Цитата(disputant @ 18.3.2016,  21:18)
Берем последний Visual C++ 2015.
Имеем: error C2131: выражение не определяется константой

Витая в эмпиреях, вы можете использовать распоследний стандарт, но компилировать вы будете на земле реальным компилятором...

Искренне Вам сочувствую ... Свет не сошелся клином на поделиях MS.

А если вы по gcc -  так в нем, на котором, видимо, у вас свет сошшелся, это расширение было уже очень давно.

Если вам не трудно, приведите еще 2-3 примера компиляторов, которые это скомпилируют. Просто чтоб понимать, до какой степени отстой этот Microsoft, и что все остальные давно умеют делать такие стандартные вещи...

Забавно, что отстойный сайт http://en.cppreference.com/w/cpp/language/array утверждает, что даже с C++14 там должно быть константное выражение, известное во время компиляции...

P.S. Полез в стандарт - п. 8.3.4, 
In a declaration T D where D has the form
D1 [ constant-expressionopt] attribute-specifier-seqopt

Так что свет клином, надо понимать, и на стандарте не сошелся...


Это сообщение отредактировал(а) disputant - 19.3.2016, 19:01
PM MAIL   Вверх
baldman88
Дата 19.3.2016, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ваш ник говорит сам за себя  smile  Вы попросили назвать еще 2-3 примера компиляторов ... Давайте начнем с того, что я знаю всего 4 самых распространенных компилятора. Остальное, субъективно, это экзотика. Вычтем из этих четырех озвученные Вами gcc и vc. Остается всего 2. Из них clang точно поддерживает. За интеловский ничего не скажу.
Дальше идем по линии идеологии.
С++, по идее, является надстройкой над С . Смотрим в стандарт С99 ... (смотрят разработчики всех Нормальных компиляторов).
И да, эта дискуссия уже выходит далеко за рамки темы поста. Так что давайте не будем вдаваться в подробности.

Это сообщение отредактировал(а) baldman88 - 20.3.2016, 02:20
PM MAIL   Вверх
disputant
Дата 20.3.2016, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(baldman88 @ 19.3.2016,  20:48)
С++, по идее, является надстройкой над С . Смотрим в стандарт С99 ... (смотрят разработчики всех Нормальных компиляторов).
И да, эта дискуссия уже выходит далеко за рамки темы поста. Так что давайте не будем вдаваться в подробности.

Даже Страуструп пишет, что очень большая ошибка - считать С++ расширением языка C.

А посему - особенно в ответах для начинающих и для переносимости - я считаю, что нужно использовать стандарт, а любые от него отклонения документировать smile

Что до последнего пожелания... Считаю, что как раз начинающим будет полезнее рассказывать, пусть и не подробно, но со всей строгостью закона. Да, это обычно трудно, но - взялся за гуж...
PM MAIL   Вверх
_zorn_
Дата 20.3.2016, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

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



Цитата(disputant @  20.3.2016,  16:00 Найти цитируемый пост)
я считаю, что нужно использовать стандарт

А что такое "стандарт" ?
PM MAIL   Вверх
baldman88
Дата 20.3.2016, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(disputant @ 20.3.2016,  09:00)
я считаю, что нужно использовать стандарт

Это конечно хорошо, что Вы так сведущи в стандарте. Я подробно его не читал (кроме некоторых моментов). Но для работы я по максимуму пользуюсь удобствами, предоставляемыми инструментами, которыми я пользуюсь. Ну и по порядку:
Во-первых, в данном случае озвученный выше функционал предоставляют два кроссплатформенных компилятора. То, что windows-only msvc этого не поддерживает, делает его еще менее привлекательным для реального использования.
Во-вторых, я привел два рабочих решения. Почему я их привел? ТС привел кусок кода. Значит он где-то его взял (написал сам, помогли друзья-товарищи, дал преподователь и сказал сделать задание, указанное в топике, и т.д. и т.п.). Если ТС хоть немного разбирается вопросе, то он сам до всего дойдет. Если нет, то и приведенные решения ему не помогут.

Это сообщение отредактировал(а) baldman88 - 21.3.2016, 09:33
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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