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

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

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

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

07.05.2014, 21:52. Просмотров 184. Ответов 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++
Даны два массива. Определите все серии подряд идущих элементов из первого массива (серия может состоять и из одного элемента), каждая из...

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

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

Ввод и вывод массива целых чисел Вычислить сумму модулей элементов массива,располроженных после первого отрицательного - C++
Очень срочно,помогите пожалуйста,чем быстрее - тем лучше=) Ввод и вывод массива целых чисел.задания оформить в виде функции,глобальные...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Сообщений: 770
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
Сообщений: 770
08.05.2014, 08:46  [ТС]     Не предлагается ввод второго массива #6
никто не поможет?
nmcf
5113 / 4433 / 1474
Регистрация: 14.04.2014
Сообщений: 17,571
08.05.2014, 09:06     Не предлагается ввод второго массива #7
Потому что cin у тебя не good ко второму случаю. Как вообще пришла идея оканчивать цикл ввода неправильным значением?
И при расширении массива зачем ты создаёшь его копию, а потом с неё переносишь? Создал новый, скопировал из старого, стрый удалил, новый присвоил, всё.
mh-coder
24 / 23 / 3
Регистрация: 01.02.2014
Сообщений: 770
08.05.2014, 10:09  [ТС]     Не предлагается ввод второго массива #8
а почему cin не good ко второму случаю? как сделать чтобы был гуд?
nmcf
5113 / 4433 / 1474
Регистрация: 14.04.2014
Сообщений: 17,571
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++
Люди добрые, объясните мне где я туплю. Нашел программу, все работает как надо. #include &lt;iostream&gt; #include &lt;stdio.h&gt; #define N...

Найти среднее арифметическое второго столбца массива - C++
Нужно найти среднее арифметическое второго столбца массива. Что-то написал, все работает, но ответ не верный. void main() { ...

Выяснить, имеются ли элементы второго массива в первом - C++
На русском: Даны два одномерных массива размерами n и k соответственно. Выяснить, имеются ли элементы второго массива в первом. Если...

Найти наибольший элемент второго столбца двумерного массива - C++
2) Дан двумерный массив в котором необходимо найти наибольший элемент второго столбца.


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

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

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