Попалась мне задачка (сразу скажу простейшая) и решил я ее достаточно забавно (на мой взгляд) , хотелось бы посмотреть какие тараканы в голове у вас господа :-P
Надобно сочинить функцию, которая находила бы, и выводила на экран все не повторяющиеся значения в целочисленном массиве произвольной длинны.
Можно использовать вложенные функции, только в этом случае пишите их определение.
main() и прототипы можно опустить :-)
Экзотические вещи (типа инициализации локальных переменных в «старом стиле» ) приветствуются.
Не скупитесь на комменты!
Собственно все. Очень жду интересных листингов :-[
Другие языки программирования и технологии
Челендж на самый забавный код =) (C++ задача внутри) Не стесняемя, учавствуем.
//FUCK! Писал это тут ПОЛ ЧАСА, а когда посмотрел на свой ответ - некоторые строчки оно СОЖРАЛО!
//Всё, вроди, исправил. Но переменная "и" - на русском языке.. .
#include <string>
#include <iostream>
using namespace std;
int main (void)
{
define num количество_знаков_в_оригинальном_массиве;
int a[num] = {все_значения};
int b[num];
int и=0;
int i_b=0;
while(и < num)
{
int ii = 0;
bool is = 0;
while( ii < b_i )
{
if( b[ii] == a[и] )
{
is = 1;
}
ii ++;
}
if( !is )
{
cout << b[b_i];
cout << " ";
b_i ++;
}
и++;
}
cin >> и;
return 0;
}
//Я сделал без компилятора, так что могут быть синтаксические ошибки, или баги, но идея понятна:
//создаётся массив со значениями, создаётся ещё один массив того же размера, потом создаётся
//цикл, который повторяется столько раз, сколько значений в массиве. Потом идёт ещё цикл, который
//перебирает все предыдущие значения второго массива (с уникальными значениями первого) .
//Потом, если значений таких ещё не было в массиве, то оно заносится в него, выводится на экран,
//и увеличивается счётчик второго массива, и так до конца цикла. Потом в конце предлагается ввести,
//что попало (что бы можно было увидеть выведенные значения на экран) , а при нажатии Enter
//программа выключается. Кстати, вначале вместо "количество_знаков_в_оригинальном_массиве"
//надо вписать это количество, а вместо "все_значения" вписать значения ячеек массива.
//Вот и всё)
//Всё, вроди, исправил. Но переменная "и" - на русском языке.. .
#include <string>
#include <iostream>
using namespace std;
int main (void)
{
define num количество_знаков_в_оригинальном_массиве;
int a[num] = {все_значения};
int b[num];
int и=0;
int i_b=0;
while(и < num)
{
int ii = 0;
bool is = 0;
while( ii < b_i )
{
if( b[ii] == a[и] )
{
is = 1;
}
ii ++;
}
if( !is )
{
cout << b[b_i];
cout << " ";
b_i ++;
}
и++;
}
cin >> и;
return 0;
}
//Я сделал без компилятора, так что могут быть синтаксические ошибки, или баги, но идея понятна:
//создаётся массив со значениями, создаётся ещё один массив того же размера, потом создаётся
//цикл, который повторяется столько раз, сколько значений в массиве. Потом идёт ещё цикл, который
//перебирает все предыдущие значения второго массива (с уникальными значениями первого) .
//Потом, если значений таких ещё не было в массиве, то оно заносится в него, выводится на экран,
//и увеличивается счётчик второго массива, и так до конца цикла. Потом в конце предлагается ввести,
//что попало (что бы можно было увидеть выведенные значения на экран) , а при нажатии Enter
//программа выключается. Кстати, вначале вместо "количество_знаков_в_оригинальном_массиве"
//надо вписать это количество, а вместо "все_значения" вписать значения ячеек массива.
//Вот и всё)
я точно не скажу, но кажется в С++ как в Java есть такая замечательная вещь как Set - контейнер для хранения набора уникальных объектов.
- создаёте Set
- забрасываете туда элементы своего массива
- выводите содержимое Set (который будет содержать только уникальные, не повторяющиеся элементы)
- создаёте Set
- забрасываете туда элементы своего массива
- выводите содержимое Set (который будет содержать только уникальные, не повторяющиеся элементы)
Ruslan Yusupov
Set будет содержать и повторяющиеся элементы тоже, просто в единственном экземпляре. :)
и что интересного в задачке?
обочная задачка класса для десятого
http://paste. org. ru/ ?j7qifx
не проверял, 5 минут
обочная задачка класса для десятого
http://paste. org. ru/ ?j7qifx
не проверял, 5 минут
Ruslan Yusupov
У вашего алгоритма квадратичная сложность. Думаю, если поразмыслить над более эффективным решением, то задачка станет поинтересней.
Александр Наприенко
Я не говорил что задача будет интересной, мне просто хотелось посмотреть, как мыслят люди, хотелось увидеть ваш стиль и интересные решения не интересной задачи =) При этом я понимаю что время очень ценный ресурс.
пипец-мудрец.
берём первый элемент и прогоняем его по всему масиву, если нет то выводим его, если да то перескакуем на след элемент, далее второй и. т. д) может я что то непонял
Александр Наприенко
Вы почти все поняли правильно. Я знаю как решать эту задачу, у меня откомпилированный листинг на полке лежит. Я хотел креатива, нестандартных решений. На крайний случай посмотреть на ваш стиль :-)
Похожие вопросы
- Помогите, лёгкий код C++
- Пожалуйста помогите разобраться с даним кодом C++. Тема : Односвязание списки
- heloword не запускается!? вопрос внутри!и код C+ builder! программа на С!
- Для чего служит код C++? Или какие коды должен знать уверенный программист.
- Некорректно работает код. (C#)
- Как в этом коде C++ в файл через каждые две буквы добавить цифру любую? За ранее огромное спасибо
- C++ задача про массив
- помогите закончить код C++
- Как грамотно комментировать код C/C++. Есть ли какие нибудь стили или стандарты?
- Не работает конструктор в коде C++!
или так получилось из-за того что половина листинга пропала и все пришлось в спешке восстанавливать?
На последок замечу что комментарии в стиле Си (/* some text */) в вашем случае были бы гораздо удобнее. Еще раз спасибо за уделенное время.
void unique (int a[], int size)
{
int i= 0;
bubbleSort(a, size); //Сортируем массив любым доступным способом
cout