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

Не работает признак окончания ввода(признак-0) - C++

Восстановить пароль Регистрация
 
okman
 Аватар для okman
15 / 21 / 1
Регистрация: 05.04.2013
Сообщений: 203
03.05.2013, 14:05     Не работает признак окончания ввода(признак-0) #1
Признак окончания ввода 0; подскажите люди добрые что не так?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include<stdio.h>
using namespace std;
int main(){
    setlocale(LC_ALL, "Russian");
    int const n=1000;
    int arr[n];
    int i=0,count=0,countr=0;
    cout<<"Введите последовательность чисел: ";
    while(arr[i]!=0){
        cin>>arr[i++];
    };
    for(i=0;i<n;i++){
      if(arr[i]<0) count++;
      if(arr[i]>0) countr++;
      };
    
    if(countr>count) cout<<"Знак меняется: "<<count<<" раз";
    else cout<<"Знак меняется: "<<countr<<" раз";
    system("pause>>void"); 
    return 0;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2013, 14:05     Не работает признак окончания ввода(признак-0)
Посмотрите здесь:

С клавиатуры вводятся целые числа. Признак конца ввода – 0. Определить количество минимальных значений., C++
признак конца ввода C++
С клавиатуры вводятся последовательность целых чисел 0 - признак окончания последовательности C++
C++ Признак окончания потока для буферного итератора
C++ Вводится последовательность символов. Признак конца ввода – точка. Посчитать количество символов не являющихся пробелами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
03.05.2013, 14:34     Не работает признак окончания ввода(признак-0) #2
очевидно по замыслу программиста
эта штука
C++
1
cin>>arr[i++];
должна быть
C++
1
cin>>arr[++i];
Добавлено через 2 минуты
единственное не понятно тогда как писать 0-вый элемент в этом хитром плане
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
03.05.2013, 14:59     Не работает признак окончания ввода(признак-0) #3
C++
1
2
3
 while(arr[i]!=0){
        cin>>arr[i++];
    };
замените на:

C++
1
2
3
4
do
{
cin >> arr[++i];
} while (arr[i - 1] != 0);
okman
 Аватар для okman
15 / 21 / 1
Регистрация: 05.04.2013
Сообщений: 203
03.05.2013, 15:01  [ТС]     Не работает признак окончания ввода(признак-0) #4
Цитата Сообщение от abit Посмотреть сообщение
очевидно по замыслу программиста
эта штука
C++
1
cin>>arr[i++];
должна быть
C++
1
cin>>arr[++i];
Добавлено через 2 минуты
единственное не понятно тогда как писать 0-вый элемент в этом хитром плане
спасибо, а вот не подскажешь почему у меня счетчик который при
C++
1
if(arr[i]>0) {count++;};
выводит трехзначное число? Ну то есть считает не ++. А --1000. то есть если два числа то он выведет 998
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
03.05.2013, 15:07     Не работает признак окончания ввода(признак-0) #5
okman, см. выше. Все дело в том, что первый элемент массива пропускается
okman
 Аватар для okman
15 / 21 / 1
Регистрация: 05.04.2013
Сообщений: 203
03.05.2013, 15:24  [ТС]     Не работает признак окончания ввода(признак-0) #6
Цитата Сообщение от nexen Посмотреть сообщение
C++
1
2
3
 while(arr[i]!=0){
        cin>>arr[i++];
    };
замените на:

C++
1
2
3
4
do
{
cin >> arr[++i];
} while (arr[i - 1] != 0);
вот так код вообще не работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main(){
    setlocale(LC_ALL, "Russian");
    int const n=1000;
    int arr[n];
    int i=0,count=0,countr=0;
    cout<<"Введите последовательность чисел: ";
    do{
    cin >> arr[++i];
    } while (arr[i-1] != 0);
    for(i=0;i<n;i++){
        if(arr[i]>0) {count++;};
        if(arr[i]<0) {countr++;}
      };
    cout<<"Положительных: "<<countr;
    cout << endl <<"Отрицательных: "<<count;
    
    system("pause>>void"); 
    return 0;
}
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
03.05.2013, 15:28     Не работает признак окончания ввода(признак-0) #7
okman,
вы так быстро меняете логику программы, что я даже не успеваю уследить

может быть так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main(){
    setlocale(LC_ALL, "Russian");
    int const n=1000;
    int arr[n];
    int i=0,ns,count=0,countr=0;
    cout<<"Введите последовательность чисел: ";
    do{
    cin >> arr[i++];
    } while (arr[i-1] != 0);
    ns=i;
    for(i=0;i<ns;i++){
        if(arr[i]>0) {count++;};
        if(arr[i]<0) {countr++;}
      };
    cout<<"Положительных: "<<countr;
    cout << endl <<"Отрицательных: "<<count;
    
    system("pause>>void"); 
    return 0;
}
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
03.05.2013, 15:29     Не работает признак окончания ввода(признак-0) #8
Цитата Сообщение от okman Посмотреть сообщение
вот так код вообще не работает
C++
1
    cin >> arr[++i];
Перепутал я. i++ поставьте
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2013, 15:31     Не работает признак окончания ввода(признак-0)
Еще ссылки по теме:

C++ Признак конц ввода (с клавиатуры)
Задача, на признак конца ввода C++
Бинарные файлы. Признак окончания файла C++

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

Или воспользуйтесь поиском по форуму:
okman
 Аватар для okman
15 / 21 / 1
Регистрация: 05.04.2013
Сообщений: 203
03.05.2013, 15:31  [ТС]     Не работает признак окончания ввода(признак-0) #9
Цитата Сообщение от abit Посмотреть сообщение
okman,
вы так быстро меняете логику программы, что я даже не успеваю уследить

может быть так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main(){
    setlocale(LC_ALL, "Russian");
    int const n=1000;
    int arr[n];
    int i=0,ns,count=0,countr=0;
    cout<<"Введите последовательность чисел: ";
    do{
    cin >> arr[i++];
    } while (arr[i-1] != 0);
    ns=i;
    for(i=0;i<ns;i++){
        if(arr[i]>0) {count++;};
        if(arr[i]<0) {countr++;}
      };
    cout<<"Положительных: "<<countr;
    cout << endl <<"Отрицательных: "<<count;
    
    system("pause>>void"); 
    return 0;
}
Да, точно, спасибо большое мужики. Все работает
Yandex
Объявления
03.05.2013, 15:31     Не работает признак окончания ввода(признак-0)
Ответ Создать тему
Опции темы

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