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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2018, 21:02   #1
helu
 
Регистрация: 02.10.2018
Сообщений: 9
По умолчанию Язык СИ

Через стандартный поток ввода пользователем вводятся целые числа. Последним вводится число 0. После того, как пользователь ввел последнее число (ноль), программа должна распечатать в стандартный поток вывода:

количество чисел, в десятичной записи которого каждая цифра - единица

Напишите программу на языке Си.У меня не получается(Помогите.Нужно,чтобы подсчитывало и отрицательные числа тоже.
Код:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<stdlib.h>

int main(void)
{
	int x = 0;
	int kol = 0;
	int a = 0;
	printf("x=");
	scanf_s("%d", &x);
	while (x != 0)
	{
		printf("x=");
		scanf_s("%d", &x);

		if (x < 0)
			x = x * (-1);
		while (x >= 10)
		{
			if ((x % 10) != 1) break;
			x = x / 10;
		}
			if (x== 1)
				kol = kol + 1;
	}
     printf("kol=%d\n",kol);
			_getch();
			return 0;
}
Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 03.10.2018 в 23:58.
helu вне форума Ответить с цитированием
Старый 02.10.2018, 21:54   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Код:
#include<stdio.h>
#include<conio.h>

int main(void)
{
int x = 0;
int kol = 0;
while (1)
{
  printf("x=");
  scanf ("%d", &x);
  if (x == 0) break ;
  if (x < 0)
      x = x * (-1);
  while (x >= 10)
   {
     if ((x % 10) != 1) break;
     x = x / 10;
   }
  if (x== 1)
     kol = kol + 1;
}
printf("kol=%d\n",kol);
getch();
return 0;
}
Я бы написал проще и выкинул бы неиспрльзуемую а (но, видимо, была в сдуваемом образце?)
Кстати, исходный вариант (слегка мумодифицированный) у меня тоже работает.

Код:
#include<stdio.h>
#include<conio.h>

int main(void)
{
int x = 1;
int kol = 0;
while (x != 0)
{
printf("x=");
scanf("%d", &x);

if (x < 0)
x = x * (-1);
while (x >= 10)
{
if ((x % 10) != 1) break;
x = x / 10;
}
if (x== 1)
kol = kol + 1;
}
printf("kol=%d\n",kol);
getch();
return 0;
}

Последний раз редактировалось digitalis; 02.10.2018 в 22:06.
digitalis вне форума Ответить с цитированием
Старый 02.10.2018, 22:28   #3
helu
 
Регистрация: 02.10.2018
Сообщений: 9
По умолчанию

Спасибо большое!
helu вне форума Ответить с цитированием
Старый 03.10.2018, 21:31   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Поясните, почему так,
Код:
if (x < 0)
x = x * (-1);
а не так?
Код:
if (x < 0)
x = -x;
В чём прикол?
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 04.10.2018, 19:36   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Никакой разницы. Думаю, умный компилятор сгенерирует один и тот же код.
А в чем крамола? Прога должна писа'ться одним-единственным способом ?
Я бы еще
x = 0-x - думаю, результат был бы абсолютно одинаковый.
Компилятор умный, он соображает. Потому его и зовут "оптимизирующим" .
digitalis вне форума Ответить с цитированием
Старый 04.10.2018, 22:47   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Цитата:
А в чем крамола? Прога должна писа'ться одним-единственным способом ?
Вы увидели подтекст в вопросе?
Если нужен положительный x, то можно написать и abs(x) или как это там в Си.
Цитата:
Компилятор умный, он соображает. Потому его и зовут "оптимизирующим" .
Собственно хотелось понять: "Зачем так заумно? Может это какая то особенность?"
Так думаю, что писа'ть можно по разному, но так, что бы другим было неповадно читать ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод кода c языка Pascale в язык PHP или в язык JavaScript Javlonka JavaScript, Ajax 1 30.09.2014 22:48
Язык С FYNZIK Помощь студентам 0 27.03.2014 22:17
Язык С s2df Помощь студентам 4 01.11.2013 10:57
Язык C Miandr Помощь студентам 3 11.06.2010 07:18
Язык С++ Dasha_09 Общие вопросы C/C++ 0 23.05.2010 15:34