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

0 (не + и не -) - C++

Восстановить пароль Регистрация
 
Karfa
0 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 27
09.09.2013, 21:29     0 (не + и не -) #1
Необходимо чтобы 0 при заполнении массива не учитывался не в положительных, не в отрицательных числах массива. А задание было такое: Дан массив А(n). Все положительные его элементы поместить в начало массива В(n), а отрицательные элементы — в начало массива С(n). Подсчитать количество тех и других.
Помогите пожалуйста.
Вот мой код. Исправьте или подскажите как исправить.
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
#include "stdafx.h"
#include "iostream"
#include <math.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE, "rus");
    const int n=10;
    int masA[n]={1 , 2, 3, -5, -8, 0, 9, -1, 4, -7};
    int masB[10];
    int masC[10];
    int masD[10];
    int k=0,t=0,z=0,d=0;
    for(int i=0;i<n;i++)
    {
        if(masA[i]==0)
        {
            masD[d]=masA[i];
        }
        if(masA[i]<0)
        {
            masB[k]=masA[i];
            k++;
        }
        else
        {
            masC[t]=masA[i];
            t++;
        }
    }
    cout<<"Число положительных элементов:"<<k<<endl;
    cout<<"Число отрицательных элементов:"<<t<<endl;
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
09.09.2013, 22:47     0 (не + и не -) #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if(masA[i]==0)
        {
            masD[d]=masA[i];
        }
        if(masA[i]<0)
        {
            masB[k]=masA[i];
            k++;
        }
        else if(masA[i]>0)
        {
            masC[t]=masA[i];
            t++;
        }
else к <0 -> >=0, поэтому требуется уточнение. А лучше вообще так:
Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
if(masA[i]<0)
{
masB[k]=masA[i];
k++;
}
else if(masA[i]>0)
{
masC[t]=masA[i];
t++;
}
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
10.09.2013, 09:42     0 (не + и не -) #3
небольшой совет по этой строчке
Цитата Сообщение от Karfa Посмотреть сообщение
int k=0,t=0,z=0,d=0;
названия переменным лучше давать более осмысленные, чтоб по одному взгляду на них, можно было понять к чему они относятся. Например так:

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
#include <iostream>
using namespace std;
 
int main()
{
    const int n=10;
    int masA[n] = {1 , 2, 3, -5, -8, 0, 9, -1, 4, -7},  iA=0;
    int masB[n] = {},  iB=0;
    int masC[n] = {},  iC=0;
    int masD[n] = {},  iD=0;
 
    for (int i=0; i<n; i++)
    {
        if (masA[i]<0)          masC[iC++] = masA[i];
        else if (masA[i]==0)    masD[iD++] = masA[i];
        else                    masB[iB++] = masA[i];
    }
 
    cout << "Число положительных элементов: " << iB << endl;
    cout << "Число отрицательных элементов: " << iC << endl;
    cout << "Число нулевых элементов:       " << iD << endl;
 
    return 0;
}
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
10.09.2013, 12:58     0 (не + и не -) #4
Тогда уж и не B, C, D, а positive, ... Ну ты понял)
Yandex
Объявления
10.09.2013, 12:58     0 (не + и не -)
Ответ Создать тему
Опции темы

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