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

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

Восстановить пароль Регистрация
 
mh-coder
24 / 23 / 2
Регистрация: 01.02.2014
Сообщений: 717
07.05.2014, 21:52     Не предлагается ввод второго массива #1
Есть код, 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++ указать индекс второго массива, при котором оба массива перестают совпадать
C++ Получить третий массив C[15] по правилу: вначале элементы первого массива, затем элементы второго массива
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 / 2
Регистрация: 01.02.2014
Сообщений: 717
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 / 2
Регистрация: 01.02.2014
Сообщений: 717
08.05.2014, 08:46  [ТС]     Не предлагается ввод второго массива #6
никто не поможет?
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,580
08.05.2014, 09:06     Не предлагается ввод второго массива #7
Потому что cin у тебя не good ко второму случаю. Как вообще пришла идея оканчивать цикл ввода неправильным значением?
И при расширении массива зачем ты создаёшь его копию, а потом с неё переносишь? Создал новый, скопировал из старого, стрый удалил, новый присвоил, всё.
mh-coder
24 / 23 / 2
Регистрация: 01.02.2014
Сообщений: 717
08.05.2014, 10:09  [ТС]     Не предлагается ввод второго массива #8
а почему cin не good ко второму случаю? как сделать чтобы был гуд?
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,580
08.05.2014, 13:03     Не предлагается ввод второго массива #9
Ты в своей программе разобраться не можешь? У тебя условие окончания ввода - это ввод неверного значения, которое не конвертируется в int.
Чтобы было good, надо придумать нормальный способ окончания ввода.
Ну если так хочется, можешь попробовать cin.clear(); перед вторым фрагментом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2014, 15:56     Не предлагается ввод второго массива
Еще ссылки по теме:

C++ Заполнить каждый элемент массива наибольшим по модулю элементо соответствующей строки второго
C++ Найти наибольший элемент второго столбца двумерного массива

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

Или воспользуйтесь поиском по форуму:
mh-coder
24 / 23 / 2
Регистрация: 01.02.2014
Сообщений: 717
08.05.2014, 15:56  [ТС]     Не предлагается ввод второго массива #10
cin.clear(); - не помогает, я непойму почему вдруг проверка условия cin.good() влияет на дальнейшие вводы? чёза бред
Yandex
Объявления
08.05.2014, 15:56     Не предлагается ввод второго массива
Ответ Создать тему
Опции темы

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