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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2008, 00:14   #1
TrueTeapot
Новичок
Джуниор
 
Регистрация: 26.09.2008
Сообщений: 2
Восклицание C++! Консольное приложение!!!

Доброе время суток!
Мне нужно СРОЧНО выполнить задание в среде С++ :
Найти все числа, не превышающие 10000, в записи которых нет повторяющихся цифр.
Буду безумно рада, если ко всему этому приложите еще и небольшие комментарии, т.к. я являюсь полным воплощением своего ника... НО ЭТО НЕ ОБЯЗАТЕЛЬНО, мне хотя бы программу... Может, кто-то приблизительно объяснит, как это делать...
Заранее, спасибо тем, кто поможет!

Последний раз редактировалось TrueTeapot; 26.09.2008 в 00:53. Причина: Лишь бы помогли, а то подумают, что обарзела совсем, комментарии ей подавай
TrueTeapot вне форума Ответить с цитированием
Старый 26.09.2008, 13:08   #2
Kernel_BuG
 
Регистрация: 24.09.2008
Сообщений: 4
Лампочка Солюжн

Вот решение проблемы "тупо в лоб".

#include "stdafx.h"
#include "stdio.h"
#include "windows.h"
#include "winbase.h"

void FindNumbers(int iFirstNumber, int iLastNumber, int* numbers, int* iNumbersIndex)
{
char chBufIndex, ch;
char buffer[6];
char chrs[10];
*iNumbersIndex = 0;
for(; iFirstNumber <= iLastNumber; iFirstNumber++) { //цикл перебора чисел
ZeroMemory(chrs, 10); //обнуляем буфер повторений
sprintf(buffer, "%d", iFirstNumber); //конвертируем число в строку в десятичном виде и заносим в буфер
for(chBufIndex = 0; true; chBufIndex++) { //цикл перебора
if(buffer[chBufIndex]) { //если это не нуль-терминатор
for(ch = 0; ch < 10; ch++) { //то цикл перебора буфера повторений
if(chrs[ch] == 0) { //если достигли конца буфера повторений
chrs[ch] = buffer[chBufIndex]; //заносим символ в буфер повторений
break; //идем брать следующий символ из буфера
}
if(chrs[ch] == buffer[chBufIndex]) goto label0; //символ из строки (буфера) совпал с символом из буфера повторений => это число не подходит; выходим в конец первого цикла и берём следующее число
}
} else { // если это нуль-терминатор, а мы все еще не нашли повторений, значит их просто нет
numbers[*iNumbersIndex] = iFirstNumber; //заносим число в буфер возврата
(*iNumbersIndex)++;
}
}
label0:;
}
}

int main(int argc, char* argv[])
{
int numbers[10000];
int iSize;

FindNumbers(0, 10000, numbers, &iSize);

return 0;
}
Kernel_BuG вне форума Ответить с цитированием
Старый 03.10.2008, 06:32   #3
TrueTeapot
Новичок
Джуниор
 
Регистрация: 26.09.2008
Сообщений: 2
Хорошо Благодарственное письмо!

Хвала Аллаху=) , что есть люди, которые в ЭТОМ разбираются... Кланяюсь до пола! Спасибо Вам большое! Надеюсь, проблем не будет, но если что, могу я задать какой-нибудь вопрос?
TrueTeapot вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Консольное приложение a_priori Общие вопросы Delphi 6 12.03.2008 08:33
Консольное приложение eks-s Общие вопросы Delphi 17 25.01.2008 03:12
Консольное приложение и DLL SunKnight Общие вопросы Delphi 1 16.12.2007 02:35
Консольное приложение MAcK Общие вопросы Delphi 2 03.12.2006 18:28