Суббота, 27 Апреля 2024, 05:23

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Форум игроделов » Программирование » C/C++ » Решаем задачки вместе.
Решаем задачки вместе.
ТехникДата: Вторник, 23 Августа 2011, 16:22 | Сообщение # 1
Глава X-ray Games
Сейчас нет на сайте
Предлагаю здесь выкладывать задачи по программированию, придуманные вами, над которыми можно поломать голову. Решаем всем коллективом, предлагаем свои решения,конечно в с++ коде. После, после правильного ответа, автор выкладывает свой вариант решения. Предлагать можно задачи любого типа, не обязательно математического уклона и олимпиад.
Начну с себя:
Задача довольно банальна, но все же будет полезна для новичков. Напишите программу разбиения пятизначного числа на отдельные цифры.Пример: 12345 превратить в 1 2 3 4 5.
мотоблохДата: Вторник, 23 Августа 2011, 16:35 | Сообщение # 2
Придворный программист
Сейчас нет на сайте
neerc.ifmo.ru/school/io/index.html
интернет-олимпиады. Можно и на сипипи писать вроде
noTformaTДата: Вторник, 23 Августа 2011, 16:40 | Сообщение # 3
Ukrainian independent game developer
Сейчас нет на сайте
Quote (Техник)
пятизначного числа на отдельные цифры.Пример: 12345 превратить в 1 2 3 4 5.

ммм, лучше сказать каким способом, а то можно
#include <sstream>
main()
int aaa = 12345;
std::string s;
std::stringstream out;
out << aaa;
s = out.str();
for(int i = 0; i < s.size; i++)
{
cout << s[i] + " ";
}
}


@noTformaT


Сообщение отредактировал noTformaT - Вторник, 23 Августа 2011, 16:40
ТехникДата: Вторник, 23 Августа 2011, 16:55 | Сообщение # 4
Глава X-ray Games
Сейчас нет на сайте
Quote (noTformaT)
ммм, лучше сказать каким способом, а то можно

Любым, в этом-то весь смысл. Показать нестандартность мышления.
nilremДата: Вторник, 23 Августа 2011, 17:02 | Сообщение # 5
Просветленный разум
Сейчас нет на сайте
noTformaT,
По условию задачи нужно пять цифр. А у тебя массив символов. Так что не то.
На 10 по модулю нужно делить.

12345%10 = 5
((инт)(12345/10))%10 = 4
и т.д.


Windmill 2

WindMill 2D Game Engine
noTformaTДата: Вторник, 23 Августа 2011, 17:08 | Сообщение # 6
Ukrainian independent game developer
Сейчас нет на сайте
Quote (nilrem)
По условию задачи нужно пять цифр. А у тебя массив символов. Так что не то.


ок ))

num=12345
i5=num Mod 10
i4=((num-i5)/10) Mod 10
i3=((num-i4-i3*10)/100) Mod 10
i2=((num-i5-i4*10-i3*100)/1000) Mod 10
i1=((num-i6-i4*10-i3*100-i2*1000)/10000) Mod 10


@noTformaT


Сообщение отредактировал noTformaT - Вторник, 23 Августа 2011, 17:09
GameMixДата: Вторник, 23 Августа 2011, 17:14 | Сообщение # 7
старожил
Сейчас нет на сайте
Просто ради интереса решил решить первую задачку на GML.
Вот решение:
Code
a = '12345';
for (i=1; i<=string_length(a); i+=1)
b[i] = real(string_char_at(a,i));


Steel Standoff - 2D аркада.
Мои статьи


Сообщение отредактировал аТнОтХоАн - Вторник, 23 Августа 2011, 17:18
ApatiДата: Вторник, 23 Августа 2011, 17:24 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
Предлагаю следующую задачу - написать интерпретатор BrainF*ck'a
мотоблохДата: Вторник, 23 Августа 2011, 17:27 | Сообщение # 9
Придворный программист
Сейчас нет на сайте
Apati, это не задача
ЙакудДата: Вторник, 23 Августа 2011, 17:27 | Сообщение # 10
участник
Сейчас нет на сайте
аТнОтХоАн, в условии задания приведено число, а не строка. Логичнее будет выполнять операции над числом, а не строкой.. По-моему в этом была главная суть задания.

"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso
.blanco 2.0


Сообщение отредактировал Йакуд - Вторник, 23 Августа 2011, 17:28
ApatiДата: Вторник, 23 Августа 2011, 17:29 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Quote (мотоблох)
Apati, это не задача

Quote (Википедия)
Задача — проблемная ситуация с явно заданной целью, которую необходимо достичь; в более узком смысле задачей также называют саму эту цель, данную в рамках проблемной ситуации, то есть то, что требуется сделать.

Под описание вполне подходит.
мотоблохДата: Вторник, 23 Августа 2011, 17:31 | Сообщение # 12
Придворный программист
Сейчас нет на сайте
Apati, это уже проект
ТехникДата: Вторник, 23 Августа 2011, 17:32 | Сообщение # 13
Глава X-ray Games
Сейчас нет на сайте
nilrem привел наиболее верный ответ.
мотоблохДата: Вторник, 23 Августа 2011, 17:33 | Сообщение # 14
Придворный программист
Сейчас нет на сайте
http://neerc.ifmo.ru/school/io/archive/20101009/problems-basic-20101009.pdf
Задача D.
GameMixДата: Вторник, 23 Августа 2011, 17:34 | Сообщение # 15
старожил
Сейчас нет на сайте
Quote (Йакуд)
аТнОтХоАн, в условии задания приведено число, а не строка. Логичнее будет выполнять операции над числом, а не строкой.. По-моему в этом была главная суть задания.

Можно тогда сделать так. Тогда будет, как требовалось, только на GML.
Code
a = 12345; // число
for (i=1; i<=string_length(string(a)); i+=1)   
b[i] = real(string_char_at(string(a),i));


Steel Standoff - 2D аркада.
Мои статьи


Сообщение отредактировал аТнОтХоАн - Вторник, 23 Августа 2011, 17:35
StageДата: Вторник, 23 Августа 2011, 17:47 | Сообщение # 16
постоянный участник
Сейчас нет на сайте
Ограничение на язык не окей. Перенесите тему в общее и закрепите там, так будет лучше.
DemeronДата: Вторник, 23 Августа 2011, 18:17 | Сообщение # 17
User created in C++
Сейчас нет на сайте
Самая банальная задача: имеется 2 числовые переменные a1 и a2, нужно поменять их местами не используя других переменных.
nilremДата: Вторник, 23 Августа 2011, 18:38 | Сообщение # 18
Просветленный разум
Сейчас нет на сайте
Вот еще один, малость извращенный вариант:

Code

#include <iostream>   
void main()   
{
   int dig = 12345;   
   char c[10];
   itoa(dig,c,10);
   int ar[10];
   int i = 0;
   while( c[i]!='\0')   
   {   
    ar[i]=((int)c[i])-((int)'0');
    i++;
   }   
   for(int a=0;a<i;a++)
   {
    std::cout<<ar[a]<<std::endl;
   }
   system("pause");
}


Stage, Хочешь задачки на другом языке, создай отдельную тему.

Demeron,


Windmill 2

WindMill 2D Game Engine
StageДата: Вторник, 23 Августа 2011, 18:49 | Сообщение # 19
постоянный участник
Сейчас нет на сайте
Quote
Stage, Хочешь задачки на другом языке, создай отдельную тему.

Зачем? Было бы удобней в одной, да и активности больше.
DemeronДата: Вторник, 23 Августа 2011, 19:00 | Сообщение # 20
User created in C++
Сейчас нет на сайте
nilrem, почти правильно smile Вот только на отрицательные числа она не работает)))

Добавлено (23.08.2011, 19:00)
---------------------------------------------
Вот ещё 1 задачка: Дается сумма и произведение 2 чисел. Найти эти числа.

Форум игроделов » Программирование » C/C++ » Решаем задачки вместе.
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг