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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
KChernov



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

Цитата:
Как узнать сколько мегабайт ОЗУ нужно для работы программы?

Из кода?
А то можно и в диспетчере задач посмотреть...

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 21:37 26-05-2011
Abs62



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

Цитата:
В конце функций void нужно писать return? По правилам

Нет, конечно. Даже примеры в тексте Стандарта C99 без return написаны.

Цитата:
Как узнать сколько мегабайт ОЗУ нужно для работы программы?

У программиста спросить. Кому как не ему знать, как его программа с памятью работает.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6077 | Зарегистр. 22-10-2005 | Отправлено: 22:29 26-05-2011
akaGM

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

Цитата:
Как узнать сколько мегабайт ОЗУ нужно для работы программы?

никак...
 
сколько, например, надо памяти для такого кода:
 
fscan("%d", &size);
p = malloc(size);
 
если статического, то некоторые компиляторы (Дельфи) сами об этом говорят...

Код:
 
CodeGear Delphi for Win32 compiler version 18.5
Copyright (c) 1983,2007 CodeGear
 
wavelet.dpr(1)  
wavelet.dpr(7)  
wavelet.dpr(7)  
wavelet.dpr(8)  
wavelet.dpr(8)  
wavelet.dpr(8)  
wavelet.dpr(8)  
wavelet.dpr(8)  
wavelet.dpr(8)  
wavelet.dpr(8)  
wavelet.dpr(8)  
wavelet.dpr(908)  
 
909 lines, 0.36 seconds, 41296 bytes code, 23012 bytes data.


Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 22:33 26-05-2011 | Исправлено: akaGM, 22:50 26-05-2011
A1exSun



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

Цитата:
Кому как не ему знать, как его программа с памятью работает.

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

Цитата:
fscan("%d", &size);  
 p = malloc(size);

2 байта для size точно

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 22:48 26-05-2011 | Исправлено: A1exSun, 22:51 26-05-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
неверно...
ещё для р
а на сам код?
а вообще можно оценить по линкеровскому мар-файлу...
 
bcc  -M+ file.c

Код:
 
Код: Start         Length     Name                   Class
 0001:00401000 0000091FCH _TEXT                  CODE
 0002:0040B000 000002880H _DATA                  DATA
 0003:0040D880 00000087CH _BSS                   BSS


Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 22:50 26-05-2011 | Исправлено: akaGM, 22:53 26-05-2011
A1exSun



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

Цитата:
0000091FCH

это число в hex? 37372 байт?
 
   
Где здесь?

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 22:52 26-05-2011 | Исправлено: A1exSun, 22:56 26-05-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да откуда я знаю, у меня IDE нет...
 
bcc32  -M+ file.c  
 
file.map

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 22:54 26-05-2011 | Исправлено: akaGM, 22:59 26-05-2011
A1exSun



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

Цитата:
bcc32  -M+ file.c  


Код:
C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\bin>bcc32 -M+ TestProgram.c
Embarcadero C++ 6.31 for Win32 Copyright (c) 1993-2010 Embarcadero Technologies,
 Inc.
TestProgram.c:
Turbo Incremental Link 6.11 Copyright (c) 1997-2010 Embarcadero Technologies, In
c.

Хм.

Цитата:
file.map

А с ним что?

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 22:59 26-05-2011 | Исправлено: A1exSun, 23:13 26-05-2011
Abs62



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

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

Ну, если из общих соображений, надо не забывать про эффект фрагментации памяти. Вот выделил ты, скажем, три блока по 100 байт, они расположились последовательно. Потом второй из них освободил, выделил новый, на 101 байт. Количество выделенной памяти увеличится не на 1 байт, как может показаться, а на все 101. Потому как в образовавшееся после освобождения пространство новый блок не влезает. Ну и так далее.
Поэтому реально используемый кодом объём памяти может заметно не совпадать с объёмом памяти, который процесс затребовал от системы. Особенно если постоянно происходит выделение/освобождение мелких блоков.  
 
Тут, конечно, многое ещё может зависеть от реализации менеджера памяти в конкретном компиляторе. Но всё-таки фрагментацию следует учитывать. И помнить, что из-за неё стремление расходовать как можно меньше памяти может привести к прямо противоположному эффекту. Дело тонкое.


----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6077 | Зарегистр. 22-10-2005 | Отправлено: 23:37 26-05-2011
akaGM

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

Цитата:
file.map
 
А с ним что?

я его смотрю, у меня среды нет...

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 23:59 26-05-2011
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
тю, ну сказал бы его блокнотом открыть
Вот что у меня там:

Код:
 Start Length Name Class
 0001:00401000 00001359CH _TEXT                  CODE
 0002:00415000 0000064ECH _DATA                  DATA
 0003:0041B4EC 0000064B4H _BSS                   BSS
 0004:00000000 0000000A4H _TLS                   TLS
 

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 00:22 27-05-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
ну получил теже цифры, что и в твоём окне = суммарный объём _статической_ памяти + стек,
что определилось на уровне линковки
динамическую память можно определить только в ран-тайме (профилировщиком или другими спец.тулзами) или грубо оценить самому программисту
можешь делать промежуточные выдачи всяких там memavail() или апишные HeapXXX(), GlobalMemoryStatus()
 
на фиг тебе оно?
 
а блокнот -- это что? :)

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 00:54 27-05-2011 | Исправлено: akaGM, 03:22 27-05-2011
zloivan

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем добрый день, проблема такая сегодня же надо сдать лабу, и не успеваю ее написать никак. А ведь сегодня зачет. Лаба (наверное) очень простая, на тему "текстовые и бинарные файлы". Пишем мы в Builder 6. Нашел кучу матерьяла на тему файлов, но ничего что мне подошло бы, и вот не осталось времени, пожалуйста помогите безрукому, ибо время очень очень поджимает.  
Условия такие:  
1)Ввод строк в текстовый файл.
2)Ввод чисел с клавиатуры в бинарный файл.
3)Ввод полей структуры в бинарный файл.
4)Сравнение двух текстовых файлов.
5)Сортирова бинарного файла из числе(структур)
Вот такая вот не маленькая програмка.
Написал только пункт один, а с бинарными файлами так и не смог разобратся.

Код:
 
#include <iostream>
#include <conio>
#include <fstream>
#include <string>
 
using namespace std;
 
class File
{
        private:
                string str,filename1,filename2;
                int *A,size;
        public:
 
                void AddString();
                void CreateFile();
                void CreateBinFile();
                void AddIntArr();
 
                ~File(){ delete [] A; }
 
 
 
 
};
 
 
void File::AddString()
{
        cout<<"Enter the text:";
        getline(cin,str);
 
}
 
void File::CreateFile()
{
        cout<<"Name your file: ";
        cin>>filename1;
        fstream out_file(filename1.c_str(), ios::out);
        out_file<<str<<endl;
 
}
 
 
//Вот тут начинаются проблемы, так как я не смог разобратся в работе с бин файлами.
Хотелось бы понять, как мне проверить, после занесения в файл каких либо данных, что в нем находится.  
void File::CreateBinFile()
{
        cout<<"Name your bin file: "<<endl;
        cin>>filename2;
        fstream binary_file ("file.dat", ios::binary | ios::out | ios::in);
        int i=0;
        while(A[i])
        {
                binary_file.write(reinterpret_cast<char*>(&A[i]),sizeof(A)); Не могли бы вы подробно объяснить действие вот этой вот строки,      списал ее с другой работы, но принцип понять не могу. Все что понял что она перегоняет элементы массива А, в символы типа чар, и после этого добавляет все полученное в файл. Вопрос в том, как теперь достать от туда эти символы, и переделать обратно в инт?
                i++;
        }
        binary_file.close();
 
 
}
//Я хочу составіть числовой массив, и потом его целиком загнать в файл. Как это сделать в текстовом файле я знаю, как в бинарном, нет.
void File::AddIntArr()
{
        cout<<"Enter the size of an array: "<<endl;
        cin>>size;
        A= new int[size];
        for (int i=0;i<size; i++)
        {
                cin>>A[i];
        }
        cout<<endl;
        for (int i=0;i<size; i++)
        {
                cout<<A[i]<<" ";
        }
        cout<<endl;
 
 
}
 
 
int main()
{
        File P1;
        P1.AddString();
        P1.CreateFile();
        P1.AddIntArr();
        P1.CreateBinFile();
 
 
 
        return 0;
        system("pause");
}
 

 
Я очень извиняюсь, если подобная тема уже была, а я ее не видел, просто время и впрямь поджимает.

Всего записей: 11 | Зарегистр. 15-03-2010 | Отправлено: 11:59 27-05-2011 | Исправлено: zloivan, 12:17 27-05-2011
KChernov



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

Цитата:
проблема такая сегодня же надо сдать лабу

И типа дали её тоже сегодня?
 

Цитата:
4)Сравнение двух текстовых файлов.  

Открываете 2 файла одновременно, читаете из них последовательно хоть побайтно, хоть построчно, и сравниваете считанное. Если разницу не нашли-  значит равны.
 

Цитата:
Хотелось бы понять, как мне проверить, после занесения в файл каких либо данных, что в нем находится.  

В принципе можно хоть блокнотом открыть.
Только не всё будет видно.
А если есть Фар/ТС - там по Ф3 всё видно.
Ну или Hex-просмотрщик/редактор ставить.
А кстати сам Builder 6 не умеет открывать бинарные файлы на просмотр?..

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 13:24 27-05-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zloivan
уточни:
задание на С или строго на С++?
 
но так или иначе, открытие файла в бинарном или текстовом формате отличается только интерпретацией символов "конец строки", в текстовом формате ты его просто читаешь/не видишь и не паришься, а в бинарном эти символы -- обычные бинарные же символы, которые надо читать/обрабатывать/учитывать...
 
чистый С для маздайки:
 
fp = fopen("filename.ext", "rt"); -- открытие файла на чтение в текстовом формате
fp = fopen("filename.ext", "rb"); -- в бинарном...
+
в текcтовом формате возможен форматированный ввод, типа fscanf(fp, "%d%e%s", &i, &floatValue, &str), а в бинарном инфу читают побайтно в буфер и все байты равнозначны: fread(buff, n, fp)

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



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

Цитата:
на фиг тебе оно?

ну нужно написать типа какое железо нужно для работы программы
напишу с потолка 1 мбайт ОЗУ

Цитата:
а блокнот -- это что?

да ты знаешь

Цитата:
fp = fopen("filename.ext", "rt");

"r"

Цитата:
fscanf(fp, "%d%e%s", &i, &floatValue, &str)

str

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 19:23 27-05-2011
akaGM

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

Цитата:
напишу с потолка 1 мбайт ОЗУ  

они ещё затрахаются машину с таким объёмом искать, :) пиши 1 Гиг..
кста, прога коммерческая? или за просто так, из любви к искусству, студентиков мордовать?
короче, Abs -- процент с продаж, а мне пузырь, думаю, как соавторы заработали :)
 

Цитата:
а блокнот -- это что? :)
да ты знаешь ;)

не знаю, у меня ФАР

Цитата:
str

ага...

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 12:52 28-05-2011 | Исправлено: akaGM, 13:11 28-05-2011
A1exSun



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

Цитата:
кста, прога коммерческая?

коммерческая под MS-DOS? такое сейчас бывает?

Цитата:
из любви к искусству, студентиков мордовать?

да скорее меня мордовали писать ее, курсовая это

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 13:13 28-05-2011 | Исправлено: A1exSun, 13:14 28-05-2011
akaGM

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

Цитата:
коммерческая под MS-DOS

зато пойдёт везде:
dos
win 3.11 -- win 7

Цитата:
курсовая это

а спецуха какая?

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 13:59 28-05-2011
A1exSun



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

Цитата:
dos  
 win 3.11

насчет этих не уверен, наверное нужно будет закомментировать функции перекодировки текста?
ну и пересобрать в Turbo C, например

Цитата:
а спецуха какая?

"Компьютерная инженерия"
осенью жди меня в теме про паскаль
 
сейчас рисую схемы, пишу текста... задолбался

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 15:38 28-05-2011 | Исправлено: A1exSun, 15:40 28-05-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