Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

RE: Вопросы по C/C++ (Для новичков)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)
Имя
Сообщение << Старые топики   Новые топики >>
RE: Вопросы по C/C++ (Для новичков) - 2010-06-06 22:28:28.263333   
Merovingian

Сообщений: 59
Оценки: 0
Присоединился: 2008-12-29 13:55:36.936666
_SaZ_, напиши как это будет выглядеть. Просто мне нужно чтобы не приходилось нажимать ENTER после каждого символа, а ввод строчки выглядел цельно.
Post #: 1721
RE: Вопросы по C/C++ (Для новичков) - 2010-06-07 00:38:19.186666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: _SaZ_

Читай ручками в цикле через getchar() - каждый раз перевыделяя память… Но это паранойя, оно того не стоит.


зачем каждый раз? можно взять буфер фиксированного размера (килобайт, например), можно удваивать его размер (как это сделано в большинстве реализаций std::vector)
Post #: 1722
RE: Вопросы по C/C++ (Для новичков) - 2010-06-07 00:58:53.950000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Человеку надо по мере набора, без удваивания (я знаю, как вектор устроен ;) ), т.к. это лишние затраты памяти. "Идеально" в данном случае - std::list, но про параною написано выше.

P.S. Автор, а тебя и не просит никто Enter после каждого символа нажимать.
Post #: 1723
RE: Вопросы по C/C++ (Для новичков) - 2010-06-07 01:02:52.883333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: _SaZ_

без удваивания (я знаю, как вектор устроен ;) ), т.к. это лишние затраты памяти


ты телепат?
Post #: 1724
RE: Вопросы по C/C++ (Для новичков) - 2010-06-07 01:37:15.003333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: _SaZ_
Человеку надо по мере набора, без удваивания (я знаю, как вектор устроен ;) ), т.к. это лишние затраты памяти. "Идеально" в данном случае - std::list, но про параною написано выше.

Не такие уж и лишние. Ведь если нам один раз потребовался буфер в два раза больше, значит может потребоваться и второй раз. И было бы здорово если бы память в хипе была бы зарезервирована под это дело. Кроме того, это положительно сказывается на скорости: malloc'и бывает подтормаживают. А если мы ещё и перевыделяем постоянно – это очень способствует фрагментации памяти, которая приводит к гораздо более нерациональному использованию памяти.
И наконец, можно не удваивать, а "уполторять". Умножать на 1.5. Или 1.2. Не суть важно насколько, главное чтобы последовательность размеров была бы геометрической прогрессией, а не арифметической.
Но я подозреваю, что посимвольное перевыделение – это требование препода. =) А против препода не попрёшь. Во-всяком случае я бы не попёр, даже если бы был 100% уверен в своей правоте и способности убедить в этой препода. Себе дороже. Хотя, конечно, зависит от препода.
Post #: 1725
RE: Вопросы по C/C++ (Для новичков) - 2010-06-07 03:49:44.353333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
К быстродействию никаких требований не было. Просто имхо, что удвоение тут неуместно, хотя и оптимально в большинстве случаев. Но это всё загоны… По мне так выделить сотню-другую килобайт на буфер и не загоняться. Всё равно маловероятно, что с клавиатуры столько натайпят ;).

З.Ы. действительно очень похоже на страх выделить лишний байт под строку ;)
Post #: 1726
RE: Вопросы по C/C++ (Для новичков) - 2010-06-07 15:32:30.800000   
DODZ

Сообщений: 2
Оценки: 0
Присоединился: 2010-06-07 15:28:35.160000
Необходимо разработать несколько программ на С++, или хотябы дайте направление в котором рыть именно по темам задания, надеюсь темы вас заинтересуют, буду очень признателен…
Задания:
1.1Д. Разработать программу, которая показывает информацию о версии,
названии программного продукта и организации-изготовителе в Win32 среде.
Пример использования: show_version some_file.exe или show_version
some_file.dll. Программа должна извлечь информацию о версии файла,
продукта и т.д.
из ресурса указанного файла.
1.2Д. Разработать программу под платформой xNIX (Linux), выводящую
список пользователей системы с указанием даты/времени последнего входа
в систему.
hint: система запоминает когда в систему входил пользователь,
информация хранится в файлах utmp и wtmp, выводится командой last (см.
man utmp, man last)
2.1Д. Разработать программу под платформой Win32, которая показывает
все модули (DLL), необходимые для загрузки указанной в параметре
программы в память.
hint: Описание таблицы импорта есть в MSDN, примеры работы
присутствуют в сети. В составе Visual Studio есть аналог - программа
depends. Необходимо
реализовать консольный упрощенный аналог.
2.2Д. Разработать программу под платформой xNIX (Linux), которая
выводит список процессов в системе в виде дерева процессов (начиная с
процесса с
идентификатором 1).
Post #: 1727
RE: Вопросы по C/C++ (Для новичков) - 2010-06-07 16:39:25.570000   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
1. Твои предложения, что тебя смутило в данных задачах, с чем ты не смог разобраться?8|
2.
quote:

1.1Д. Разработать программу, которая показывает информацию о версии,
названии программного продукта и организации-изготовителе в Win32 среде.
Пример использования: show_version some_file.exe или show_version
some_file.dll.
Программа должна извлечь информацию о версии файла,
продукта и т.д.

И где?
Post #: 1728
RE: Вопросы по C/C++ (Для новичков) - 2010-06-07 16:53:40.800000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
1.1 - копай в сторону Win32 ресурсов. Документации хватает в MSDN.
2.1 - читай свой же hint
Post #: 1729
RE: Вопросы по C/C++ (Для новичков) - 2010-06-07 17:28:06.106666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: DODZ
1.2Д. Разработать программу под платформой xNIX (Linux), выводящую
список пользователей системы с указанием даты/времени последнего входа
в систему.
hint: система запоминает когда в систему входил пользователь,
информация хранится в файлах utmp и wtmp, выводится командой last (см.
man utmp, man last)

По-моему тут всё понятно. hint объясняет всё. Читаешь для начала `man utmp'. Потом читаешь `man last', и пробуешь ею пользоваться. Затем берёшь сорцы last (они, я думаю, в пакете coreutils), собираешь с отладочной информацией, запускаешь под дебуггером, вешаешь бряки на все функции описанные в utmp.h, и смотришь как оно работает. Без дебуггера быстрее, но требует определённых навыков чтения сорцов.
Теоретически, я думаю можно было бы обойтись чтением `man utmp', но пример перед глазами позволяет быстро и непринуждённо решить кучу проблем недопонимания документации.
quote:

ORIGINAL: DODZ
2.2Д. Разработать программу под платформой xNIX (Linux), которая выводит список процессов в системе в виде дерева процессов (начиная с процесса с идентификатором 1).

Глянь на `man ps'. Эта программка умеет выводить список процессов. В том числе и в виде дерева. Я честно говоря не очень представляю как она это делает. Думаю, что путём ковыряний в /proc. Ну да, я запустил `strace ps', она активно читает /proc. И я не думаю, что читает она опосредованно, через какие-то специальные функции libc для работы со списком процессов. Но опять же, тебе доступны все сорцы. Загляни в них, и всё узнаешь.
Post #: 1730
RE: Вопросы по C/C++ (Для новичков) - 2010-06-07 17:36:45.850000   
TimSkywalker

Сообщений: 7
Оценки: 0
Присоединился: 2010-03-21 06:08:04.610000
Подскажите как можно из строки типа STL string удалить все цифры?
Post #: 1731
RE: Вопросы по C/C++ (Для новичков) - 2010-06-07 17:48:26.420000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: TimSkywalker

Подскажите как можно из строки типа STL string удалить все цифры?


http://www.cplusplus.com/reference/algorithm/remove_if/
http://www.cplusplus.com/reference/clibrary/cctype/isdigit/
Post #: 1732
RE: Вопросы по C/C++ (Для новичков) - 2010-06-07 20:58:12.766666   
y0b1

Сообщений: 4
Оценки: 0
Присоединился: 2010-04-06 15:56:25.526666
Подскажите, зачем нужны классы в С++\С#?
Не очень понимаю пригодность, зачем они?
п.с: это не троллинг.
Post #: 1733
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 00:16:55.550000   
DODZ

Сообщений: 2
Оценки: 0
Присоединился: 2010-06-07 15:28:35.160000
спасибо за советы, искренне благодарен!
Post #: 1734
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 02:48:20.446666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: y0b1

Подскажите, зачем нужны классы в С++\С#?
Не очень понимаю пригодность, зачем они?
п.с: это не троллинг.

Почитай теорию, попиши программы более-менее серьёзные - потом ещё раз почитай теорию - и поймёшь, зачем.
Post #: 1735
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 08:40:33.153333   
iidsp

Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
есть ли в отладчиках такая вещь, как:
допустим, что есть ассемблерный код - его границы в отладчике мы как-то определяем и говорим, что - а покажи какие переменные, регистры, флаги на выходе изменили свое значение - куда-то это записалось… Далее, изменяем этот код, например, добавили пару строк. Снова указываем в отладчике границы этого кода и просим показать все изменения. Далее говорим, сравни изменения те, что были до этого с тем, что есть сейчас… я просто уже замучился все это вручную отслеживать…
Post #: 1736
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 10:51:14.773333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: y0b1

Подскажите, зачем нужны классы в С++\С#?


класс - это пространство имён и контекст (состояние). если тебе нужны процедуры, изменяющие локальное состояние (сохраняющееся между вызовами процедуры), тебе нужны объекты класса
Post #: 1737
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 10:57:00.990000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: iidsp

есть ли в отладчиках такая вещь, как


для gdb это пишется скриптом. вот несколько примеров скриптования gdb:

http://johnnyjacob.wordpress.com/2009/07/07/gdb-scripting-short-article-for-internal-magazine/
http://darkfader.net/arm/files/Example%20GDB%20script.txt

полное описание смотри в документации
Post #: 1738
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 14:07:41.840000   
LeXuS_112

Сообщений: 1
Оценки: 0
Присоединился: 2010-06-08 13:55:46.713333
ага, драсте
Не могли бы вы написать прогу которая может превратить файл (картинку,программу) в строку символов и обратно?
Работать прога должна по такому смыслу: небольшой файл (любой абсолютно) проходя через прогу превращается в blablablakg5jlwil;4tjp34 и тому подобное
Этот текст каким то образом (в аське, на бумаге) переноситься к дугому человеку с этой волшебной прогой, ложить в нее непонятный текст и получает тот самый файл.
Возможно ли это?
Post #: 1739
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 14:20:23.953333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Тотал коммандер умеет.

1. конвертишь файл в base64
2. передаёшь
3. конвертишь назад
Post #: 1740
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 14:37:43.396666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
http://lurkmore.ru/Вдоль
Post #: 1741
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 14:44:08.063333   
Rolan1996

Сообщений: 29
Оценки: 0
Присоединился: 2010-05-06 15:56:58.863333
Всем привет!Вот решил всомнить С++ , пишу на Dev-C++ , подскажите как сделать условие выбора, тоесть если написали "ДА"(прога продолжит работу), если "НЕТ"(то быход).
Заранее благодарен
Post #: 1742
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 15:09:28.536666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Rolan1996

решил всомнить С++


что-что ты решил с ним сделать?

quote:

ORIGINAL: Rolan1996

как сделать условие выбора


http://www.cplusplus.com/doc/tutorial/control/
Post #: 1743
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 15:16:43.620000   
Rolan1996

Сообщений: 29
Оценки: 0
Присоединился: 2010-05-06 15:56:58.863333
Вспомнить.Слушай, мне нужно сделать так:

Если человек написал "да"-то прога продолжит работу
Если "нет" то закроется
Post #: 1744
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 15:21:05.270000   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
quote:

Если человек написал "да"-то прога продолжит работу
Если "нет" то закроется


if(!da)
exit(1);
Post #: 1745
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 15:28:03.166666   
Rolan1996

Сообщений: 29
Оценки: 0
Присоединился: 2010-05-06 15:56:58.863333
Слушай у меня компилятор на exit(1) ругается, что делать?
Post #: 1746
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 15:36:34.963333   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
abort();
Post #: 1747
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 15:49:05.053333   
Rolan1996

Сообщений: 29
Оценки: 0
Присоединился: 2010-05-06 15:56:58.863333
Блин опять ругается, можешь написать код

#include&lt;stdio.h&gt; #include&lt;conio.h&gt; main() { int N , da; printf("Введи да или нет\n"); scanf("%d",&N); if(da) abort(); }
Post #: 1748
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 15:55:35.286666   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
#include<stdio.h>
#include<conio.h>
int main()
{
int da;
printf("Write yes or no\n");
scanf("%d",&da);
if(da)
return 0;
}

Я наверно не понял что-ты хочешь от проги…
Post #: 1749
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 15:57:43.756666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Что за бред?
Post #: 1750
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 16:04:59.786666   
Rolan1996

Сообщений: 29
Оценки: 0
Присоединился: 2010-05-06 15:56:58.863333
Блин , а как написать выход при написании "нет"?А то не получается, просто я мало ещё знаю:)
Post #: 1751
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 16:16:46.286666   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
quote:

ORIGINAL: _SaZ_

Что за бред?

Ладно тебе не ругайся) Где я там че не так написал?



Сорь реально бред)))
Post #: 1752
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 16:29:26.330000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Rolan1996

Слушай, мне нужно сделать так:


нужно? делай!
Post #: 1753
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 16:30:32.863333   
Rolan1996

Сообщений: 29
Оценки: 0
Присоединился: 2010-05-06 15:56:58.863333
Ну ведь я попросил помочь,я мало знаю,мне 13 лет и только учусь
Post #: 1754
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 16:31:36.106666   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
_SaZ_ ?
Post #: 1755
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 20:55:45.616666   
Zmaster

Сообщений: 930
Оценки: 0
Присоединился: 2007-02-09 19:02:43.500000
quote:

Всем привет!

И тебе не болеть.

quote:

Вот решил всомнить С++

А залить информацию в твой мозг мы что ли должны? Общий вид:

//Заголовочные файлы int main() { string answ=""; std::cin&gt;&gt;answ; if(answ=="Da") { //Операции, когда "Да" (Функций выхода куча) } else if(answ=="Net") { //Операции, когда "Нет" (Функций выхода куча) } }
Post #: 1756
RE: Вопросы по C/C++ (Для новичков) - 2010-06-08 23:11:15.510000   
yurket

Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333
Rolan1996, а что 13-летних гугл банит???
http://msdn.microsoft.com/ru-ru/library/6wdz5232.aspx,
http://msdn.microsoft.com/ru-ru/library/k089yyh0.aspx
библиотеку нужную не подключил…
Post #: 1757
RE: Вопросы по C/C++ (Для новичков) - 2010-06-09 00:00:49.596666   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
quote:

//Заголовочные файлы
int main()
{
string answ="";
std::cin&gt;&gt;answ;

if(answ=="Da")
{
//Операции, когда "Да" (Функций выхода куча)
}
else if(answ=="Net")
{
//Операции, когда "Нет" (Функций выхода куча)
}
}

Я тоже мог слегка извратиться, и показать в стиле c++, но боюсь данному товарищу нужно по слогам все рассказывать…
Post #: 1758
RE: Вопросы по C/C++ (Для новичков) - 2010-06-09 00:59:33.360000   
Zmaster

Сообщений: 930
Оценки: 0
Присоединился: 2007-02-09 19:02:43.500000
quote:

Я тоже мог слегка извратиться, и показать в стиле c++, но боюсь данному товарищу нужно по слогам все рассказывать…

Да ладно, забей. Если он не понял после трех постов, то это просто очередной лентяй, который ждет готовый код. Как то не горю желанием таким помогать, так только… слегка поругать:)
Post #: 1759
RE: Вопросы по C/C++ (Для новичков) - 2010-06-12 21:28:00.786666   
kazrulit

Сообщений: 79
Оценки: 0
Присоединился: 2009-07-22 14:23:31.770000
никак немогу скомпилировать mciSendString :@

вот код

#include "stdafx.h"
#include "targetver.h"
#include <windows.h>
#include <mmsystem.h>

#pragma comment(lib, "winmm.lib")


int _tmain(int argc, _TCHAR* argv[])
{

mciSendString("Set cdaudio door open wait",NULL,0,NULL);
return 0;
}


Ошибка:
quote:

—— Build started: Project: mciprogramm, Configuration: Debug Win32 ——
Compiling…
mciprogramm.cpp
e:\мои документы\visual studio 2008\projects\mciprogramm\mciprogramm\mciprogramm.cpp(16) : error C2664: 'mciSendStringW' : cannot convert parameter 1 from 'const char [27]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Build log was saved at "file://e:\Мои документы\Visual Studio 2008\Projects\mciprogramm\mciprogramm\Debug\BuildLog.htm"
mciprogramm - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Post #: 1760
Страниц:  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
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.