Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389

Открыть новую тему     Написать ответ в эту тему

de_lirium

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тема создана для накопления реализаций типовых задач на С/С++.
Прежде чем публиковать своё условие задачи, убедитесь, что её решение (или решение очень похожей задачи) в теме и полезных ссылках отсутствует (например воспользуйтесь ссылкой Версия для печати вверху справа страницы и поищите в ней).
Постарайтесь как можно полнее сформулировать постановку задачи (чтобы тому, кто решит вам помочь, не приходилось тратить своё время ещё и на выпытывание у вас деталей условия; если вам не понятно, как это сделать - постарайтесь представить, что эта программа у вас уже есть, и "поработать" с ней - вот все детали, которые при этом придут в голову, с большой вероятностью должны быть в условии задачи).
Если вы уже пытались сделать эту задачу, но у вас не получилось и вы хотите довести дело до конца - обязательно выложите результат своей попытки, предварительно убедившись, что ваш код компилируется.

Вопросы по технологиям лучше задавать тут.

Прежде чем просить помощи в задании...
Если позарез надо и вы даже готовы заплатить

Если вам вдруг не отвечают или ответ вас не устраивает, и вообще полезно прочитать всем спрашивающим.

Полезные ссылки:
 
C++: в том числе и решения задач (eng)
задачи на C
 
Проверить свою задачку можно:
Онлайн-компилятором Visual C++
godbolt
Wandbox
Одним из онлайн-компиляторов на ideone.com

Всего записей: 28 | Зарегистр. 23-07-2004 | Отправлено: 02:14 20-12-2004 | Исправлено: Daniyar91, 19:25 27-09-2017
Master_Profi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да

Всего записей: 68 | Зарегистр. 13-11-2010 | Отправлено: 01:30 06-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun

Цитата:
bios = peekb(0xF000,0xFFFE);
А как это ассемблерной вставкой написать?

unsigned char * ptrBIOS = (unsigned char *)0xF000FFFE;
только кто тебе это позволит...

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 15:59 06-08-2011
Shandera

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте уважаемые специалисты языка C++.
Подскажите пожалуйста как реализовать такую задумку.
Имеется Файл.txt,  внём  3 строки:
 
Nir 20
exto 40
mill 30
 
Как использую например такой способ:
 
X  =  System::IO::File::OpenText (C:\\Файл.txt);
 
Читая файл найти строку exto 40 и присвоить Y = 40 ?

Всего записей: 642 | Зарегистр. 03-09-2010 | Отправлено: 14:15 09-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shandera
если файл имеет такую регулярную структуру (name value), то лучше всего читать его циклом построчно
типа:
Код:
char name[100];
int value;
 
fscanf(fp, "%s %d", name, &value);
if (strcmp(name, "exto")) Y = value;

 
-----
а, пардон, это не на С++...

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 14:51 09-08-2011 | Исправлено: akaGM, 15:04 09-08-2011
Shandera

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну или лучше работать с *.ini для хранения и считывания значения переменных? Если да, то черканите пожалуйста пример, как сохранить в ini значение X и Y а патом прочитав присвоить им обратно! А то я уже 4 книги купил, но не в одной нет такой информации(((.

Всего записей: 642 | Зарегистр. 03-09-2010 | Отправлено: 17:33 09-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shandera
попробуй здесь посмотреть + демо:
http://www.codeproject.com/KB/recipes/INI_Files.aspx

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 17:59 09-08-2011
Shandera

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Понятно, всем спасибо. Я так понял что в Visual Studio 2010 нет собственных возможностей подобных C++ Builder
 
TIniFile* Ini = new TIniFile("C:\\Options.ini");
 
Ну тогда, вопрос по работе с .txt
 

Цитата:
Имеется Файл.txt,  внём  3 строки:  
 
Nir 20  
exto 40  
mill 30  
 
Как использую например такой способ:  
 
X  =  System::IO::File::OpenText (C:\\Файл.txt);  
 
Читая файл найти строку exto 40 и присвоить Y = 40 ?

 
Попрежнему открыт.
Помогите пожалуйста примерчиком.

Всего записей: 642 | Зарегистр. 03-09-2010 | Отправлено: 19:20 09-08-2011
Master_Profi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем доброго времени суток...вот решал всем знакомую задачу про 8 ферзей...(расставить на шахматном поле 8 ферзей, и чтобы они не били друг друга при этом)
Писал сам код, никуда не заглядывая (знаю, что есть уйма решений в гугле, когда-то уже смотрел), написал код как мог...без функций каких-либо писал.. если кто-то не сломает голову, просмотрев код, да и еще что-то в нем поймет, то может скажет кто-то почему не хочет компилироваться?...
 
 

Код:
 
int main()
{
    int a = 0;
    int b = 0;
    int pole[8][8]; // sozdaem shaxmatnoe pole
    int pole_2[8][8];// sozdaem pole, gde bydem pokazivat' tol'ko ferzei(v 1-om pole zapolnyaem eshe polya, kotorie ferzi kontroliruyt)
 
 
    for (int i = 0; i < 8; i++)
        for (int j = 0; j < 8; j++)
            pole_2[i][j] = 0;
 
 
    for (int i = 0; i < 8; i++)
        for (int j = 0; j < 8; j++)
            pole[i][j] = 0;
 
 
    while(a != 8)
    {
        a = 0;
 
        for (int i = 0; i < 8; i++)
        {
            int e = i;
            for (int j = b; j < 8; j++)
            {
                int f = j;
                if(pole[i][j] == 0)
                {
                    pole[i][j] = 1;
                    pole_2[i][j] = pole[i][j];
                    a++;
                    for (int z = 0; z < 8; z++)
                        pole[i][z] = 1;
                    for( int x = 0; x < 8; x++)
                        pole[x][j] = 1;
                    while(e < 8 && f < 8 ) // zapolnyaem diagonal' 1-mi vpered
                    {
                        e++;
                        f++;
                        pole[e][f] = 1;
                    }
                    while(e > 0 && f > 0)// zapolnyaem diagonal' 1-mi nazad
                    {
                        e--;
                        f--;
                        pole[e][f] = 1;
                    }
                    while(e < 7 && f > 0)// zapolnyaem diagonal' 1-mi vlevo vpered
                    {
                        e++;
                        f--;
                        pole[e][f] = 1;
                    }
                    while(e > 0 && f < 7)// zapolnyaem diagonal' 1-mi vpravo nazad
                    {
                        e--;
                        f++;
                        pole[e][f] = 1;
                    }
                }
                if(a = 8)break;
                else
                {
                    if(i == 7 && j == 7)
                        b++;
                }
            }
        }
    }
 
    
    
    for(int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            cout << pole[i][j];
        }
        cout << endl;
    }
    cout << endl << endl;
 
    for(int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            cout << pole_2[i][j];
        }
        cout << endl;
    }
 
    system("pause");
    return 0;
}
 

Всего записей: 68 | Зарегистр. 13-11-2010 | Отправлено: 03:25 10-08-2011
karakurt2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shandera
как это нет!? ищите в MFC, там всё есть codeproject
а то что вы спрашиваете загружается в одну строку на STL

Всего записей: 733 | Зарегистр. 06-12-2003 | Отправлено: 05:36 10-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Master_Profi

Код:
#include <iostream>
using namespace std;


Цитата:
условие while тоже кстати было неправильно... не "=", а "==" надо было..
кто это тут раньше писал?

Код:
if(a = 8)break;

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 12:06 10-08-2011 | Исправлено: akaGM, 12:36 10-08-2011
seva_smr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ни как не могу найти метод полного перебора в матрице.
 
К примеру: есть матрица 3х3 :
123
456
789
 
 
Нужно сделать перебор матриц , чтобы в каждой строке было только одно число:

Код:
 
100     020     003
400     400     400
700     700     700
 
100     020     003
050     050     050
700     700     700
 
100     020     003
006     006     006
700     700     700
 
100     020     003
400     400     400
080     080     080
 
100     020     003
050     050     050
080     080     080
 

и т.д.
 
и подсчитывать сумму цифр в матрице (ну это понятно как сделать). именно алгоритм перебора неясен

Всего записей: 31 | Зарегистр. 11-03-2007 | Отправлено: 14:25 10-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
seva_smr
перебор матрицы поэлементно?
это понятно
for (i=0; i < 3; i++)
  for (j=0; j < 3; j++)
     A[i,j] ...
 
или как?
 
в качестве грубого решения, можно писать строку элементов матрицы в строку символов:
char one_line[100];
sprintf(one_line, "%1d", A[i,j])
 
а потом уже анализировать и разбирать эту строку "123", вычитывая из неё цифры посимвольно и записывая куда надо...

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 14:57 10-08-2011
seva_smr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
нет, вы привели цикл просто нахождения каждого элемента.
 
задача сводится к перебору всех возможных матриц, у которых в строках только 1 элемент от исходной матрицы (см. пример моего перебора)
 
Вся задача сводится к поиску такой матрицы (из исходной), в которой сумма всех элементов минимальна. Для этого и нужен перебор всех возможных вариантов матриц.

Всего записей: 31 | Зарегистр. 11-03-2007 | Отправлено: 15:35 10-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
seva_smr

Цитата:
(см. пример моего перебора)

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

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 15:48 10-08-2011
seva_smr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Оригинальное решение задачи:
Есть номенклатура товара (Ном1-Ном3), есть таможенные посты (Пост1-Пост3), через которые эти товары растаможиваются. Цена за растаможку товара на каждом посту своя (да, вот такие у нас на таможне правила...).
 

Код:
 
           Пост1      Пост2        Пост3
Ном1      6             5               7
Ном2      10           6               10
Ном3      2             3               1
 

 
Требуется выяснить через какие посты нужно везти каждый товар, чтобы сумма всей растаможки была минимальна. Понятно, что достаточно просто смотреть минимальную цену по постам для каждой номенклатуры, тогда сумма и будет минимальна. Но в задаче есть свои различные ограничения по весу, объёму и т.д. и поэтому решено сделать перебором всех возможных вариантов растаможки.
 
может без чисел будет понятне, как формируются эти матрицы (ПО ШАГАМ):

Код:
 
 
  1         2         3
 x00     0x0     00x  
 x00     x00     x00  
 x00     x00     x00
 
  4         5         6
 x00     0x0     00x  
 0x0     0x0     0x0  
 x00     x00     x00  
 
  7         8         9
 x00     0x0     00x  
 00x     00x     00x  
 x00     x00     x00  
 
  10       11       12
 x00     0x0     00x  
 x00     x00     x00  
 0x0     0x0     0x0
 
и т.д.
 
 

Всего записей: 31 | Зарегистр. 11-03-2007 | Отправлено: 16:02 10-08-2011 | Исправлено: seva_smr, 16:04 10-08-2011
langobardi



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Вся задача сводится к поиску такой матрицы (из исходной), в которой сумма всех элементов минимальна. Для этого и нужен перебор всех возможных вариантов матриц.

 
seva_smr, для решения этой задачи(судя по вашим примерам), вам просто в каждой строке нужно найти минимальное число.  
Может быть вам нужно именно подматрицу найти с минимальной суммой чисел? Тогда задача решается динамикой, но нужно знать каковы размеры искомой подматрицы.  
akaGM прав, вам следовало бы сразу привести условие задачи.
 
 
 
Добавлено:
seva_smr
Вашего последнего поста не успел увидеть.
 

Цитата:
Понятно, что достаточно просто смотреть минимальную цену по постам для каждой номенклатуры, тогда сумма и будет минимальна. Но в задаче есть свои различные ограничения по весу, объёму и т.д. и поэтому решено сделать перебором всех возможных вариантов растаможки.  
 

Перебирая таким образом все возможные варианты, это не будет менее затратным ни по весу ни по объёму.
Сами судите: по времени, для нахождения мин эл-та в каждой строке мы тратим O(NxM).
А для полного перебора при помощи цикла O(N^M). Что касается веса, то получится примерно одно и то же, хотя нам ещё во-втором случае нужно заведомо задавать ещё один массив, а в первом достаточно и одного заданного.

Всего записей: 24 | Зарегистр. 01-08-2011 | Отправлено: 16:07 10-08-2011
Master_Profi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
 
условие while тоже кстати было неправильно... не "=", а "==" надо было..
кто это тут раньше писал?  
 
Код:
if(a = 8)break;

 
да, я это писал, забыл поставить еще один "=". Исправил, но как бы не помогло мне вообще

Всего записей: 68 | Зарегистр. 13-11-2010 | Отправлено: 16:28 10-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Master_Profi
ты сообщения через строчку читаешь?
Код:
#include <iostream>
using namespace std;
это для кого написано?

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 16:31 10-08-2011
langobardi



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Master_Profi
Какие  ошибки выдаёт компилятор(на какие строчки)?
akaGM, а он всегда обрезает заголовки, когда код выкладывает
 
 
Добавлено:
Master_Profi
Попробуйте также debug заюзать, если ошибка во время выполнения.

Всего записей: 24 | Зарегистр. 01-08-2011 | Отправлено: 16:34 10-08-2011
seva_smr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
del

Всего записей: 31 | Зарегистр. 11-03-2007 | Отправлено: 17:01 10-08-2011 | Исправлено: seva_smr, 17:32 10-08-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru