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

C для начинающих

Войти
Регистрация
Восстановить пароль
 
HON3Y
0 / 0 / 0
Регистрация: 12.01.2014
Сообщений: 48
#1

Нужно чтобы при вводе числа 0 программа завершала работу - C (СИ)

12.01.2014, 23:28. Просмотров 759. Ответов 13
Метки нет (Все метки)

Привет всем.Это моя первая тема
У меня такая проблема,задание я сделал но вот не до конца.Нужно чтобы при вводе числа 0 программа завершала работу,я понимаю что надо использовать оператор break,но не понимаю где его тут использовать для переменной M.Подскажите пожалуйста куда подставить break ?
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
#include <stdio.h>
#include <conio.h>
main()
{
int j,N,M,S;
printf("Enter number M\n");
scanf("%d",&M);
N=4;
{
while(N<=M)
{ S=1;j=2;
   while(j<=N/2)
       {
if(N%j==0) S=S+j;
j=j+1;
if(M==0)break;
}
       if(N==S)
         printf("%d- perfect number\n",N);
         N=N+2;
}
getch();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2014, 23:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Нужно чтобы при вводе числа 0 программа завершала работу (C (СИ)):

Нужно, чтобы программа с циклом заканчивала свое выполнение при вводе любого символа - C (СИ)
Здравствуйте, форумчане. Нужно чтобы программа с циклом заканчивала свое выполнение при вводе любого символа?

Как сделать, чтобы при вводе 0 программа закрывалась? - C (СИ)
#include &lt;stdio.h&gt; int main() { int num=1,i,j,height,width; char h,w; while (num!=0){ scanf(&quot;%d&quot;, &amp;num); if(num == 1)...

Завершить работу программы при вводе буквы - C (СИ)
помню ктото прогу не мог написать чтоб вводишь цивры 12345.. и как тока нажал на букву выход я вот написал #include&lt;conio.h&gt; ...

При вводе абсолютно произвольного числа выводить числа в символьном виде - C (СИ)
Нужна программа которая при вводе абсолютно произвольного числа будет выводить числа в символьном виде,пример: ввожу: 3456 выводится: ...

Сделать так чтобы работа программы завершалась при вводе фамилии Done - C (СИ)
#include&lt;stdio.h&gt; #include&lt;conio.h&gt; #define FNAME &quot;c:\\phone.txt\0&quot; // im'ia faily void main() { char fname = FNAME; ...

Программа вылетает при вводе значений - C (СИ)
вроде прохожу си второй год и проги писал гораздо сложней, а тут реально туплю... #include&lt;stdio.h&gt; #include&lt;conio.h&gt; ...

13
nikisha
39 / 35 / 12
Регистрация: 10.11.2013
Сообщений: 89
13.01.2014, 00:10 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Может лучше так
Цитата Сообщение от HON3Y Посмотреть сообщение
scanf("%d",&M);
C
1
if(M==0) return 0
просто, если у тебя М=0, то цикл не начнется, а сразу к getch() перейдет и даже если break сделаешь тоже самое получится
0
HON3Y
0 / 0 / 0
Регистрация: 12.01.2014
Сообщений: 48
13.01.2014, 00:16  [ТС] #3
Можно как то через break сделать это?
0
nikisha
39 / 35 / 12
Регистрация: 10.11.2013
Сообщений: 89
13.01.2014, 00:18 #4
break насколько я знаю только прерывает циклы, поэтому ты всеравно в getch упрешься
0
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
13.01.2014, 00:22 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от HON3Y Посмотреть сообщение
Можно как то через break сделать это?
Сделать то можно, но у тебя M вводится один раз. И если ты введешь M равное 0 то у тебя в цикл вайл он не зайдет.

Добавлено через 2 минуты
C++ (Qt)
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
#include <stdio.h>
#include <conio.h>
main()
{
int j,N,M,S;
printf("Enter number M\n");
scanf("%d",&M);
N=4;
if(M!=0)
{
while(N<=M)
{ S=1;j=2;
   while(j<=N/2)
       {
if(N%j==0) S=S+j;
j=j+1;
break;
}
       if(N==S)
         printf("%d- perfect number\n",N);
         N=N+2;
}
}
else
{
printf("равно нулю");
}
getch();
return 0;
}
0
HON3Y
0 / 0 / 0
Регистрация: 12.01.2014
Сообщений: 48
13.01.2014, 00:25  [ТС] #6
мне просто нужно: при вводе 0 программа завершала работу..Я не знаю как этого добиться.
0
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
13.01.2014, 00:28 #7
HON3Y, необходимо несколько раз вводить значение или только 1?
0
HON3Y
0 / 0 / 0
Регистрация: 12.01.2014
Сообщений: 48
13.01.2014, 00:30  [ТС] #8
Цитата Сообщение от lukalexrus Посмотреть сообщение
HON3Y, необходимо несколько раз вводить значение или только 1?
1 раз
0
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
13.01.2014, 00:32 #9
HON3Y, тогда тот вариант который я предложил является рабочим. Если введено M=0 то программа выполнена не будет и будет выполнена ветка else.
0
HON3Y
0 / 0 / 0
Регистрация: 12.01.2014
Сообщений: 48
13.01.2014, 00:36  [ТС] #10
Цитата Сообщение от lukalexrus Посмотреть сообщение
HON3Y, тогда тот вариант который я предложил является рабочим. Если введено M=0 то программа выполнена не будет и будет выполнена ветка else.
Я понимаю но нужно же чтобы программа закрывалась,а тут она продолжает работу
0
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
13.01.2014, 00:40 #11
Цитата Сообщение от HON3Y Посмотреть сообщение
Я понимаю но нужно же чтобы программа закрывалась,а тут она продолжает работу
тогда просто убери то что находится в else. А getch поставь в блок if (Но В данном случае нет никакой разницы гетч по сути ничего и не делает)
0
HON3Y
0 / 0 / 0
Регистрация: 12.01.2014
Сообщений: 48
13.01.2014, 00:55  [ТС] #12
Цитата Сообщение от lukalexrus Посмотреть сообщение
тогда просто убери то что находится в else. А getch поставь в блок if (Но В данном случае нет никакой разницы гетч по сути ничего и не делает)
не совсем понял куда его поставить.

Добавлено через 3 минуты
все я все понял.Спасибо за помощь!
0
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
13.01.2014, 00:56 #13
HON3Y, ну примерно что-то такое должно быть
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
#include <stdio.h>
#include <conio.h>
int main()
{
     int j,N=4,M,S;
     printf("Enter number M\n");
     scanf("%d",&M);
     if(M!=0)
      {
         while(N<=M)
            { 
               S=1;
               j=2;
               while(j<=N/2)
                  {
                      if(N%j==0) S=S+j;//эта сумма будет если равно условие
                      j=j+1;//эта каждый раз в цикле
                  }
               if(N==S)
                  { 
                     printf("%d- perfect number\n",N);
                     N=N+2;
                    }
              }
   getch();
}
return 0;
}
ну вот примерно так, выровнял то как это выглядит поблокам
0
alkagolik
Заблокирован
13.01.2014, 01:54 #14
HON3Y, у тебя нарушена логика программы и оператор break здесь не виноват.
0
13.01.2014, 01:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2014, 01:54
Привет! Вот еще темы с ответами:

Программа зацикливается при вводе матрицы - C (СИ)
Здравствуйте. Помогите, в программе какая то ошибка, не могу найти. Почему-то зацикливается при вводе матрицы. #include &lt;stdio.h&gt; ...

Программа падает при вводе значений - C (СИ)
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; float ex(int a,int nn); float fi(int mm,int c,float x1); void gram(int...

Программа падает при вводе стажа - C (СИ)
помогите доделать программа запускается. но потом что-то слетает при вводе стажа ...

Как вводить символы с клавиатуры на консоль, чтобы при вводе они шифровались? - C (СИ)
Как вводить символы с клавиатуры на консоль, чтобы при вводе они шифровались (вместо символа изображались ***)?


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

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

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