Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 459
∙ повысить рейтинг »
CradleA
Статус: Профессионал
Рейтинг: 94
∙ повысить рейтинг »
D-mon55
Статус: 2-й класс
Рейтинг: 75
∙ повысить рейтинг »

∙ С / С++

Номер выпуска:1873
Дата выхода:02.06.2016, 18:21
Администратор рассылки:Андрей Кузнецов aka Dr_Andrew (Старший модератор)
Подписчиков / экспертов:19 / 14
Вопросов / ответов:2 / 2

Консультация # 189480: Здравствуйте, уважаемые эксперты! Прошу вас помочь! Никак не могу найти ошибку в коде, что именно не так или вообще ход мысли неверен?: /** Дано натуральное число N. Получить новое число M, которое образуется из числа N путём замены последней цифры на значение наибольшей цифры в записи числа N. Пример. N=128452, M=128458 */ Консультация # 189481: Здравствуйте! Прошу помощи в реализации на Си задачи: Дан текстовый файл, содержащий таблицу стоимости товаров в виде: Наименование: Цена. Записи имеют вид: Молоко 13.50. Вывести таблицу на экран, предварительно преобразовав записи к виду: Молоко 13 руб. 50 коп. Напишите, пожалуйста, идею и комментарии к строкам!...

Консультация # 189480:

Здравствуйте, уважаемые эксперты! Прошу вас помочь! Никак не могу найти ошибку в коде, что именно не так или вообще ход мысли неверен?:

/**
Дано натуральное число N. Получить новое число M, которое образуется из числа
N путём замены последней цифры на значение наибольшей цифры в записи числа N.
Пример. N=128452, M=128458
*/


#include <stdio.h>
#include <stdlib.h>

int main()
{
system("chcp 1251");

int n,m,max=0,k;
printf("\nВведите натуральное число N: ");
scanf("%d",&n);

while (n>0)
{
k=n%10;
if (k>max)
max=k;
n=n/10;
}

if ((n%10)!=max)
{
n=m%10;
n=max-n;
m=m+n;
}
printf ("\nНовое число M= %d", m);
return 0;
}


Дата отправки: 23.05.2016, 15:26
Вопрос задал: dasha.com (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, dasha.com!
Где-то так...
1) Надо было сохранить старое значение числа
2) Новое число получается обнулением младшего разряда (делением и умножением на 10) и складыванием с максимальной цифрой.
На мой взгляд, проверять на совпадение максимальной цифры с младшей необязательно, хотя можно и оставить, дело вкуса...

/**
Дано натуральное число N. Получить новое число M, которое образуется из числа
N путём замены последней цифры на значение наибольшей цифры в записи числа N.
Пример. N=128452, M=128458
*/


#include <stdio.h>
#include <stdlib.h>

int main()
{
    system("chcp 1251 > nul");

    int n,m,max=0,k;
    printf("\nВведите натуральное число N: ");
    scanf("%d",&n);

	m = n;

	while (n>0)
    {
     k=n%10;
     if (k>max)
     max=k;
     n=n/10;
    }

     m=(m/10)*10+max;
     printf ("Новое число M = %d\n", m);
    return 0;
}

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 31.05.2016, 12:17
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 189481:

Здравствуйте! Прошу помощи в реализации на Си задачи:

Дан текстовый файл, содержащий таблицу стоимости товаров в виде:
Наименование: Цена. Записи имеют вид: Молоко 13.50. Вывести таблицу на экран, предварительно преобразовав записи к виду: Молоко 13 руб. 50 коп.

Напишите, пожалуйста, идею и комментарии к строкам!

Дата отправки: 23.05.2016, 15:34
Вопрос задал: dasha.com (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, dasha.com!
Где-то так...

/*
	Дан текстовый файл, содержащий таблицу стоимости товаров в виде:
	Наименование: Цена. 
	Записи имеют вид: Молоко 13.50. 
	Вывести таблицу на экран, предварительно преобразовав записи к виду: 
	Молоко 13 руб. 50 коп.
*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main()
{
	FILE*	file = fopen("article.txt", "r");	//открываем текстовый файл на чтение
	char	line[256];
	int		i, len, f;

    SetConsoleCP(1251);			
    SetConsoleOutputCP(1251);					//для вывода русских букв

	if (!file)
	{
		printf("File article.txt not found!");		//файл не найден!
		return 1;
	}


	while (fgets(line, 256, file))			//читаем строку, == NULL, если файл кончился
	{
		len = strlen(line)-1;				//уменьшим на один символ, т.к. в конце строки ненужный '\n'
		line[len] = 0;						//и затрем его нулем

		for(i=len-1; i>=0 ;i--)				//начиная с адреса последнего символа
		{
			if (line[i] == ' ')				//ищем пробел. Это будет конец названия
			{
				line[i] = 0;				//закроем строку названия нулем
				break;
			}
		}
		printf("%s ", line);				//выводим название
		
		for(f=0,i++; i<len; i++)			//флаг f = 0 или 1, если точка не найдена/найдена
		{									//выводим с позиции за бывшим пробелом, а это начало цены!
			if (line[i] == '.')				//ищем точку, разделитель между руб и коп
			{
				f = 1;						//точка найдена
				break;
			}
			printf("%c", line[i]);			//выводим цифры рублей
		}
		printf(" руб.");					//подписуем
		if (f)								//точка была?
			printf(" %s коп.\n", (char*)&line[i+1]); //выводим копейки, они с позиции i+1 и до конца строки
		else
			printf(" 00 коп.\n");			//если точки не было, будет 00 коп
	}
	
	fclose(file);
	system("pause");
	return 0;
}


Примерный файлик article.txt
Молоко 10.50
Кислое молоко 12.60

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 31.05.2016, 13:44
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное