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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2013, 16:13   #1
Анна Седакова
Пользователь
 
Аватар для Анна Седакова
 
Регистрация: 06.10.2013
Сообщений: 22
Радость Строчки и базовые структуры (C++)

всем привет) хочу попросить вас помочь мне в написании программ. если не сложно,прокомментируйте каждую строчку в двух словах (что она значит). заранее большое спасибо

Задания на базовые структуры
1. Проверить гипотезу: если сумма цифр числа делится на 3, то и само число делится на 3.
2. Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.
3. Дано 10 вещественных чисел. Найти порядковый номер того из них, которое наиболее близко к целому числу.

Строчки
4. В строчке даны слова, но есть слова, повторяющиеся два раза. Надо удалить повторы слов.
Анна Седакова вне форума Ответить с цитированием
Старый 13.11.2013, 16:57   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Анна Седакова

2. Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.

Код:
#include <algorithm>
#include <iostream>

bool has_unique_digits(int n)
{
	size_t digits[10] = {0};
	for ( ; n; n/=10)
		++digits[n%10];

	for (size_t i = 0; i < sizeof(digits) / sizeof(digits[0]); i++)
	{
		if (digits[i] > 1)
			return false;
	}
	return true;
}

bool three_digits(int n)
{
	return n >= 100 && n < 1000;
}

struct Selector
{
	bool operator()(int n) const
	{
		return three_digits(n) && has_unique_digits(n);
	}
};

int main()
{
	int arr[] = { 1, 99, 111, 112, 123, 55, 567, -123, -111, 987, 998, 999, 1000, 1234 };
	auto last = std::partition(arr, arr + sizeof(arr) / sizeof(arr[0]), Selector());
	std::sort(arr, last);

	for (auto it = arr; it != last; ++it)
		std::cout << *it << " ";

	return 0;
}
Rififi вне форума Ответить с цитированием
Старый 13.11.2013, 17:07   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если сумма цифр числа делится на 3, то и само число делится на 3.
Код:
// Задаем число и его сумму
int n=333,s=0;
// находим эту сумму
for(int i=n;i;i/=10) s+=i%10;
// Если и то и другое дает в остатке от деления на 3 ноль то выводим Да
printf("%s",(s%3 && n%3)?"Да делится сумма":"Неа. нифига");
Цитата:
Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.
Код:
// Начинаем брутить цифры
for(int i=100;i<=999;i++){
//Это массив количества найденных чисел в цифре
 int a[9]={0}; 
//Это переменка флаг для опередления что такая цифра уже была
 bool ok=true;
//Заскладываем число на цифры
 for(int j=i;j;j/=10) 
 //Если в массиве по номеру цифры стоит 0 - значит этой цифры еще не было, 
увеличиваем ее количество вхождения на 1
 // Иначе если в массиве на этой цифре стоит что-то больше нуля, значит она уже 
появлялась Прерываем цикл, дальше нет смысла искать - флаг ставим в ложь
  if(a[n%10]==0) a[n%10]++; else {ok=false;break}
// Если флаг не лодь выводим число
 if(ok) printf("%d",i);
}
Это с потолка, не проверял. Подаю в форме идеи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Абстрактные базовые классы Millashka Помощь студентам 0 21.11.2012 15:05
Базовые Протоколы smile_8 Помощь студентам 0 29.03.2012 21:53
Базовые понятия pavel.ignatenko Microsoft Office Excel 15 17.04.2011 01:06
Базовые классы в с++ Banner Помощь студентам 1 31.03.2011 23:43
Паскаль, 4 базовые задачи. t1mer Помощь студентам 7 26.06.2009 21:02