Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Александраа123
0 / 0 / 6
Регистрация: 31.10.2013
Сообщений: 73
#1

При вводе нуля,программа не правильно работает - C++

22.12.2013, 22:33. Просмотров 349. Ответов 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
#include "stdafx.h"
#include <iostream> 
using namespace std; 
void main() 
{ 
    setlocale(0,""); //Установлена поддержка всех языков
   
    unsigned int c=0;//Объявлены без знаковые переменные.
    int f=-2,l=-1,m[10];//Объявлены знаковые переменные.
   
    
    for(int i=0;i<10;i++) //Цикл на ввод элементов массива.
    {
        cout<<i+1<<"-й элемент - ";//На экран выведено сообщение i+1"-й элемент - "
        cin>>m[i];//Вводим с клавиатуры значение элемента
    }
    for(int i=0;i<m[10];i++)//Цикл нахождения первого нуля.
        if(m[i]==0)
        {
            f=i;
            cout <<"f="<<i <<endl;
            break;
        }
    for(int i=9;i>=0;i--)//Цикл нахождения последнего нуля.
        if(m[i]==0)
        {
            l=i;
            cout <<"l="<<i <<endl;
            break;
        }
    
    if(f==l)//Проверка совпадают ли номера первого и последнего нуля.
        cout<<"В массиве один ноль.";//Если да вывести сообщение "В массиве один ноль."
    else
            if(f==-2 && l==-1)//Если нет проверить равны ли эти переменные стандартным значениям
        cout<<"В массиве нет нулей.";//Если да вывести сообщение "В массиве нет нулей."
    else//Если и это условие не правдиво
    {
        cout<<"Четные числа: ";//Вывести на экран сообщение "Четные числа: "
        for(int i=f+1;i<l;i++)//Цикл вывода четных чисел
        {
            if(m[i]%2==0)//Если элемент при делении на 2 дает остаток 0
            {
                
                c++;//И увеличить счетчик четных чисел.
    
            }
            if(i==l-1 && c==0)//Если это последняя итерация цикла, а счетчик положительных элементов все еще равен 0.
                cout<<"Четных чисел нет.";//Вывести сообщение "Четных чисел нет."
        }
 
    }
 if (c>0)
  cout <<c;
    system("pause");//Остановить выполнение программы до нажатия клавиши
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2013, 22:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос При вводе нуля,программа не правильно работает (C++):

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл?
void mainmenu() { cout &lt;&lt; &quot;Введи число&quot; &lt;&lt; endl; cin &gt;&gt; choice; if (choice...

Возникает ошибка в программе при вводе нуля
Нажимаю 0 возникает ошибка в программе , хотя компилятор молчит. #include...

Завершить игровой цикл при вводе нуля
Задание. Создать программу со структурой player. Структура должна содержать...

Почему при вводе элементов массива, программа прекращает работу или работает не так, как ожидается?
При вводе элементов массива, программа прекращает работу или не правильно...

Найти количество наборов не являющихся знакочередующимися. Ошибка при вводе нуля
Дано K наборов ненулевых целых чисел. Найти количество наборов не являющихся...

При ограничении размерности, программа работает правильно
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { const int H=4; ...

2
DmitryM5
Love~
52 / 52 / 23
Регистрация: 27.08.2013
Сообщений: 940
Записей в блоге: 1
23.12.2013, 10:04 #2
Цитата Сообщение от Александраа123 Посмотреть сообщение
В целочисленном массиве найти количество четных чисел, рас-положенных между первым и последним нулевыми числами этого мас-сива.
Предусмотреть случаи, когда нет нулей, нуль единственный, нет четных чисел между первым и последним нулевыми числами, и вывести соответствующий текст.

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
#include "stdafx.h"
#include <iostream> 
using namespace std; 
void main() 
{ 
    setlocale(0,""); //Установлена поддержка всех языков
   
    unsigned int c=0;//Объявлены без знаковые переменные.
    int f=-2,l=-1,m[10];//Объявлены знаковые переменные.
   
    
    for(int i=0;i<10;i++) //Цикл на ввод элементов массива.
    {
        cout<<i+1<<"-й элемент - ";//На экран выведено сообщение i+1"-й элемент - "
        cin>>m[i];//Вводим с клавиатуры значение элемента
    }
    for(int i=0;i<m[10];i++)//Цикл нахождения первого нуля.
        if(m[i]==0)
        {
            f=i;
            cout <<"f="<<i <<endl;
            break;
        }
    for(int i=9;i>=0;i--)//Цикл нахождения последнего нуля.
        if(m[i]==0)
        {
            l=i;
            cout <<"l="<<i <<endl;
            break;
        }
    
    if(f==l)//Проверка совпадают ли номера первого и последнего нуля.
        cout<<"В массиве один ноль.";//Если да вывести сообщение "В массиве один ноль."
    else
            if(f==-2 && l==-1)//Если нет проверить равны ли эти переменные стандартным значениям
        cout<<"В массиве нет нулей.";//Если да вывести сообщение "В массиве нет нулей."
    else//Если и это условие не правдиво
    {
        cout<<"Четные числа: ";//Вывести на экран сообщение "Четные числа: "
        for(int i=f+1;i<l;i++)//Цикл вывода четных чисел
        {
            if(m[i]%2==0)//Если элемент при делении на 2 дает остаток 0
            {
                
                c++;//И увеличить счетчик четных чисел.
    
            }
            if(i==l-1 && c==0)//Если это последняя итерация цикла, а счетчик положительных элементов все еще равен 0.
                cout<<"Четных чисел нет.";//Вывести сообщение "Четных чисел нет."
        }
 
    }
 if (c>0)
  cout <<c;
    system("pause");//Остановить выполнение программы до нажатия клавиши
}
Попробуйте так:
C++
1
for(int i=0;i<10;i++)//Цикл нахождения первого нуля.
1
ShadowFirst
55 / 48 / 13
Регистрация: 31.10.2013
Сообщений: 164
23.12.2013, 11:26 #3
К вышесказанному могу еще добавить то, что строчку:
C++
1
2
if(i==l-1 && c==0)//Если это последняя итерация цикла, а счетчик положительных элементов все еще равен 0.
                cout<<"Четных чисел нет.";//Вывести сообщение "Четных чисел нет."
нужно вынести за придел цикла и сравнивать только счетчик с нулем, это будет рациональней.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2013, 11:26
Привет! Вот еще темы с решениями:

Почему при умножении на 0, программа работает правильно?
Операции ввода, такие, как cin, должны уметь преобразовывать последо-...

Ввод чисел, при вводе нуля - вывод количества цифр, идущих по порядку
Задача: пользователь вводит числа, при вводе нуля необходимо вывести кол-во...

Найти максимимальний элемент в массиве (введение элементов массива заканчивается при вводе нуля )
Всем привет. нужна помощь. надо написать программу , которая находит...

Программа работает правильно, но при выводе появляются лишние цифры
Программа реализует метод Гаусса с выбором главного элемента по столбцу. Все...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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