Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Александраа123
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 73
#1

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

22.12.2013, 22:33. Просмотров 327. Ответов 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++):

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

Завершить игровой цикл при вводе нуля - C++
Задание. Создать программу со структурой player. Структура должна содержать поля level - для сохранения уровня игрока (начальное...

Возникает ошибка в программе при вводе нуля - C++
Нажимаю 0 возникает ошибка в программе , хотя компилятор молчит. #include &lt;iostream&gt; using namespace std; struct d; d* head =...

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

Найти количество наборов не являющихся знакочередующимися. Ошибка при вводе нуля - C++
Дано K наборов ненулевых целых чисел. Найти количество наборов не являющихся знакочередующимися. #include &lt;iostream&gt; #include...

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

2
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 864
Записей в блоге: 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 / 1
Регистрация: 31.10.2013
Сообщений: 161
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, программа работает правильно? - C++
Операции ввода, такие, как cin, должны уметь преобразовывать последо- вательность символов в число. Напишите программу, которая позволяет...

Ввод чисел, при вводе нуля - вывод количества цифр, идущих по порядку - C++
Задача: пользователь вводит числа, при вводе нуля необходимо вывести кол-во чисел, которые шли по порядку(например: 2867524560 --&gt;...

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

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


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

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

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