Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 01.10.2010, 17:57   #31
g001501
Пользователь
 
Аватар для g001501
 
Регистрация: 16.09.2010
Сообщений: 28
По умолчанию

Люди! Как решить следующую задачу на Си. В книжке есть решение, но я его не понимаю!

Ввести 2 числа и посчитать сумму всех чисел между ними. ( в том числе и с этими двумя числами).

Нужно использовать оператор цикла for.

Последний раз редактировалось g001501; 01.10.2010 в 18:04.
g001501 вне форума
Старый 01.10.2010, 20:50   #32
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

объясняем :D
Цитата:
int a,b,sum; //объявляем переменные a, b, и sum - переменная для посчета суммы
sum = 0; // обнуляем переменую sum
cin>>a; //вводите первое число
cin>>b; //вводите второе число
for (a=1;a<=b;a=a+1) //объявляем цикл. счетчик будет идти от 1 до b
{
sum = sum + a;
}
а что конкретно вы не поняли из примера в учебнике?
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery

Последний раз редактировалось kaljan775; 01.10.2010 в 21:37. Причина: дополнительный вопрос
kaljan775 вне форума
Старый 02.10.2010, 13:03   #33
g001501
Пользователь
 
Аватар для g001501
 
Регистрация: 16.09.2010
Сообщений: 28
По умолчанию

Решебник предлагает такое решение. Я не совсем его понимаю. Я не понимаю, как удалось так поменять числа местами. Логику не понимаю.

Код:
#include<stdio.h>
void main()
{
	int i,n,m,sum=0;
	printf("Vvedite dva chelix chisla:");
	scanf("%d%d",&n,&m);
	if(n>m)
        {
           i=n;
	   n=m;
	   m=i;
        }

	for (i=n;i<=m;i++);
	{
            if(i!=n)
               printf("%+d",i);
	    else
               printf("%d",i);
	   sum+=i;
        }
	printf("=%d\n",sum);

}
У меня такой вопрос:
Есть задача: Посчитать количество четных положительных чисел, ввод чисел завершается, когда вводим 0.
Есть решение:

Код:
#include<stdio.h>
void main()
{
int x,k=0;
printf("Vvedite chislo:");
scanf("%d", &x);
while (x)
{ 
if(x%2==0&&x>0)
k++;
printf("Vvedite chislo:");
scanf("%d", &x);
}
printf (Kol-vo chetnix polozitel'nix chisel =%d\n", k);
}
Зачем нужна строка по вводу чисел, если она есть в цикле while? И что такое за условие while(x)? Это значит , что while (x!=0)? Или нет?

Последний раз редактировалось Stilet; 13.10.2010 в 18:24.
g001501 вне форума
Старый 06.10.2010, 12:55   #34
D_bl_M
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 28
По умолчанию

меня интересует такой вопрос, вы это сами решаете или как? зачем решебник, вы от этого предмета никуда не денетесь, а дальше будет вообще мрак, и все основано на азах!
так вот, мой вам совет, начинайте учить уже сейчас, просто потом вы вспомните то что я вам написал, сам был в такой ситуации, и проклинал тот день когда понял что реально запустил.
D_bl_M вне форума
Старый 06.10.2010, 13:22   #35
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Зачем нужна строка по вводу чисел, если она есть в цикле while?
Это для того чтоб в цикле сразу учитывался первый введенный элемент. Здесь это написано коряво и должно было выглядеть так:
Код:
    int x,k=0;
do{ 
    printf("Vvedite chislo:");
    scanf("%d", &x);
    if(x%2==0 && x>0)k++;
}while (x);
printf ("Kol-vo chetnix polozitel'nix chisel =%d\n", k);
getchar();getchar();
Решебник тебе попался ламерский. Привыкнешь к описанным в нем методам - можешь пожалеть в будущем.
Цитата:
И что такое за условие while(x)?
В Си булевые условия могут применяться к любому выражению. Если выражение дает 0 или NULL то это False иначе истина.
аналог while (x!=0)
I'm learning to live...
Stilet вне форума
Старый 06.10.2010, 16:45   #36
g001501
Пользователь
 
Аватар для g001501
 
Регистрация: 16.09.2010
Сообщений: 28
По умолчанию

Цитата:
Сообщение от D_bl_M Посмотреть сообщение
меня интересует такой вопрос, вы это сами решаете или как? зачем решебник, вы от этого предмета никуда не денетесь, а дальше будет вообще мрак, и все основано на азах!
так вот, мой вам совет, начинайте учить уже сейчас, просто потом вы вспомните то что я вам написал, сам был в такой ситуации, и проклинал тот день когда понял что реально запустил.
так я и учу. Просто идет тема, а потом пример решения задачи. И вот иногда я не понимаю, как это задача решена.

Спасибо большое! Теперь все понятно!

Такая задача: нужно напечатать числа от 1 до 10, пропустив 5.

Решение:

Код:
#include<stdio.h>
void main()
{
	int x=1;
	while(x<=10)
	{if(x==5)
	{x++;
		continue;}
	printf("%d",x);
	x++;}}
Не понимаю увеличение х на единицу в операторе if. Причем, если x++ поставить после continue, задача выводит только первые четыре числа. Может, кто подскажет.

Последний раз редактировалось Stilet; 13.10.2010 в 18:25.
g001501 вне форума
Старый 07.10.2010, 07:34   #37
Tema_Crazzzy
Форумчанин
 
Регистрация: 29.04.2010
Сообщений: 114
По умолчанию

Вот что будет если поставить continue перед х++: при х=5, будет осуществлен переход в блок if. В этом блоке первой командой будет стоять continue (переход в конец цикла). А это значит что будет пропущено исполнение команд printf и х++, и тогда х снова будет равен 5. Ваша программа зациклится!
Tema_Crazzzy вне форума
Старый 07.10.2010, 11:06   #38
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Не понимаю увеличение х на единицу в операторе if
Это для того чтоб пропустить вывод числа 5.
Когда х=5 происходит попадание в if, где счетчик увеличивается и выполняется команда досрочного прерывания текущей итерации - continue, таким образом следующие за ним операторы пропускаются.
Вообще код ИМХО нерационален и мог бы выглядеть проще:
Код:
for(int x=1;x<=10;x++) if(x!=5) printf("%d",x);
А что автор книги хотел этим кодом показать... Ну разве что свою прыть и гонор, не более...
I'm learning to live...

Последний раз редактировалось Stilet; 07.10.2010 в 11:08.
Stilet вне форума
Старый 13.10.2010, 18:07   #39
g001501
Пользователь
 
Аватар для g001501
 
Регистрация: 16.09.2010
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Tema_Crazzzy Посмотреть сообщение
Вот что будет если поставить continue перед х++: при х=5, будет осуществлен переход в блок if. В этом блоке первой командой будет стоять continue (переход в конец цикла). А это значит что будет пропущено исполнение команд printf и х++, и тогда х снова будет равен 5. Ваша программа зациклится!
А разве continue осуществляет переход в конец цикла? По-моему, он вызывает пропуск оставшейся части тела структуры и начинает выполнять следующую итерацию цикла.

Цитата:
Сообщение от Stilet Посмотреть сообщение
А что автор книги хотел этим кодом показать... Ну разве что свою прыть и гонор, не более...
Книга Г.Ф. Саркисян "Введение в программирование на "С".

Как вы думаете, каков будет результат выполнения программы?

Код:
#include<stdio.h>
void main()
{
        int x, z=0;
		for(x=0; x<5; x++)
		{
			z++;
			if(x<3) continue;
			if(x>3) break;
			z++;
		}
		printf("z=%d\n",z);
}

Последний раз редактировалось Stilet; 13.10.2010 в 18:16.
g001501 вне форума
Старый 13.10.2010, 18:19   #40
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

z=6 Должно быть

P.S. Да угадал со второго раза, VS подтвердила )
I'm learning to live...

Последний раз редактировалось Stilet; 13.10.2010 в 18:23.
Stilet вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на С# Рома_Я Помощь студентам 1 24.10.2009 17:06
Задача в C# Оксанка Помощь студентам 1 02.03.2009 23:51
Задача по С++ Плюшечка Помощь студентам 1 07.11.2008 12:08