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

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

Войти
Регистрация
Восстановить пароль
 
mh-coder
24 / 23 / 3
Регистрация: 01.02.2014
Сообщений: 779
#1

Не предлагается ввод второго массива - C++

07.05.2014, 21:52. Просмотров 185. Ответов 9
Метки нет (Все метки)

Есть код, 2 задания, вводятся числа, подсчитывается минимальное число и максимальное, пото мсновва вводятся числа, и подсчитывается количество отривательных чисел, проблема в том что доходя до второго задания ввод чисел не предлагается и я немогу понять почему

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
 
void write_the_text(string text){
 
    for (int i = 0; i < text.length(); i++)
    {
        cout<<text[i];
        //Sleep(50);
    }
}
 
void plus_int_array(int *& _array,int &_array_len ){
 
    if(_array_len == 0) {
        delete[] _array;
        _array = new int[_array_len+1];
        _array_len++;
    }else{
 
        int *time_array = new int[_array_len];
 
        for (int i = 0; i < _array_len; i++)
        {
            *(time_array+i) = *(_array+i);
        }
 
        delete[]_array;
        _array = new int[_array_len+1];
 
        for (int i = 0; i < _array_len; i++)
        {
            *(_array+i) = *(time_array+i);
        }
 
        _array_len++;
        delete[]time_array;
    }
 
}
 
 
 
int min_or_max_array(int *_array,int length,string whot) {
 
    int max = 0;
    int min = _array[0];
    for (int i = 0; i < length; i++)
    {
        if(whot == "min"){
 
            if(_array[i] < min ) {
                min = _array[i];
            }
 
        }else{
 
            if(_array[i] > max ) {
                max = _array[i];
            }
        }
 
    }       
 
    if(whot == "min"){
        return min;
    }else{
        return max;
    }
    
}
 
void main(){
    setlocale(LC_ALL,"Rus");
    string text = "";
    int array_len = 1;
    int *numbers = new int[array_len];
    int i = 0;
 
 
 
    text = "\n\n1.  Знайти максимальне та мінімальне  ціле число із необмеженої послідовності введеної з клавіатури (довжина послідовності необмежена, для завершення вводу введіть нуль).\n\n";
write_the_text(text);
 
 
    i = 0;
    cout<<"Please write the number, if you end write, enter the any letter\n";
    while(true) {
        
    cin>>numbers[i];
    
    if(!cin.good())
        {
            numbers[i] = numbers[i-1];
            break;
        }else{
 
    i++;
    plus_int_array(numbers,array_len);
    }
    }
 
 
 
 
 
    cout<<" minimum number "<<min_or_max_array(numbers,array_len,"min");
cout<<" \nmaximum number "<<min_or_max_array(numbers,array_len,"max");
 
 
 
text = "\n\n2.  Визначити кількість від‘ємних цілих чисел у необмеженій послідовності, яка введена з клавіатури (довжина послідовності необмежена, для завершення вводу введіть нуль).\n\n";
    write_the_text(text);
 
    array_len = 1;
    delete[]numbers;
    numbers = new int[array_len];
    i = 0;
    cout<<"Please write the number, if you end write, enter the any letter\n";
    while(true) {
        
    cin>>numbers[i];
    
    if(!cin.good())
        {
            numbers[i] = numbers[i-1];
            break;
        }else{
 
    i++;
    plus_int_array(numbers,array_len);
    }
    }
 
 
        int minus_count = 0;
        for (int i = 0; i < array_len; i++)
        {
            if( numbers[i] < 0 ){ minus_count++; }
        }
        cout<<" "<<minus_count<<" \n";
 
    
system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2014, 21:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не предлагается ввод второго массива (C++):

ввод двумерного массива,ввод размерности массива,заполнение массива случайными числами - C++
#include &quot;stdafx.h&quot; #include &quot;locale.h&quot; #include &quot;stdlib.h&quot; #include &quot;math.h&quot; void main() { setlocale(LC_ALL,&quot;rus&quot;); int...

Файловый ввод-вывод, ввод с клавиатуры и обработка массива структур - C++
Добрый вечер)) У меня небольшой вопрос. Почему первые буквы (в названии книг) не выводит на экран? Само задание: О каждой книге ...

Удаление из одного массива элементов второго массива и запись результата в третий - C++
Есть массив masA (длина lenA), есть массив masB (длина lenB). Необходимо из массива masA удалить элементы, входящие в массив masB и...

указать индекс второго массива, при котором оба массива перестают совпадать - C++
Даны два массива, они упорядочены и надо указать индекс второго массива при котором оба массива перестают совпадать. Например: ...

Ввести два одномерных массива и заменить нулями те элементы второго массива, которые есть в первом - C++
Ввести два одномерных массива и заменить нулями те элементы второго массива, которые есть в первом

Массив: Определите все серии подряд идущих элементов из первого массива, совпадающие с сериями второго массива - C++
Даны два массива. Определите все серии подряд идущих элементов из первого массива (серия может состоять и из одного элемента), каждая из...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Myptuk
1 / 1 / 0
Регистрация: 01.05.2013
Сообщений: 43
07.05.2014, 22:06 #2
C++
1
2
3
4
for (int i=0; i< array_len; i++)
{
delete numbers[i];
}
как то так вроде, смысл в том что вы удаляете массив а значения могут остаться. я думаю в этом проблема. или как вариант можете использовать разные массивы.
mh-coder
24 / 23 / 3
Регистрация: 01.02.2014
Сообщений: 779
07.05.2014, 22:13  [ТС] #3
эм, а что - то за кусок кода? у меня такого нет, попробовал разние массивы, эффект тотже
Myptuk
1 / 1 / 0
Регистрация: 01.05.2013
Сообщений: 43
07.05.2014, 22:15 #4
119 строку так записал, но если уж разные массивы не работают, то не в этом дело...
IrineK
08.05.2014, 01:59
  #5

Не по теме:

Цитата Сообщение от mh-coder Посмотреть сообщение
the any letter
Синяк мозга.

mh-coder
24 / 23 / 3
Регистрация: 01.02.2014
Сообщений: 779
08.05.2014, 08:46  [ТС] #6
никто не поможет?
nmcf
5309 / 4629 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
08.05.2014, 09:06 #7
Потому что cin у тебя не good ко второму случаю. Как вообще пришла идея оканчивать цикл ввода неправильным значением?
И при расширении массива зачем ты создаёшь его копию, а потом с неё переносишь? Создал новый, скопировал из старого, стрый удалил, новый присвоил, всё.
mh-coder
24 / 23 / 3
Регистрация: 01.02.2014
Сообщений: 779
08.05.2014, 10:09  [ТС] #8
а почему cin не good ко второму случаю? как сделать чтобы был гуд?
nmcf
5309 / 4629 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
08.05.2014, 13:03 #9
Ты в своей программе разобраться не можешь? У тебя условие окончания ввода - это ввод неверного значения, которое не конвертируется в int.
Чтобы было good, надо придумать нормальный способ окончания ввода.
Ну если так хочется, можешь попробовать cin.clear(); перед вторым фрагментом.
mh-coder
24 / 23 / 3
Регистрация: 01.02.2014
Сообщений: 779
08.05.2014, 15:56  [ТС] #10
cin.clear(); - не помогает, я непойму почему вдруг проверка условия cin.good() влияет на дальнейшие вводы? чёза бред
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2014, 15:56
Привет! Вот еще темы с ответами:

Получить третий массив C[15] по правилу: вначале элементы первого массива, затем элементы второго массива - C++
Даны массивы A, B. Нужно получить третьи массив C состоящий: вначале элементы первого массива, затем элементы второго массива.

Открытые функции класса: ввод массива, вывод массива, определение длины вектора - C++
Данные класса: массив N(10). Открытые функции класса: ввод массива, вывод массива, определение длины вектора. Длина массива определяется...

Нужно написать функцию которая будет увеличевать каждый элеммент массива на 10% (Ввод массива через клаву) - C++
#include &lt;iostream&gt; #define n 7 using namespace std ; int funct(int q) { funct=q*10% ; } int main () { int a; ...

Написать программу, которая вычисляет сумму элементов двумерного массива по столбцам. Организовать ввод массива с клавиатуры по строкам - C++
Написать программу, которая вычисляет сумму элементов двумерного массива по столбцам. Организовать ввод массива с клавиатуры по строкам.


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

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

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