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

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

Модерирует : 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

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

Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
void* ptr=&ptr;

----------
Одни с годами умнеют, другие становятся старше.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 13:48 16-10-2008
artiyom



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хочу научиться программировать на C++. Точнее в каком-то смысле у уже немного пишу на этом языке и на Си тоже. Я прочел Стивена Прату по Си: "Язык Си. руководство для начинающих". Книга старая была - конца 80х, но была очень хорошей и все в ней было понятно. Так я по ней изучил Си. Потом я решил учить C++ и стал читать Страуструпа, но как оказалось, его было очень трудно читать. Задачи в его книге были порой очень трудно решаемы, а материал не всегда понятен. Не дочитав его, я решил, что мне следует подыскать другой источник информации.  
Что вы посоветуете? Мне почему-то кажется, что книга уже упомянутого Стивена Праты: "Язык программирования C++, лекции и упражнения", была бы весьма неплохим началом. Что вы о ней думаете? Книгу я ищу такую, чтобы она наиболее полным образом описывала язык, но и чтобы была понятна непрофессионалу. Чтобы в ней были задачи, но чтобы они были решаемы, а не как у Страуструпа. У него задачи в книге обычно мало соотносились с изучаемой в данный момент темой и для их решения всегда нужно было знать больше, чем ты мог узнать, прочтя книгу до этого момента. Именно по этим причинам я не смог осилить его книгу.

Всего записей: 686 | Зарегистр. 31-08-2004 | Отправлено: 14:54 05-01-2009 | Исправлено: artiyom, 16:35 05-01-2009
Alex_Ved



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

Код:
void newFile(fstream &nFile)
{
    ofstream base("c:\\spisok.dat", ios::out);  
    if( ! base)  
    {
        cerr << "The file can't be opened or file only read!" << endl;
        exit (1);
    }
 
    MARSHRUT blank = {0,0,0,0,0,0,0,0,0,0,0,""};
    int n;
    cout << endl << "Enter the necessary number of records... " << endl;
    cin >> n;
    for (int i=0; i<n; i++)
        base.write((char*)&blank, sizeof(blank));
    
    cout << endl << "Attention!!! The new empty file has been created !!!" << endl;
 
}

 
Потом файл заполняется различными данными, будь то время, колличество и  тд.
Мне нужно реализовать поиск (сравнение) определенных полей файла. Как это лучше сделать? Надо ли считывать данные из файла и заносить их в массив для последующего поиска и сортировки или нет.
 
И ещё, в моем варианте создается определенное колличество записей. Как можно в последующем к уже существующим записям добавить ещё.

Всего записей: 109 | Зарегистр. 15-02-2004 | Отправлено: 16:33 11-01-2009
Nepredsazuemiy

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет, это мой первй пост. Собственно в свободное время сижу и читаю форум, как следствие разбираю азы программирования.  Вот и возникли вопросы, которые я пока еще не решил, поэтому прошу помощи у Вас.  
    В этой теме нашел ссылку на http://www.wasm.ru/article.php?article=1022001  (Низкоуровневое программирование).   Начал изучать по ней.
 
          Собственно проблемы.
    Пункт из этой статьи 2
 "2#  А теперь потренируем наши пальчики дампировать память - пройдемся по некоторым "историческим местам" нашей оперативной памяти... Для этого мы будем вводить команду D с параметром.  
 
  Например, команда (параметр L8 означает "вывести 8 байтов"):  
- D FFFF:5 L8 [Enter]
 
  покажет вам системную дату в правом столбце дампа. "
 
   Собственно все так сделал, увидел 8 байт и все хорошо. Но только не упомянулось что такое FFFF и на сколько я понял - это показывает, то что это 16 система счисления.
 
 Далее написанны список адресов, но как их правильно вводить, я так и не понял.
 Адреса такие  
0:417  
0:41A  
0:43E  
0:44E  
0:460  
0:449  
 
 А я их ввел следующим образом: d 0:417 L2        2 байта вывеЛ, хотя можно и 4 и 5 и т.д. не суть. Посмотрел что там написанно и как бы все понятно и как бы не совсем. Я корректно ввожу команду???  
 
     Далее пункт 1.4, а именно создание простейшей программы, программы с корректным выходом. Как написанно в инструкии создание файла можно осуществить с помощью программы (шеснадцатиричный редактор) HexWorkshop, но я не имею возможности установить эту программу, т.к. ограничен доступ работы с компьютером(комп на работе). Я думал как решить эту проблему и нашел программу, не требующую установки, а именно WinHex. Создал файл размером два байта, где один байт это CD, а другой 20. Т.е. конец программы. Запутил его не из под нортона, а просто из под винды. Итог появилось окошко на пол секунды и счезло, т.е. следовательно можно предположить, что прорамма с главнной задачей "корректного выхода" работает.  
         Далее идет пункт 2#.
  Как вводить эти команды? У меня всегда пишет ошибку, наверно я ввожу не правильно, но как вводить правильно я не понял(((. Кто не желает пройти по сслыке указзанной на верху напишу их здесь  
B82301 - внести значение 0123h в AX;  
052500 - прибавить значение 0025h к AX;  
8BD8 - переслать содержимое AX в BX;  
03D8 - прибавить содержимое AX к BX;  
8BCB - переслать содержимое BX в CX;  
31C0 - очистка AX;  
CD20 - конец программы. Передача управления операционной системе.
 
 
  Далее проблема с пунктом 6#  
 
"
  Посмотрите на машинные коды, и "что они делают" в #2. Немножко дополним эту "простыню". Например, командой "внести значение" 1234 последовательно в каждый из "регистров общего пользования":  
B83412 - AX=1234
BB3412 - BX=1234
B93412 - CX=1234
BA3412 - DX=1234
 
  Наиболее наблюдательные должны для себя отметить, что первый байт - это команда "переместить в регистр", а второй и третий - само число, только байты почему-то "наоборот"."
 
          Опять же не получается ввести эту команду. Проблема описанно мной свыше. Суть та же.  
 
   И крайний вопрос, я создал еще одну программку по примеру (B8-23-01-05-25-00-8B-D8-03-D8-8B-CB-31-C0-CD-20). Но есть большое НО , загрузить рограмму  в debug командной строкой не получается, пишет что файл не найдет. Как такое возможно?(((((((((((
       
 

Всего записей: 1 | Зарегистр. 25-05-2010 | Отправлено: 14:44 02-06-2010
tribals



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Простите ламеру вопрос, но: куда дели iostream.h???
Скачал Windows SDK 7.1, написал простейшую программу Привет, мир
 

Код:
 
#include <iostream.h>
 
int main(vioid) {
    cout << "Hello, world!" << endl;
    return 0;
}
 

 
компилирую: cl hello.c
Компилятор выдаёт ошибку fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory
В чём проблема, не пойму, хоть убейте?!

Всего записей: 28 | Зарегистр. 13-02-2011 | Отправлено: 22:53 13-02-2011
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tribals
У МС-ов давно уже библиотеки подключаются без .h на конце. Правда про Windows SDK не уверен.
А вообще писать проги без хелпа (в данном случае МСДН-а) - очень время/нервозатратное дело...

Всего записей: 2794 | Зарегистр. 20-04-2004 | Отправлено: 23:17 13-02-2011
Abs62



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

Цитата:
У МС-ов давно уже библиотеки подключаются без .h на конце. Правда про Windows SDK не уверен.

Без .h на конце подключаются стандартные библиотеки C++. Согласно Стандарту, MS тут не при чём.
Windows SDK идёт с .h - она рассчитана не только на C++, но и на C.


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

Всего записей: 6112 | Зарегистр. 22-10-2005 | Отправлено: 23:41 13-02-2011
tribals



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
О'кей, исправляю на

Код:
include <iostream>

Результат:

Код:
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(323) : warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
tobe.cpp(13) : error C2065: 'cout' : undeclared identifier
tobe.cpp(13) : error C2065: 'endl' : undeclared identifier

?
Как говориться, то-ли лыжи не едут...

Всего записей: 28 | Зарегистр. 13-02-2011 | Отправлено: 16:01 14-02-2011
akaGM

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

Цитата:
Specify /EHsc

ну так и спесифай
 
cl /EHsc hello.cpp
 
+
не забудь
using namespace std;
написать...

Всего записей: 25747 | Зарегистр. 06-12-2002 | Отправлено: 16:54 14-02-2011
tribals



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

Всего записей: 28 | Зарегистр. 13-02-2011 | Отправлено: 22:31 15-02-2011
momo2000



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Необходима помощь в С++, программировать ничего не надо.
У меня есть курсач с инета, а я только начинаю вникать в суть дела.
Не могли бы вы расписать как можно подробнее, что к чему на первых 6 страницах (там много повторяющихся действий), весь код привёл, т.к. вдруг понадобиться для общего понимания.
http://rghost.ru/5198051
 
Или мне в эту тему?

Всего записей: 1754 | Зарегистр. 14-04-2007 | Отправлено: 15:50 15-04-2011
Molniev

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Действий то там повторяющихся нет, хотя конструкций однообразных много. Но компиляторы эта такая вещь, чьё описание много больше самих исходников + проще по описанию написать исходник, чем наоборот.
Я бы посоветовал непариться и присмотреть курсач попроще.

Всего записей: 176 | Зарегистр. 13-03-2008 | Отправлено: 19:29 16-04-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
никто не подскажет, как сконвертировать http ссылку из юникода в обычную кодировку.  
 
UrlEscape - а вот эта функция из какой библиотеки винды?
это нашел shlwapi

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:37 19-04-2011 | Исправлено: bomzzz, 15:58 19-04-2011
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 18:59 19-04-2011
HelioSS



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Посмотрел как справляются с выводом кракозябр в консоли. Ни один пример у меня не сработал за исключением случая написания дополнительной отдельной функции.
А всё же - как под Win компилятором GCC вывести нормальночитаемую кириллицу в консоли?

Всего записей: 6209 | Зарегистр. 26-11-2007 | Отправлено: 21:12 01-06-2012
Abs62



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

Код:
#include <windows.h>
#include <stdio.h>
 
void main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    printf ("Кириллица в консоли\n");
}


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

Всего записей: 6112 | Зарегистр. 22-10-2005 | Отправлено: 21:45 01-06-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HelioSS
плюс к этому, у тебя в этой самой консоли должен быть выбран "кириллице-содержащий" шрифт...

Всего записей: 25747 | Зарегистр. 06-12-2002 | Отправлено: 11:54 02-06-2012
HelioSS



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

Цитата:
HelioSS  
 Ну вот, например

Всё равно кракозябры
 
akaGM

Цитата:
плюс к этому, у тебя в этой самой консоли должен быть выбран "кириллице-содержащий" шрифт...

Не думаю, что это так, потому что я, в принципе, могу добиться вывода на консоль кириллицы путём написания дополнительной функции:

Код:
char * ToRus(char * str)
{
    char * buf = new char [sizeof(str)];
    CharToOem(str, buf);
    return buf;
}
 

или в таком виде:

Код:
#include <iostream>
 
using namespace std;
 
int main()
{
     setlocale(LC_ALL, ".OCP");
     char prompt[21] = "Введите строку...";
     wstring str;
     wcout << prompt << endl;
     wcin >> str;
     wcout << "Введено: " << str;
 
     return 0;
}
 

Но последний вариант мне кажется очень громоздким и, IMHO, использование wcout может иметь последствия при использовании в других ОС или с другими компиляторами.
К тому же не люблю использование char в принципе

Всего записей: 6209 | Зарегистр. 26-11-2007 | Отправлено: 15:01 03-06-2012
DJ Kovrik



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

Цитата:
 
#include <iostream>
#include <clocale>
 
using namespace std;  
 
int main() {
 
    setlocale( LC_CTYPE,"Russian" );
 
    cout << "Русский текст" << endl;
 
return 0;
}  
 


----------
"If you disagree with me - please DIE!" © DJ Sage, GTA San Andreas Radio-X

Всего записей: 585 | Зарегистр. 20-07-2005 | Отправлено: 16:21 03-06-2012
HelioSS



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DJ Kovrik
Всё равно кракозябры

Всего записей: 6209 | Зарегистр. 26-11-2007 | Отправлено: 16:55 03-06-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru