forum.rastrnet.ru

forum.rastrnet.ru (http://forum.rastrnet.ru/index.php)
-   Программируем (http://forum.rastrnet.ru/forumdisplay.php?f=35)
-   -   С++ и всё что с ним связано (http://forum.rastrnet.ru/showthread.php?t=4308)

CaypoH 27.03.2005 16:32

С++ и всё что с ним связано
 
Задачки, проблемы, интересные находки - всё прошу сюда.

TiRex 27.03.2005 16:35

Задачка на рекурсию
 
На шахматном поле расставить 12 коней так, чтобы они били все поля, исключая те, на которых стоят кони. Первых четырёх коней расставить не рекурсивно.

Paul 27.03.2005 19:13

Цитата:

Сообщение от TiRex
На шахматном поле расставить 12 коней так, чтобы они били все поля, исключая те, на которых стоят кони. Первых четырёх коней расставить не рекурсивно.

И это имеет отношение только к С++?

CaypoH, Вы уже читали Алена Голуба "правила..."? Это действительно находка!

TiRex 27.03.2005 20:22

Ну и что, что она имеет отношение ни только к С++, она имеет же отношение к с++ и ладно, в топ попал, оффтопа небыло. Просто мне надо такую лабу сдавать, а идей пока никаких нет.

Paul 27.03.2005 20:29

Цитата:

Сообщение от TiRex
Просто мне надо такую лабу сдавать, а идей пока никаких нет.

Я б решил эту задачу, да енот только что кончился ;)

CaypoH 28.03.2005 12:25

Цитата:

Сообщение от Pavel L
CaypoH, Вы уже читали Алена Голуба "правила..."? Это действительно находка!

хм...нет не читал. а где можно взять? и на "ты" пожалуйста :)

Paul 28.03.2005 18:36

Вот теперь здесь:
ftp://172.16.30.8/обменник/книги/doc/cpp/cpprules.pdf
или вордовская версия:
ftp://172.16.30.8/обменник/книги/doc/cpp/cpprules[doc].rar

Скоро может ещё чего появиться. Но эта книга - супер.

CaypoH 12.04.2005 14:42

вот вам задачка:
Найти кол-во 4х значных чисел, в которых сумма первых двух цифр равна сумме последних двух.

Paul 12.04.2005 16:05

Цитата:

Сообщение от CaypoH
вот вам задачка:
Найти кол-во 4х значных чисел, в которых сумма первых двух цифр равна сумме последних двух.

Это за 7 класс школы "особо одаренных"? Помоему простой перебор не сильно напряжен будет.
Лучше бы про коней кто-нибудь решил...

CaypoH 13.04.2005 13:52

хе. а я так и не сделал. точнее сделал, но считалось не верно )) потом забил просто.

Paul 14.04.2005 00:08

Цитата:

Сообщение от CaypoH
хе. а я так и не сделал. точнее сделал, но считалось не верно )) потом забил просто.

Подробней, please. У тебя (или у Вас, как вам больше нравиться) может проблемы с выделением цифры? Ну, разомнусь пожалуй:

Выделить N-ую цифру из X

(X%pow(10, N) - X%pow(10, N-1))/pow(10, N-1)

Например, 3 цифру из 1658
(1658%1000 - 1658%100)/100
(658-58)/100
6

Это первое (!второе, поправил), что пришло в голову. Можете оптимизировать через asm{}. Удачи.

P.S. 2TiRex: Вы решили задачу про коней, или нет. Нельзя ли ответ?!

TiRex 14.04.2005 14:29

Решил, но она находится в универе, надо забрать, но у меня флопик сгорел, а флэшки не имею, друзей просить надо. Впринципе решил её не я :) я её только дорабатывал, нашёл решение в методичке по программированию.

CaypoH 16.04.2005 15:38

#include <stdio.h>
#include <conio.h>
void main ()
{int i1, i2, i3, i4, kol=0;
printf ("Введите первую цифру числа: ");
scanf ("%d",&i1);
printf ("Введите вторую цифру числа: ");
scanf ("%d",&i2);
printf ("Введите третью цифру числа: ");
scanf ("%d",&i3);
printf ("Введите четвёртую цифру числа: ");
scanf ("%d",i4);
for (i1=1;i1<=9;i1++)
for (i2=0;i2<=9;i2++)
for (i3=0;i3<=9;i3++)
for (i4=0;i4<=9;i4++)
if (i1+i2==i3+i4)
kol++;
printf ("Количество результатов: %d",kol);
}

CaypoH 16.04.2005 15:40

понимаю что глупо было так писать, но другому что-то не хотелось...
выделение цифр через %10 (100, 1000 и т.д.) это мне уж как-то банально показалось. решил вот так сделать

Paul 17.04.2005 00:33

Цитата:

Сообщение от CaypoH
понимаю что глупо было так писать

Ничего не глупо, просто я всё люблю обобщать (это вредно!). И вообще, оффтопим...

COBEHOK 17.04.2005 03:17

А в чем смысл этого? :)
Цитата:

Сообщение от CaypoH
printf ("Введите первую цифру числа: ");
scanf ("%d",&i1);
printf ("Введите вторую цифру числа: ");
scanf ("%d",&i2);
printf ("Введите третью цифру числа: ");
scanf ("%d",&i3);
printf ("Введите четвёртую цифру числа: ");
scanf ("%d",i4);

Вот более "шустрое" решение
Код:

int nCount = 0;
for(int i = 0; i <= 18; i++)
{
  int nSumCount = (i < 10) ? i + 1 : 19 - i;
  nCount += nSumCount * nSumCount;
}
printf("Количество результатов: %d\n", nCount);

Максимальная сумма цифр двухзначного числа - 18. Поэтому перебираем все возможные суммы и ищем количество слагаемых (при условии, что их два) в каждой сумме.
сумма = 1: 1+0, 0+1
сумма = 3: 0+3, 1+2, 2+1, 3+0
сумма = 17: 9+8, 8+9
Количество 4-х знаных чисел для каждой суммы = кол-во комбинаций с повторениями = кол-во слагаемых в квадрате.

Предлагаю усложнить задачу: Найти кол-во 6-и значных чисел, в которых сумма первых двух цифр равна сумме последних двух и сумме средних двух :p

CaypoH 17.04.2005 13:05

Цитата:

Предлагаю усложнить задачу: Найти кол-во 6-и значных чисел, в которых сумма первых двух цифр равна сумме последних двух и сумме средних двух :p
принято

Paul 17.04.2005 13:12

Цитата:

Сообщение от COBEHOK
Предлагаю усложнить задачу: Найти кол-во 6-и значных чисел, в которых сумма первых двух цифр равна сумме последних двух и сумме средних двух :p

Ответ: 10013

Решение:
Код:

#include <stdio.h>
#include <math.h>

int Cifr(int chislo, int N){
        return (chislo%int(pow(10, N)) - chislo%int(pow(10, N-1)))/int(pow(10, N-1));
}


int main(){

        long int Count = 0;

        for(long int i=0; i<1000000; i++){
                if(Cifr(i, 6)+Cifr(i, 5) == Cifr(i, 4)+Cifr(i, 3) == Cifr(i, 2)+Cifr(i, 1))
                        Count++;

        }

        printf("%d", Count);

        return 0;
}

Время выполнения (16bit) - пару секунд на моем скудном 500 Cel.

TiRex 17.04.2005 18:43

Нуждаюсь в алгоритмах нахождения интегралов методами прямоугольников и методами трапеций. Может кто сможет тут функции написать?

COBEHOK 17.04.2005 19:47

http://www.rsdn.ru

Paul 17.04.2005 21:13

Цитата:

Сообщение от TiRex
Нуждаюсь в алгоритмах нахождения интегралов методами прямоугольников и методами трапеций. Может кто сможет тут функции написать?

7 лекция в:
ftp://172.16.30.8/обменник/книги/doc/cpp/C.RAR

Там описан какой-то более точный метод - посмотрите.

CaypoH 25.04.2005 15:08

ребята нужно вот такую задачку сделать:

Даны натуральные числа n и m (0 <= m <= 9). Выяснить, сколько раз входит цифра m в запись числа n.

попросили к завтра а мне ещё своё делать надо, если кому не в облом помогите а?

Paul 25.04.2005 19:15

Я ж писал уже как цифра выделяеться. Даже функция есть. Или совсем обленились?

COBEHOK 25.04.2005 20:12

Децкий сад. Вы чем занимаетесь - окружности рисуете, если даже с такой задачей справиться не можете?

Код:

N,M - даны
int nCount = 0;
char sN[100];
char cM = M + '0';
if(NULL != itoa(N, sN, 10))
{
  char *sTmp = sN;
  while(NULL != (sTmp = strchr(sTmp, сM)))
    nCount++;
}
printf("Count: %d\n", nCount);


CaypoH 26.04.2005 13:50

Цитата:

Сообщение от COBEHOK
Децкий сад. Вы чем занимаетесь - окружности рисуете, если даже с такой задачей справиться не можете?

ё маё да причём тут это то? блин...решил я сам, вот код:
Код:

#include <stdio.h>
#include <conio.h>
void main()
{int n,m,i,c,d;
printf("Введите n: ");
scanf("%d",&n);
printf("Введите m (должно быть от 0 до 9 включительно): ");
scanf("%d",&m);
 if(m>9||m<0)
 printf("m должно быть больше либо равно 0 и меньше 10");
i=n;c=0;d=0;
 do
 {d=i%10;
 i=i/10;
 if(m==d)c++;
 }
 while (i!=0);
 if(i==0)
 printf("Цифра %d входит в запись числа %d: %d раз",m,n,c);
}

2 СОВЕНОК
вы не находите что ваш и мой код немного различаются? я вот вижу пару различий.

CaypoH 26.04.2005 22:54

Цитата:

Дан вещественный массив А[N] и натуральное число k. Если количество положительных элементов в массиве А больше k, то сдвинуть циклически все элементы массива на одну позицию вправо, в противном случае – на одну пози-цию влево.
никак не пойму задание поэтому не понимаю что надо делать. Слова "сдвинуть циклически массив" меня вводят в заблуждение. Ладно сдвинуть массив на позицию куда-либо но циклически...где здесь цикл требуют не пойму.

Immelman 26.04.2005 23:15

Цитата:

Сообщение от CaypoH
никак не пойму задание поэтому не понимаю что надо делать. Слова "сдвинуть циклически массив" меня вводят в заблуждение. Ладно сдвинуть массив на позицию куда-либо но циклически...где здесь цикл требуют не пойму.

циклически сдвинуть вправо означает, что элемент a[i+1] = a[i] для i = N-1..2, a[1] = a[N].
например массив 1,2,4,6 сдвигая вправо циклически становится 6, 1, 2, 4

COBEHOK 26.04.2005 23:25

Цитата:

Сообщение от CaypoH
2 СОВЕНОК
вы не находите что ваш и мой код немного различаются? я вот вижу пару различий.

И что? Из-за этого мой код резко перестает работать?
Цитата:

Сообщение от CaypoH
где здесь цикл требуют не пойму

Как мне нравятся задачи притянутые за уши по самое нехочу :) Здесь вообще цикл не нужен.

Fair 22.05.2005 18:52

НОВАЯ СУПЕР ЗАДАЧА!!!!
1.Сделать Многофазное слияние отрезков с использованием пяти файлов
2.Сделать прогу с использованием Хеш-функции в виде тел.справочника с
решением различных коолизия разными способами.

Че слабо да сделать такое на С++!!!!
Кто сделает ето тот пусть просит у меня все что хочет в рамках приличия!!!!!!!

Fair 22.05.2005 20:05

Ну да а где еще могут такое задать!!!
кстати первую задачу нада сделать по шагам
1. Формирование начальных отрезков
2. Распределение Нач. отрезков
3. Слияние

А хеш ф-ию я и сам наверно смогу сделать.

COBEHOK 23.05.2005 09:47

Цитата:

Сообщение от Fair
НОВАЯ СУПЕР ЗАДАЧА!!!!
1.Сделать Многофазное слияние отрезков с использованием пяти файлов
2.Сделать прогу с использованием Хеш-функции в виде тел.справочника с
решением различных коолизия разными способами.

Че слабо да сделать такое на С++!!!!
Кто сделает ето тот пусть просит у меня все что хочет в рамках приличия!!!!!!!

Аффтар выпей йаду! :)
Че хотел сказать-то своим многофазным трансклюкатором?

хеш-функций в виде телеофонного справочника :D не существует. Есть просто хеш-функции. Коллизия там разрешаются единственным способом - сравнением ключей побайтно. Все. Сравнение может делаться на этапе вставки в структуру (таблицу). В этом случае структура - дерево. Либо на этапе выборки, тогда структура представлена чем угодно (массивом, списком и т.д.)

Paul 23.05.2005 20:08

1) Ничего сказать не могу. Ибо не понятно о чем речь. Какие отрезки? Это наверное на лекции чего-то загнул препод, или Кнута начитались.
2) До скуки простая задача. Приводиться в любой книжке для особо тупых в разделе о STL (что то типа map, посмотрите). Причем именно для телефоного справочника, хоть это и изврат.

P.S. Какой интерес у народа проснулся, сразу видно - сессия.

Fair 23.05.2005 20:36

Всяко кнут

CaypoH 24.05.2005 14:05

для всех по разному. для кого-то одно простое, для кого-то другое. прогеры например которые движухи для игр пишут ваще не врубятся например в пхп программинг или в мою курсовую по Сишке ))
а вообще могу сказать - в учебниках конечно есть всё, но пишут их разные люди и они ведь далеко не совершенны. сам лично пробовал одну задачку решить с помощью 2х учебников в итоге вобще не вышло ничего пришлось с 0 самому всё делать. вот и доверяй после этого всяким умникам которые торопятся поскорее книгу намалевать а бабос получить.

Paul 24.05.2005 20:05

2Саурон
Это то к чему -- врубиться - не врубиться? Вы исследование проводили? И что за разделение -- php-писака, для движков. Это же не спорт, где легкоатлету невозможно стать боксером (хотя кто знает). Вы о людях говорите или о бытовой технике (мол пылесосом сложно гладить)? Оскорбительно.
И что это за супер-непонятный курсак? Что-нибудь кроме школьных (вузовских, какая разница) задачек здесь кто-нибудь делал? Надеюсь на это. Надеюсь и на то, что в этой теме постить они не будут, не будут опускаться до уровня попрошаек.

P.S. Особенно взбесило "ваще".

Scorpion [DeadMan] 24.05.2005 22:00

вот задачка неплохая:
-написать экспортер под макс(3d studio max)
-сделать загрузчик из под Direct3D
-использовать скелет для анимации
-реализовать rag-doll физику
Ну кто способен?

Paul 24.05.2005 22:25

2scorpion...
И хватит членомерством заниматься. Вы 3d-игру предлагаете делать? Реально? Или всё шуточки. Нужна команда, и всё равно с нуля то зачем писать? Или у вас есть что-то ревалюционое?
Зайдите на форум www.sunlan.ru (внутресетевой, но меня забанили). Там один чел пытается соорудить стратегию. Просит помощи. Насколько я знаю он не чешит язык. Вот таких я уважаю. Но увы я ему помочь ничем не могу. Почему? Наверное ленивый. Надо исправляться.

P.S. Способен каждый. Поверьте...

CaypoH 25.05.2005 20:22

Цитата:

и всё равно с нуля то зачем писать?
вот вот. беда всех программеров - плагиат. самому писать лень, лучше чьё-нибудь чужое тиснуть и всё ок.

DeathMoroz 25.05.2005 21:15

Цитата:

Сообщение от CaypoH
вот вот. беда всех программеров - плагиат. самому писать лень, лучше чьё-нибудь чужое тиснуть и всё ок.

зачем изобретать велисипед? или ты уверен что изобретешь лучший?

на счет велосипедов и плагита погляди на опенсоурс и поймешь, что ты не прав по обоим пунктам . Столько велосипедов сколько делается там нигде нет, и кому они нужны? они не юзабельны.
И плагиата там нет, есть код который улучшают и улучшают разные люди.


Текущее время: 12:22. Часовой пояс GMT +7.

Powered by vBulletin® Version 3.8.4 Patch Level 5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot

Форум открыт в июле 2004 г.