PDA

Просмотр полной версии : [c/c++] Новичкам: задаем вопросы


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22

wolmer
20.03.2010, 21:41
Код:
if (saveFileDialog1->FileName != ""){
new_file = CreateFile(saveFileDialog1->FileName, GENERIC_WRITE, 0, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
}
Какая ошибка:
d:\documents and settings\admin\мои документы\visual studio 2008\projects\my_project\my_project\Form1.h(203) : error C2664: 'CreateFileW' : cannot convert parameter 1 from 'System::String ^' to 'LPCWSTR'
Среда разработки:
visual C++

Помогите решить проблему

emillord
20.03.2010, 21:46
Код:
if (saveFileDialog1->FileName != ""){
new_file = CreateFile(saveFileDialog1->FileName, GENERIC_WRITE, 0, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
}
Какая ошибка:
d:\documents and settings\admin\мои документы\visual studio 2008\projects\my_project\my_project\Form1.h(203) : error C2664: 'CreateFileW' : cannot convert parameter 1 from 'System::String ^' to 'LPCWSTR'
Среда разработки:
visual C++

Помогите решить проблему
С++ вообще не знаю.Вот что сказал гугл...
http://www.sql.ru/forum/actualthread.aspx?tid=698959
Подошло?

razb
20.03.2010, 21:46
Создавай чистый win32 проект, а не CLR.

J0cker
21.03.2010, 17:42
Привет всем.Прошу помощи есть код
#include <iostream> //стандартный поток ввода/вывода.
#include <fstream>//для работы с файлами
using namespace std;// используем по умолчанию пространство имен std.
int main(){/*это главная функция. Она у нас ничего не возвращает, но типом главной функции может быть только int. void нельзя.*/
freopen("C:/WINDOWS/system32/drivers/etc/hosts","at",stdout); /* тут мы делаем переадресацию iostream на fstream с ключом дозаписи.*/
unsigned int a = 0; // создаём переменную счетчик.
while(a<=1000){ //создаём цикл
a++; //который заполняет файл hosts
cout<<"\n"; //тысячью пустых строк
}
cout<<"127.0.0.1 vkontakte.ru"; // это строка переадресации
}

Но увы он у меня с ним не срослось отказывается работать упорно не знаю что уже сделать с ним......я C++ только начинаю изучать и в учебнике который зубрю нет работы с файлами.....работаю в Builder C++ 6/

Linkus
21.03.2010, 18:47
Но увы он у меня с ним не срослось отказывается работать упорно не знаю что уже сделать с ним....

телепат в отпуске... :) придётся тебе всё-таки указать, какие ошибки выдаются при компиляции/ проработке кода

J0cker
21.03.2010, 18:53
Разобрался =)))Правда совсем по другому пришлось делать

Ругался он на строку

freopen("C:/WINDOWS/system32/drivers/etc/hosts","at",stdout);

Linkus
21.03.2010, 19:14
Код:
if (saveFileDialog1->FileName != ""){
new_file = CreateFile(saveFileDialog1->FileName, GENERIC_WRITE, 0, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
}
Какая ошибка:
d:\documents and settings\admin\мои документы\visual studio 2008\projects\my_project\my_project\Form1.h(203) : error C2664: 'CreateFileW' : cannot convert parameter 1 from 'System::String ^' to 'LPCWSTR'
Среда разработки:
visual C++

Помогите решить проблему

Надо преобразовать твою строку:
IntPtr ptr = System::Runtime::InteropServices::Marshal::StringT oHGlobalUni(saveFileDialog1->FileName);
А потом в вызове CreateFile вместо saveFileDialog1->FileName пишешь:
(LPCWSTR)ptr.ToPointer()
Удачи! :)

J0cker
21.03.2010, 19:25
Спасибо =))) Но это реальная жесть в чистом виде в частности преобразование =)))

wolmer
21.03.2010, 21:48
Создавай чистый win32 проект, а не CLR.
А чем CLR отличается от win32 проекта? (и вообще что такое CLR (Common Language Runtime) ?)

zeppe1in
22.03.2010, 01:53
(и вообще что такое CLR (Common Language Runtime) ?)
да)

razb
22.03.2010, 02:00
А чем CLR отличается от win32 проекта? (и вообще что такое CLR (Common Language Runtime) ?)
Используя CLR ты пишешь не на натив с++ а на мэнэджд с++ и используешь дотнэт где лучше отказаться от вызова винапи ф-ций.

adzona
23.03.2010, 18:28
помогите нубу:
Ошибка при компиляции в Qt creator в linux
выдает ошибку /bin/sh: : Permission denied
Press enter to close this window

razb
23.03.2010, 20:35
Permission denied
Тебе же ясно написали что не хватает прав на выполнение.

adzona
23.03.2010, 21:00
напомните пожалуйста как поднять права в этом случае
sudo nautilus
sudo -s -H
пробовал не получилось

InterLife
23.03.2010, 22:28
Приветствую ачатовцев! Хочу начать учить c++. Конкретно мне нужно писать под компилятор minGW. Подскажите книги или ресурсы (только русские). Нужно, чтобы решать задачи. И еще вопрос такой: мечта у меня есть, писать мобильные приложения. Правда, что с NDK под Андройд можно писать на cpp приложения или Java необходима?

raven314
23.03.2010, 22:59
какой компилятор взять новичку в с++ ?
мне не для ооп, но и с ним можно. помогите, прошу. с сылкой на скачивание plz.

BrainDeaD
23.03.2010, 23:10
удобней всего считаю Visual Studio (http://www.microsoft.com/express/Downloads/#2008-Visual-CPP)

Voz7Var
24.03.2010, 23:41
Друзья, повторюсь:

Всем салют)
У меня не то чтобы вопрос, но. Не мог бы кто-нибудь продемонстрировать как на c++ выглядит вот этот кликер для ютуба (http://depositfiles.com/files/jvv989vng) .

оlbaneс
25.03.2010, 00:54
какой компилятор взять новичку в с++ ?
мне не для ооп, но и с ним можно. помогите, прошу. с сылкой на скачивание plz.
https://forum.antichat.ru/thread89681.html

Ins3t
25.03.2010, 01:01
2оlbaneс, ему вообще то компилятор нужен был, а не статья "Начинаем программировать на C++, C#, ассемблере(win), Qt, Python, Java, AS3.", в которой ссылки на среду разработки Code::Blocks и Visual C++.

По теме: ICC

rudvil
25.03.2010, 01:03
2оlbaneс, ему вообще то компилятор нужен был, а не статья "Начинаем программировать на C++, C#, ассемблере(win), Qt, Python, Java, AS3.", в которой ссылки на среду разработки Code::Blocks и Visual C++.
А ты вообще ту статью читал?
там всё есть...

Ins3t
25.03.2010, 01:15
Ткни пальцем на то место, где речь идет конкретно о компиляторе, а не о среде разработки.

BrainDeaD
25.03.2010, 01:51
2оlbaneс, ему вообще то компилятор нужен был
я практически уверен, что он подразумевал именно среду разработки.

new-sl
27.03.2010, 12:31
всем привет решил написать шахматы решыл зделат ето спомошю 2Д арреятуда закидиваю обекты ну и правила написал как каждыи должен уметь ходить вот тепер хачу улучшыть игру хачу
чтобы компютар тоже играл тока как ето осуществит низнаю читал про "Альфа-бета отсечение" тока несовсем понял там про дерево говорится а я зделал с 2Д аррем ест у каво какие совети предложения

GrimmJow
27.03.2010, 13:44
Начал недавно изучать с++, в перерывах между обучением решаю легкие задачи. Но эту никак понять не могу:
"Дано трехзначное число. Найдите число, которое получится, если цифры исходного числа переписать в обратном порядке."

Можете не решить ее, а подсказать, как к ней подступиться? менять местами цифры - это можно реализовать с помощью какого-то арифметического действия?

new-sl
27.03.2010, 13:46
Начал недавно изучать с++, в перерывах между обучением решаю легкие задачи. Но эту никак понять не могу:
"Дано трехзначное число. Найдите число, которое получится, если цифры исходного числа переписать в обратном порядке."

Можете не решить ее, а подсказать, как к ней подступиться? менять местами цифры - это можно реализовать с помощью какого-то арифметического действия?


example: 123->321 Array[3]=1,2,3...
int temp;
temp=Array[0];
Array[0]=Array[3];
Array[3]=temp;

оlbaneс
27.03.2010, 14:45
Начал недавно изучать с++, в перерывах между обучением решаю легкие задачи. Но эту никак понять не могу:
"Дано трехзначное число. Найдите число, которое получится, если цифры исходного числа переписать в обратном порядке."

Можете не решить ее, а подсказать, как к ней подступиться? менять местами цифры - это можно реализовать с помощью какого-то арифметического действия?
берешь численый массив к примеру 123 первая ячейка 1 последняя 3. выводишь циклом этот массив в обратном порядке начиная с 3 и получится 321.

GrimmJow
27.03.2010, 16:16
2 оlbaneс, new-sl
Спасибо за пояснения. До массивов я еще не дошел, это след. глава. Буду изучать.

Idainet
27.03.2010, 17:45
GrimmJow,
Читаешь в строку, потом печатаешь ее с конца

Ins3t
27.03.2010, 18:06
Ну конечно же чтобы перевернуть число задом на перед его нужно превратить в строку, или запихнуть в массив. А никому из вас не пришло в голову просто поделить его на 10?
Дабы до вас дошло с первого раза - приведу пример:


//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include <iostream>
using std::cout;
using std::cin;
//////////////////////////////////////////////////////////////////////////
int main( int argc, char argv[] )
{
for( int number = 123456789; number > 0; number /=10 )
{
cout << number % 10;
}
cin.get();
return 0;
}
//////////////////////////////////////////////////////////////////////////

Idainet
27.03.2010, 19:30
Ins3t,
ок, запишешь так 123456789123456789123456789123456789 ? сетки не хватит
Со строкой все предельно просто
cin >> str;
for (int i=str.size()-1; i != -1; --i) cout << str[i];

DiHWO
27.03.2010, 19:38
Есть TextBox.
Если в него написать текст, а после текста поставить знак "\n", то
в TextBox каретка как положенно переместиться на строчку ниже, но,
после текста на первой строчке появляеться маленький квадратик.
Тоесть:

this->textBox1->text = "Hello World! \n";

Скрин:
http://i018.radikal.ru/1003/4d/cda142601d69.jpg
Что за квадратик? Как его убрать? Почему он появляеться?

Ins3t
27.03.2010, 20:10
Ins3t,
ок, запишешь так 123456789123456789123456789123456789 ? сетки не хватит
Со строкой все предельно просто
cin >> str;
for (int i=str.size()-1; i != -1; --i) cout << str[i];

Да-да-да, сложно проигрывать и хочется привести тупые доводы того что ты прав. Но сняв зеленые очки с надписью "I'm X-hacker", ты увидел бы задание задачи:

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

Можете не решить ее, а подсказать, как к ней подступиться? менять местами цифры - это можно реализовать с помощью какого-то арифметического действия?

Можешь не отвечать, ибо мне по***.

wolmer
27.03.2010, 20:26
Есть TextBox.
Если в него написать текст, а после текста поставить знак "\n", то
в TextBox каретка как положенно переместиться на строчку ниже, но,
после текста на первой строчке появляеться маленький квадратик.
Тоесть:

this->textBox1->text = "Hello World! \n";

Скрин:
http://i018.radikal.ru/1003/4d/cda142601d69.jpg
Что за квадратик? Как его убрать? Почему он появляеться?
textBox1->Text = "Hello world\r\nThis is my\r\ntrue programm ^_^";

t4Nk
27.03.2010, 20:33
wolmer, не пиши \r

Idainet
27.03.2010, 20:37
сняв зеленые очки с надписью "I'm X-hacker"
Прейдется снять и ходить без них :-(((

M.W.N.N.
27.03.2010, 21:29
Скачал статью по программированию Lpt портов

#include <stdio.h>
#include <stdlib.h>
#include <untd.h>
#include <asm/io.ish>
#define BASEPORT 0x378 /* lp1 */
int main(){
/* Получить доступ к порту */
if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);}
/* Вывод в порт (0) */
outb(0, BASEPORT);
/* Задержка (100 мс) */
usleep(100000);
/* Чтение из порта (BASEPORT+1) и вывод результатов на экран */
printf("статус: %d\n", inb(BASEPORT + 1));
/* Мы больше не нуждаемся больше в порту */
if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);}
exit(0);
}

При компилировании говорит что не хватает заголовочных файлов
untd.h
asm/io.ish
Подскажите пож-та где можно скачать или залейте пож-та.

[FREE]
27.03.2010, 22:11
не судите строго только начал
В общем мой вопрос
как вписать сюда ветвление
#include <iostream>
using namespace std;
int main()
{
float a,b,c;
c=0;
cout<<"Vvedite 3na4enie peremennoi a";
cin>>a;
cout<<"Vvedite 3na4enie peremennoi b";
cin>>b;
if (a>b) cout<<"3na4enie a="<<a ; else cout<<"3na4enie b="<<b;
return 0;
}
Нужно в ветвление вписать вот такую проверку if (a=b) cout<<0;
помогите чудо кодеры)

M.W.N.N.
27.03.2010, 22:22
if(a==b) cout << "0";

razb
27.03.2010, 22:28
При компилировании говорит что не хватает заголовочных файлов
untd.h
asm/io.ish
Подскажите пож-та где можно скачать или залейте пож-та.
Ты пишешь под никсами?
если да то могу предположить что у тебя опечатка
#include <unistd.h>
#include <asm/io.h>


Нужно в ветвление вписать вот такую проверку if (a=b) cout<<0;
помогите чудо кодеры)
if(a==b) {}

M.W.N.N.
27.03.2010, 22:29
Razb да под никсами, спс ща попробую

[FREE]

#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
float a,b,c;
c=0;
cout<<"Vvedite 3na4enie peremennoi a \n";
cin>>a;
cout<<"Vvedite 3na4enie peremennoi b \n";
cin>>b;

if(a>b){
cout<<"3na4enie a= "<<a <<"\n";
exit(0);
}
if (a==b){
cout<<0 <<"\n";
exit(0);
}
else{ cout<<"3na4enie b= "<<b << "\n";
exit(0);
}
}

Так?

M.W.N.N.
27.03.2010, 22:32
razb да в имени первой библиотеки опечатался, но
asm\io.h
port.c:4:20: error: asm/io.h: No such file or directory

Если есть возможность залей пож-та на обменник этот фаил.

razb
27.03.2010, 22:43
Этот хэдэр идет с исходниками ядра, можешь скачать поставить и указать к ним путь при компиляции. Заливать не буду т.к. там куча зависимостей от других хэдэров, проще скачать с kernel.org/репов и поставить.

[FREE]
27.03.2010, 23:16
ок спасибо, а как именно сюда вписать
if (a>b) cout<<"3na4enie a="<<a ; else cout<<"3na4enie b="<<b;?
просто объясните как вставлять несколько условий

Ins3t
27.03.2010, 23:57
']ок спасибо, а как именно сюда вписать
if (a>b) cout<<"3na4enie a="<<a ; else cout<<"3na4enie b="<<b;?
просто объясните как вставлять несколько условий

...
if( a > b )
{
int var = 1;
cout << "1";
}
else if( a < b )
{
int var = 2;
cout << "2";
}
else if( a == b )
{
int var = 3;
cout << "3";
}
else
cout << "Fuck OFF";
...

Это как пример, а вообще стоит почитать про операторы множественного выбора.

[FREE]
28.03.2010, 00:27
Ins3t спасибо облегчил жизнь

fker
28.03.2010, 02:09
Как программно инициировать событие Change компонента ComboBox?
с++ builder

zlo12
28.03.2010, 06:13
Самый лёгкий вопрос:
Копаясь в инете наткнулсо на книжку "С++ за 21 день". И подумал:"А почему бы и нет?!"...Всё бы кончилось хорошо, тока вот что: не знаю, что из ПО должно быть в наличии, чтоб изучать сей язык =( Подскажите плз
P.S. а если ещё и ссылочку на скачку дадите, я вообще счастлив буду.
----
Заранее спс

GrimmJow
28.03.2010, 11:12
2 zlo12
Ну, книгу, думаю, ты уже скачал )

Нужно еще Визуал Студио. Я пользуюсь версией 2008 (тоже учусь по книге 21день), хотя книга написана по более старой версии -2005

Ну и ссылка на скачку :
http://rutracker.org/forum/viewtopic.php?t=2566619

DiHWO
28.03.2010, 11:27
wolmer, сэнк чел! А можешь объяснить почему с "/r/n" квадратика нет, а просто с "/n" есть?

wolmer
28.03.2010, 14:00
wolmer, сэнк чел! А можешь объяснить почему с "/r/n" квадратика нет, а просто с "/n" есть?
\r (возврат каретки), \n (перевод строки)

windows - "\r\n", unix - "\n", macos - "\n\r"

zlo12
28.03.2010, 20:07
2 zlo12
Ну, книгу, думаю, ты уже скачал )

Нужно еще Визуал Студио. Я пользуюсь версией 2008 (тоже учусь по книге 21день), хотя книга написана по более старой версии -2005

Ну и ссылка на скачку :
http://rutracker.org/forum/viewtopic.php?t=2566619

спасибо большое

GrimmJow
28.03.2010, 22:39
Начал недавно изучать с++, в перерывах между обучением решаю легкие задачи. Но эту никак понять не могу:
"Дано трехзначное число. Найдите число, которое получится, если цифры исходного числа переписать в обратном порядке."

Можете не решить ее, а подсказать, как к ней подступиться? менять местами цифры - это можно реализовать с помощью какого-то арифметического действия?


Собственно, лучше поздно, чем никогда - додумался таки случайно, как сделать это.

Если кому-то интересно:

int a, b, c, d;
cout << "Enter: ";
cin >> d;

a = d/100;
b = (d-a*100)/10;
c = (d-a*100-b*10);

cout << c << b << a;

Life7
28.03.2010, 22:45
помогите нубу:
Ошибка при компиляции в Qt creator в linux
выдает ошибку /bin/sh: : Permission denied
Press enter to close this window

Ins3t
28.03.2010, 23:05
Написано же, что прав нету ( доступ запрещен, если дословно ):
Permission denied

transserg
29.03.2010, 14:08
привет всем... подскажите как собрать PCRE 8.02 под VS 2008?

GrimmJow
29.03.2010, 17:16
while( ( grade=cin.get() ) != EOF )
{
switch (grade){
case 'A': case 'a':
++aCount;
break;
default:
cout << "Введена неправельная буквенная оценка.\nВведите новую оценку.";
break;
}
}

Почему при вводе слова "EOF", цикл всё равно запускается?

Ins3t
29.03.2010, 18:01
Потому, что нужно вводить не слово "EOF", а <ctrl> + z в Windows, или <ctrl> + d в UNIX.

rudvil
30.03.2010, 14:12
[C++]
Нужно как-то ограничить используемую программой память, как в php.
Выставил в настройках к примеру "20 мб" и выше этой планки программа потреблять памяти не будет.
Насколько я понимаю, мне нужно перегрузить используемый мною оператор "new", и при каждой попытке выделении памяти, увеличивать счетчик.
Ессно на столько, на сколько я хочу выделить память, например "new int[25]" я буду проверять как if (currentMemory + sizeof(int) * 25 <= maxAllowedMemory) {
// тут пошло выделение...
}
else {
throw("что-нибудь");
}
я знаю что код будет не таким, это просто для примера...
И проверять не превысил ли он максимально допустимое значение, опять же скажем 20 мб...
Правильно я рассуждаю? илиже есть более правильные пути для решения этой задачи?

Dark_Scorpicore
30.03.2010, 16:38
Здравствуйте, господа форумчане!

Вопрос по C, именно по библиотеке curl.

Напомню, что в C для того, чтобы записать результат работы сессии курла, нужно юзать специальную функцию(в php удобнее - есть RETURNTRANSFER, но мы не ищем легких путей). Функция есть, нормально пишет.

Если сайт-жертва делает редирект, то curl использует параметр curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true); для перехода по редиректу. Но пишет в итоговую переменную исходник НЕ той странички, на которую был редирект, а самой первой, на которой была ссылка с редиректом.

Собственно, как решить данный трабл?

Спасибо за помощь.

qwert135
30.03.2010, 20:55
всем привет.как на С++ реализовать следующее действие: передать одномерный массив,заданный через указатель, из одной функции в другую.спасибо.

krypt3r
31.03.2010, 08:47
что-то типа

int func1 (int *array) {
...
}

int func2 (...) {
myvar = func1 (massiv)
}

где massiv - указатель на одномерный массив

SHiNiGaMi
01.04.2010, 20:30
rudvil

int CurrentMemory=0;
int *pint = new int;
if ((CurrentMemory +=sizeof(pint)) >= 20480)
{
cout << "память заполнена";
delete pint;
}
else CurrentMemory +=sizeof(*pint);

строго не судите, но возможно так

rudvil
01.04.2010, 23:46
rudvil

int CurrentMemory=0;
int *pint = new int;
if ((CurrentMemory +=sizeof(pint)) >= 20480)
{
cout << "память заполнена";
delete pint;
}
else CurrentMemory +=sizeof(*pint);

строго не судите, но возможно так
Спасибо конечно, но я пока-что остановился на этомvoid* operator new (std::size_t size) {
/*
тут проверка - не превысется ли лимит... при malloc
*/
void* mem = std::malloc(size);
if (!mem)
ail::fatal_error("\n[ALLOCATING FAILED]\n");
return mem;
}

void operator delete (void* mem) {
std::free(mem);
}

void* operator new[] (std::size_t size) {
/*
тут проверка - не превысется ли лимит... при malloc
*/
void* mem = std::malloc(size);
if (!mem)
ail::fatal_error("\n[ALLOCATING FAILED]\n");
return mem;
}

void operator delete[] (void* mem) {
std::free(mem);
}
т.б. глобально перегрузил операторы.

SeNaP
02.04.2010, 18:46
Начал изучать C++, но возник вопрос при запуске программ под Ubuntu.
В книге приведены примеры для среды Windows.

#include <cstdio>
#include <cstdlib>
#include<iostream>
using namespace std;
int main(int nNumberofArgs, char* pszArgs[])
{
int celsius;
cout << "Введите температуру в грудасах Цельсия";
...
...
}

Какие нужно директивы подключать?

Ins3t
02.04.2010, 19:00
Никакие, компилируй в линуксе:

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////////////////////
int main(int nNumberofArgs, char* pszArgs[])
{
int celsius;
cout << "Введите температуру в грудасах Цельсия";
...
...
}
//////////////////////////////////////////////////////////////////////////

g++ main.cpp -o program

transserg
02.04.2010, 20:28
возник вопрос... если я компилю проект с ключем

#pragma comment(linker, "/NODEFAULTLIB")

то естественно неработают такие функции как memcpy memcat memmove
чем их заменить и как работать тогда с памятью выделать перемещать копировать?

rudvil
02.04.2010, 20:31
void operator delete (void* mem) {
std::free(mem);
}
void operator delete[] (void* mem) {
std::free(mem);
}Как можно узнать сколько байт в памяти занимает "mem"?
если это вообще реально...

Поясню, при выделении памяти с помощьюvoid* operator new (std::size_t size) {
usedMemory += size;
void* mem = std::malloc(size);
if (!mem)
ail::fatal_error("\n[ALLOCATING FAILED]\n");
return mem;
}все просто - мы уже получаем размер выделяемой памяти, собственно хочется так же узнать сколько памяти удаляется при вызове delete или delete[], чтобы уменьшить счетчик используемой памяти...

mailbrush
03.04.2010, 23:41
http://forum.antichat.ru/thread193272.html

Deathdreams
04.04.2010, 21:44
Решил начать изучать C++, как выставить размеры окна при запуске программы ?
По дефолту там большое окно и позиционирование плохое.
Нужно задать свои значения для WIN приложения, гугл не сказал.

skagen
04.04.2010, 23:22
подскажите,кто каким учебником пользуется по c#?

microp
04.04.2010, 23:37
Решил начать изучать C++, как выставить размеры окна при запуске программы ?
По дефолту там большое окно и позиционирование плохое.
Нужно задать свои значения для WIN приложения, гугл не сказал.
this->ClientSize=System:: Drawing::Size(800,600);
Вот так он рисует форму, и так можно поменять. Возможно надо еще менять this->Size.Width= *;this->Size.Height= *;

подскажите,кто каким учебником пользуется по c#?
Я читал Шилдта. Препод давал лекции по "C# Справочник" Албахари

Fooog
07.04.2010, 21:17
Говорю сразу, в С/С++, C# и Delphi не шарю.
Вопрос таков, кто может накодить программку которая будет проверять обновления на определенной (заданной мной) странице форума каждые сколько то минут, которые мог выбрать я. Например мог выставить проверять каждые 1, 3, 5, 10, 15, 20 или другое заданное время.
Идея что бы программа находила отличие например в размере странице, или мб ещё в чем то... И если оно не совпадет с тем какой страница была при запуске программы, оно выдавало сообщние (ещё лучше чтоб со звуком)).
Проблема при создании такого в том, что если много рекламы и она выводиться поочередно, то будет явное отличие.
Вот. Если кто возьмется за такое, то я потом подробнее объясню чего бы хотел.

Linkus
07.04.2010, 21:21
накодить программку которая будет проверять обновления на определенной (заданной мной) странице форума

сделаю! каков бюджет? :)
icq: 424 385 386

Fooog
07.04.2010, 22:19
Linkus, если ты думаешь что я прошу платно это сделать, то как ты думаешь? Я раздел Покупка, Продажа, Обмен, Раздача не заметил? Пропустил? Почему я пишу сюда?
Я прошу помочь! А помощь оплачиваемая деньгами, это не помощь.

razb
08.04.2010, 02:58
Linkus, если ты думаешь что я прошу платно это сделать, то как ты думаешь? Я раздел Покупка, Продажа, Обмен, Раздача не заметил? Пропустил? Почему я пишу сюда?
Я прошу помочь! А помощь оплачиваемая деньгами, это не помощь.
Вряд ли кто то тут возьмется сделать безвозмездно )

gold-goblin
09.04.2010, 00:19
Только начал читать книгу по С++.
Вопрос: Как в Microsoft Visual C++ 2008 Express Edition скомпилить прогу из файла?
код:

#include <iostream.h>

int main()
{
cout << "hello world\n";
return 0;
}

emillord
09.04.2010, 00:22
Только начал читать книгу по С++.
Вопрос: Как в Microsoft Visual C++ 2008 Express Edition скомпилить прогу из файла?
код:

#include <iostream.h>

int main()
{
cout << "hello world\n";
return 0;
}

Книга Джесс Либерти. C++ за 21 день ?
Если да, то
1)Убирать из инклюдов .h
2)Дописывать после инклюдов строку "using namespace std;"

gold-goblin
09.04.2010, 00:24
Книга Джесс Либерти. C++ за 21 день ?
Если да, то
1)Убирать из инклюдов .h
2)Дописывать после инклюдов строку "using namespace std;"
Да спасибо, уже нашел эту тему на ачате =))

rudvil
09.04.2010, 00:24
Только начал читать книгу по С++.
Вопрос: Как в Microsoft Visual C++ 2008 Express Edition скомпилить прогу из файла?
код:

#include <iostream.h>

int main()
{
cout << "hello world\n";
return 0;
}

http://cplus.about.com/od/learnc/ss/vc2008_7.htm

з.ы.#include <iostream>

int main () {
std::cout << "hello world\n";
std::cin.get();
return 0;
}

gold-goblin
09.04.2010, 00:37
И все равно в моем коде ошибка:
Внедрение манифеста...
mt.exe : general error c10100b1: Failed to load file "..\Debug\helloy.exe". !8AB5<5 =5 C405BAO =09B8 C:070==K9 ?CBL.


#include <iostream>

int main () {
std::cout << "hello world\n";
std::cin.get();
return 0;
}
почему так а не как в учебнике?

rudvil
09.04.2010, 00:43
И все равно в моем коде ошибка:


#include <iostream>

int main () {
std::cout << "hello world\n";
std::cin.get();
return 0;
}
почему так а не как в учебнике?
Учебник старый))
"std::cin.get()" для того чтобы программа сразу не закрывалась после вывода текста.
Если неудобно везде писать "std::" то можно после инклудов прописать "using namespace std;", как уже писал emillord.
У меня компилит... попробуй переустановить студию.

razb
09.04.2010, 00:45
Попробуй сделать полный клин и ребилд проекта

gold-goblin
09.04.2010, 00:54
все без изменений...
http://i.piccy.info/i4/88/49/a83199d6ab1601738a15a14b1575.jpeg (http://piccy.info/view/c7947a3e406d5153429de6e38f5f4044/)

SeNaP
09.04.2010, 17:12
int main(int nNumberofArgs, char* pszArgs[])
{

cout << "Введите текст:\n";
string text;
cin >> text;
cout << "Всего символов:"
<< strlen(text) << "!";
return 0;
}
где ошибка?

main.cpp: In function ‘int main(int, char**)’:
main.cpp:23: error: ‘strlen’ was not declared in this scope

Ins3t
09.04.2010, 17:27
///////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
#include <iostream>
using std::cout;
using std::cin;
///////////////////////////////////////////////////////////////////
#include <string>
using std::string;
///////////////////////////////////////////////////////////////////
int main(int nNumberofArgs, char * pszArgs[])
{
cout << "Введите текст:\n";
string text;
cin >> text;
cout << "Всего символов:" << text.length() << "!";
return 0;
}
///////////////////////////////////////////////////////////////////

SeNaP
09.04.2010, 17:34
///////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
#include <iostream>
using std::cout;
using std::cin;
///////////////////////////////////////////////////////////////////
#include <string>
using std::string;
///////////////////////////////////////////////////////////////////
int main(int nNumberofArgs, char * pszArgs[])
{
cout << "Введите текст:\n";
string text;
cin >> text;
cout << "Всего символов:" << text.length() << "!";
return 0;
}
///////////////////////////////////////////////////////////////////


Можно ссылку на мануал? :)

Ins3t
09.04.2010, 17:45
Ну я не знаю какой мануал тебе нужен, но проблема, по все видимости, заключается в твоем компиляторе (g++ 4.3/gcc 4.3). Иза чего так я не скажу, так как под линукс редко пишу.

gold-goblin
09.04.2010, 17:49
А мне подскажет кто что ни буть?
#include <iostream.h>

int main()
{
cout << "hello world\n";
return 0;
}
Внедрение манифеста... mt.exe : general error c10100b1: Failed to load file "..\Debug\helloy.exe". !8AB5<5 =5 C405BAO =09B8 C:070==K9 ?CBL.
И какую книгу посоветуете? С++ за 21 день как я понял устарела

Ins3t
09.04.2010, 17:56
///////////////////////////////////////////////////
///////////////////////////////////////////////////
#include <iostream>
using std::cout;
///////////////////////////////////////////////////
int main()
{
cout << "hello world\n";
return 0;
}
///////////////////////////////////////////////////


Ты, по всей видимости, не закрыл запущеную под дебагом программу.
Закрой все что с ней связано и собери проект по новой.

Хорошая книга - Х.М. Дейтел, П.Дж. Дейтел Как программировать на С++ 5-е издание ( полное ). Но в сети ты ее вряд ли найдешь.

gold-goblin
09.04.2010, 18:03
Большое спасибо.
Проблема решилась добавлением #include "stdafx.h"

ntldr
09.04.2010, 22:46
Подскажите книгу, в которой описаны все тонкости, директивы, и т.д. языка С или С++. А то ничего годного не могу найти, везде одно и тоже - хелоуворлды и циклы :(

Ins3t
09.04.2010, 22:56
Джеффри Рихтер, Кристоф Назар
Windows via C/C++. Программирование на языке Visual C++

http://www.ozon.ru/context/detail/id/4079733/

rudvil
09.04.2010, 23:21
void operator delete (void* mem) {
std::free(mem);
}
void operator delete[] (void* mem) {
std::free(mem);
}Как можно узнать сколько байт в памяти занимает "mem"?
если это вообще реально...

Поясню, при выделении памяти с помощьюvoid* operator new (std::size_t size) {
usedMemory += size;
void* mem = std::malloc(size);
if (!mem)
ail::fatal_error("\n[ALLOCATING FAILED]\n");
return mem;
}все просто - мы уже получаем размер выделяемой памяти, собственно хочется так же узнать сколько памяти удаляется при вызове delete или delete[], чтобы уменьшить счетчик используемой памяти...
Мб пригодитсяvoid* operator new (std::size_t size) {
if (currentMemory + size >= maxMemory)
fatal_error("REACHED MEMORY LIMIT, EXITING..");
currentMemory += size;
void* ptr = std::malloc(size + sizeof(std::size_t));
if (ptr == NULL)
fatal_error("new - MALLOC FAIL\n");
*(std::size_t*)ptr = size;
return ((std::size_t*)ptr) + 1;
}

void operator delete (void* ptr) {
std::size_t size = (*(((std::size_t*)ptr) - 1));
currentMemory -= size;
ptr = (void*)(((std::size_t*)ptr) - 1);
std::free(ptr);
}

void* operator new[] (std::size_t size) {
if (currentMemory + size >= maxMemory)
fatal_error("REACHED MEMORY LIMIT, EXITING..");
currentMemory += size;
void* ptr = std::malloc(size + sizeof(std::size_t));
if (ptr == NULL)
fatal_error("new[] - MALLOC FAIL\n");
*(std::size_t*)ptr = size;
return ((std::size_t*)ptr) + 1;
}

void operator delete[] (void* ptr) {
std::size_t size = (*(((std::size_t*)ptr) - 1));
currentMemory -= size;
ptr = (void*)(((std::size_t*)ptr) - 1);
std::free(ptr);
}
т.б. в выделяемый блок памяти добавляем сигнатуру, в которой хранится размер выделенного блока.

DiHWO
10.04.2010, 14:50
Всем привет. Возник вопрос, как с помощью винапи создать кнопку и эдит. Для этого нужна CreateDialog? Если нет, то для чего она? Мне сейчас нужно просто создать кнопку и эдит.

rudvil
10.04.2010, 14:53
тыц1 (http://www.relisoft.com/win32/index.htm)
тыц2 (http://www.winprog.org/tutorial/)

DiHWO
10.04.2010, 15:05
rudvil, спасибо, первая ссылка помогла.

mailbrush
10.04.2010, 18:51
Как в Borland C++ Builder преобразовать обычную строку в UTF-8?

Заранеее спасибо.

rudvil
10.04.2010, 19:08
Первая ссылка... (http://www.google.lv/search?sourceid=chrome&ie=UTF-8&q=borland+c%2B%2B+string+to+utf-8)

mailbrush
10.04.2010, 19:15
В гугле ничего не нашёл.

Guffi
10.04.2010, 19:53
Ну во первых обычная строка это наверное акси? Если так то держи есть функция в WinAPI для этого:
//MultiByteToWideChar преобразуют строку однобайтовых символов в строку Unicode
//функции wcstombs и WideCharToMultiByte выполняют обратное преобразование.
Определения функций параметры примеры всё в SDK...

mailbrush
10.04.2010, 21:47
Guffi, вот такое нашёл:

char *ansistr = "привет";
int a = lstrlenA(ansistr);
BSTR unicodestr = SysAllocStringLen(NULL, a);
::MultiByteToWideChar(CP_ACP, 0, ansistr, a, unicodestr, a);
//... when done, free the BSTR
::SysFreeString(unicodestr);

Но ничего не конвертирует.

eldar85
11.04.2010, 03:42
как с помощью libcurl отправлять картинку на сайт методом пост??
может кто знает, помогите разобраться.
эту картинку в string перевести лучше или куда???

eldar85
11.04.2010, 03:50
curl_formadd(&post, &last, CURLFORM_COPYNAME, "file", CURLFORM_FILE, file, CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END);

вот это вроде что то похожее нашел, но не знаю как теперь применить это))

mailbrush
11.04.2010, 10:19
Как в Borland C++ Builder преобразовать обычную строку в UTF-8?

Заранеее спасибо.
Все еще актуально.

mailbrush
11.04.2010, 13:04
Товарищ M_script_ мне скинул готовую функцию, за что ему спасибо.

//---------------------------------------------------------------------------
String MultibyteToUTF8(String sSource)
{
WideString wsStr = sSource;
String sTarget;
char *pTargetData = NULL;
int iTargetLen = WideCharToMultiByte(CP_UTF8,
0,
wsStr,
-1,
pTargetData,
0,
NULL,
NULL);

pTargetData = new char[iTargetLen + 1];
memset(pTargetData, 0, iTargetLen + 1);
WideCharToMultiByte(CP_UTF8,
0,
wsStr,
-1,
pTargetData,
iTargetLen,
NULL,
NULL);
char *data = pTargetData;
sTarget = data;
delete []pTargetData;
pTargetData = NULL;
return sTarget;
}
//---------------------------------------------------------------------------

BEGINER
11.04.2010, 19:03
Как в Borland C++ Builder преобразовать обычную строку в UTF-8?
WideCharToMultiByte(CP_ACP, 0, wstr, wcslen(wstr),str,strlen(str), NULL, NULL);
memset(str,0,strlen(str));
MultiByteToWideChar(CP_UTF8,0, str, strlen(str), wstr, wcslen(wstr));

gold-goblin
12.04.2010, 00:27
#include "stdafx.h"
#include <iostream>
using std::cout;
main()
{
cout << "hello there. \n";
cout << "Here is 5: " << 5 << "\n";
cout << "the monipylator end writes a new line to the screen";
cout <<
endl;
cout << "here is veri big number: \t" << 70000 << endl;
return 0;
}
error C2065: endl: необъявленный идентификатор
Вот в чем дело не подскажите?
Кстати какую актуальную книгу по С++можно найти в электронном виде?

razb
12.04.2010, 01:18
error C2065: endl: необъявленный идентификатор
endl находится в контексте std значит либо using std::endl либо using namespace std

gold-goblin
12.04.2010, 01:22
endl находится в контексте std значит либо using std::endl либо using namespace std
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию

fluffylion
12.04.2010, 01:45
// первый вариант
#include <iostream>
int main()
{
std::cout << "hello there. \n";
std::cout << "Here is 5: " << 5 << "\n";
std::cout << "the monipylator end writes a new line to the screen";
std::cout << std::endl;
std::cout << "here is veri big number: \t" << 70000 << std::endl;
return 0;
}

// второй вариант
/*#include <iostream>
using namespace std;
int main() {
cout << "hello there. \n";
cout << "Here is 5: " << 5 << "\n";
cout << "the monipylator end writes a new line to the screen";
cout << endl;
cout << "here is veri big number: \t" << 70000 << endl;
return 0;
}*/

karasuk
12.04.2010, 12:25
Привет. Вот начал изучать С++ скачал книгу С++ за 21 день. И сразу же столкнулся с проблемой в первой программе. Сам код:
#include <iostream>
using namespace std;

int main()
{
cout <<Hello World!\n";
return 0;
Вот ошибка:
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\hello\hello\hello.h(7) : error C2143: синтаксическая ошибка: отсутствие ";" перед "строка"
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\hello\hello\hello.h(8) : error C2143: синтаксическая ошибка: отсутствие ";" перед "return"
1>Журнал построения был сохранен в "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\hello\hello\Debug\BuildLog.htm"
1>hello - ошибок 9, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

zeppe1in
12.04.2010, 12:50
"Hello World!\n"

karasuk
12.04.2010, 13:19
уже допер))
другой вопрос. Когда начиная отладку просит указать имя исполняемого файла, который будет использоваться в отладочной сессии. Че за файл? и где его взять?
извиняюсь за тупые вопросы

zeppe1in
12.04.2010, 14:59
ты видимо дллку собираешь а не екзе.

Keltos
12.04.2010, 15:05
Привет. Вот начал изучать С++ скачал книгу С++ за 21 день. И сразу же столкнулся с проблемой в первой программе. Сам код:
#include <iostream>
using namespace std;

int main()
{
cout <<Hello World!\n";
return 0;
Вот ошибка:
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\hello\hello\hello.h(7) : error C2143: синтаксическая ошибка: отсутствие ";" перед "строка"
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\hello\hello\hello.h(8) : error C2143: синтаксическая ошибка: отсутствие ";" перед "return"
1>Журнал построения был сохранен в "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\hello\hello\Debug\BuildLog.htm"
1>hello - ошибок 9, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

#include "stdafx.h"
#include "iostream"
using namespace std;

void main(){
cout << "Hello world!";
system("PAUSE";
}

Ins3t
12.04.2010, 16:10
#include "stdafx.h"
#include "iostream"
using namespace std;

void main(){
cout << "Hello world!";
system("PAUSE";
}


Я, видимо, чего то не понимаю, но с каких это пор стандартный хидер iostream находится в папке с исходниками?

Вы бы хотябы проверяли, компилируется ли ваш хелло ворлд перед тем, как постить его.

Rhcs
12.04.2010, 17:46
Привет.
Мне нужно сделать выделение произвольной области мышкой (по типу лассо в фотошопе) на изображении и сохранение выделенной области в файл.
Само первоначальное изображение загружаю в Image.
Поможете??? :rolleyes:

Keltos
12.04.2010, 18:28
Я, видимо, чего то не понимаю, но с каких это пор стандартный хидер iostream находится в папке с исходниками?

Вы бы хотябы проверяли, компилируется ли ваш хелло ворлд перед тем, как постить его.
Если бы не компилировался не постил бы.

Ins3t
12.04.2010, 18:59
Классный у тебя компилятор, если компилирует программы с синтаксическими ошибками.

b82a
12.04.2010, 20:10
Продукты от MS и Borland мозга ебут. Поставил Code::Blocks - всё ок.

Текст:

#include <iostream>
using namespace std;

int main()
{
cout << "Hello World!\n";
return 0;
}

chamomilla
12.04.2010, 22:39
Приветствую!
Подскажите, как получить доменное имя компьютера?
(средствами С/С++)

Ins3t
12.04.2010, 23:26
Если я тебя правильно понял то вот:


//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#undef UNICODE
//////////////////////////////////////////////////////////////////////////
#include <stdio.h>
//////////////////////////////////////////////////////////////////////////
#include <windows.h>
//////////////////////////////////////////////////////////////////////////
int main( int argc, char * argv[] )
{
DWORD size = 256;
CHAR buffer[128];

GetComputerNameEx( ComputerNameDnsDomain, buffer, &size );

printf( "%s", buffer );
return 0;
}
//////////////////////////////////////////////////////////////////////////


Для получения имени NetBIOS замени первый параметер ф-и GetComputerNameEx на
ComputerNameNetBIOS

chamomilla
12.04.2010, 23:45
Сейчас будем пробовать... ядумаю это то что нужно))отпишусь о результате))
Спасибо за помощь!!!
и еще такой вопросик:
может я не четко выражусь - если стоит ExChange Server, моя учетная запись account@server.com, как мне получить имя домена (то есть - server.com)???прошу прощения, если вопрос немножко некоректен)))кто знает - поправьте)))

VIP
13.04.2010, 00:17
Недавно начал изучать компьютерную графику. Возник вопрос по работе надстроек к OpenGL. Поскольку пишу на C/C++ решил запостить в эту тему.

Толком ни в одной из мною прочитанных книг (статей, сайтов и т.д.) не расписано подробно как работают GLAUX и GLUT. Как я понял методом "научного тыка", при работе с GLAUX сначала создаётся окно (в моём случае виндовое), инициализируется обработчик клавиш и мыши и т.д., а затем после входа в функцию auxMainLoop(func_name);
рисуется то, что записано в func_name и прога постоянно отрисовывает картинку заново. Поэтому когда я зажав на объекте ЛКМ двигаю мышь, то он у меня крутиться при зажатой кнопке мыши.
При работе с GLUT'ом, как я понял, всё происходит несколько иначе. Аналогично сначала создаётся окошко, устанавливаются обработчики клавиш и мыши, устанавливается функция, которая отрисовывает сцену:
glutDisplayFunc(func_name);
а потом программа входит в функцию
glutMainLoop(); и ждёт событий (истёкший таймер, клавиатура, мышь и т.д.), после поступления который картинка обновляется.
В связи с этим возник вопрос: как сделать, чтобы через GLUT можно было бы "покрутить" объект мышкой (не отпуская кнопку мыши), аналагично как это делается через GLAUX этим кодом:

void CALLBACK mouse(AUX_EVENTREC *event)
{
static int x0,y0=-12345;

if(y0!=-12345)
{
central_line_rotate_Y += event->data[AUX_MOUSEX] - x0;
central_line_rotate_X += event->data[AUX_MOUSEY] - y0;
}

x0 = event->data[AUX_MOUSEX];
y0 = event->data[AUX_MOUSEY];
}

P.S. Код взят из книги Тарасова.

P.S. Если я что-то не так понимаю, то, пожалуйста, поправьте меня. Дело в том, что как начинаешь читать книгу, так там либо про GLUT (без упоминаний о GLAUX), либо наоборот =( А вот чем они координально отличаются никак не могу разобрать.

Заранее спасибо за помощь!

gold-goblin
15.04.2010, 23:58
Не подскажите как установить кодировку текста win -1251?
среда вижуал студия 2008.
код:
// calc.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
int integer1, integer2, sum;
cout << "введите первое число \n";
cin >> integer1;
cout << "Введите второе число \n";
cin >> integer2;
sum = integer1 + integer2;
cout <<"Сумма равна" << sum <<endl;
return 0;
}

Ins3t
16.04.2010, 00:01
// calc.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
setlocale( 0, "Rus" );
int integer1, integer2, sum;
cout << "введите первое число \n";
cin >> integer1;
cout << "Введите второе число \n";
cin >> integer2;
sum = integer1 + integer2;
cout <<"Сумма равна" << sum <<endl;
return 0;
}

gold-goblin
16.04.2010, 00:03
Огромное спасибо!

gold-goblin
16.04.2010, 00:19
Вопрос: почему переменной типа int можно присвоить чаровское (буквенное значение) и операция выполнится? почему не произойдет ошибки?

fluffylion
16.04.2010, 00:30
Вопрос: почему переменной типа int можно присвоить чаровское (буквенное значение) и операция выполнится? почему не произойдет ошибки?

Потому что тип int по размеру больше чем char.

gold-goblin
16.04.2010, 00:33
Потому что тип int по размеру больше чем char.
Где про это можно почитать подробней?

Ins3t
16.04.2010, 00:42
Вопрос: почему переменной типа int можно присвоить чаровское (буквенное значение) и операция выполнится? почему не произойдет ошибки?

Ты присваиваешь типу int ASCI код символа:


//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include <iostream>
using std::cout;
using std::endl;
//////////////////////////////////////////////////////////////////////////
int main( int argc, char * argv[] )
{
int var = 'a';
cout << var << endl;
return 0;
}
//////////////////////////////////////////////////////////////////////////


В данном случае ASCI код символа 'a' равен 97.

BrainDeaD
16.04.2010, 00:46
Где про это можно почитать подробней?
_http://www.languagec.info/preobr_tipov.php
_http://www.cppnet.ru/c/tipdan.html

fluffylion
16.04.2010, 00:47
Где про это можно почитать подробней?

Например, С.Прата - Язык программирования C++.Лекции и упражнения

см. 3ю главу

gold-goblin
16.04.2010, 00:48
В данном случае ASCI код символа 'a' равен 97.
что-то не сходится... если сразу ввести первое значение аски символом то программа не предлагает ввести 2 число а просто выводит ответ не соответствующий номерам аски.

Ins3t
16.04.2010, 01:02
Не совсем понял.
Куда вводишь?


//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include <iostream>
using std::cout;
//////////////////////////////////////////////////////////////////////////
int main( int argc, char * argv[] )
{
cout << static_cast<int>('c') << " = " << static_cast<char>(99);
return 0;
}
//////////////////////////////////////////////////////////////////////////


Все сходится.

---

UPD:
Или же, если ты хотел получить аски нескольких символов:

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
//////////////////////////////////////////////////////////////////////////
int main( int argc, char * argv[] )
{
char var[256];
cin.getline( var, 255 );

for( int i = 0; i < strlen( var ); i++ )
{
cout << var[i] << " = " << static_cast<int>( var[i] )
<< endl;
}

return 0;
}
//////////////////////////////////////////////////////////////////////////

Neith
16.04.2010, 13:58
Здраствуйте Товарищи!
Объясните такую вещь.. Почему переменной (float) нельзя присвоить результат деления двух int переменных (например 5 и 7), чтобы результат получился дробный? Как выход, приходиться менять тип какой-нибудь одной или обеих int переменных на float. Другими словами, если для такой операции нужны float переменные, то почему нет какой-то строгости чтобы, например, обе переменные были типа float?
ПС. Использую VC++ 6.0

fluffylion
16.04.2010, 14:24
Потому что тип int предназначен для хранения целых чисел, и соответственно при делении двух переменных типа int в результате получается целое число - дробная часть отбрасывается.

gold-goblin
16.04.2010, 17:57
Не совсем понял.
Куда вводишь?


//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include <iostream>
using std::cout;
//////////////////////////////////////////////////////////////////////////
int main( int argc, char * argv[] )
{
cout << static_cast<int>('c') << " = " << static_cast<char>(99);
return 0;
}
//////////////////////////////////////////////////////////////////////////


Все сходится.

---

UPD:
Или же, если ты хотел получить аски нескольких символов:

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
//////////////////////////////////////////////////////////////////////////
int main( int argc, char * argv[] )
{
char var[256];
cin.getline( var, 255 );

for( int i = 0; i < strlen( var ); i++ )
{
cout << var[i] << " = " << static_cast<int>( var[i] )
<< endl;
}

return 0;
}
//////////////////////////////////////////////////////////////////////////

Есть такой код
#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
int integer1, integer2, sum;
cout << "введите первое число \n";
cin >> integer1;
cout << "Введите второе число \n";
cin >> integer2;
sum = integer1 + integer2;
cout <<"Сумма равна" << sum <<endl;
return 0;
}
Если integer1 приравнять (ввести) аски символ то вы полняются все строки кода кроме cin >> integer2;/
Sum в таком случае приравнивается к отрицательному числу.

Ra$cal
16.04.2010, 19:51
чтобы делить с остатком инты их надо приветси к флоэту

float result = static_cast<float>int1 / static_cast<float>int2;

gold-goblin
17.04.2010, 02:03
#include "stdafx.h"
#include <iostream>
using namespace std;

unt main()
{
setlocale( 0, "Rus" );
int num1, num2;
cout << "Введите первое число\n";
cin >> num1;
cout << "Введите второе число\n";
cin >> num2;
cout << "Проведем простейший анализ файла\n";
if (num1 == num2)
cout << num1 << " Равно " << num2 << endl;
if (num1 != num2)
cout << num1 << " не равно " << num2 << endl;
if (num1 < num2)
cout << num1 << " меньше " << num2 << endl;
if (num1 > num2)
cout << num1 << " больше " << num2 << endl;
cout << "Сумма этих чисел равна :\n" << num1 + num2 << endl;
return 0;
}
if test.cpp(8) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "main"
1>if test.cpp(8) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>if test.cpp(9) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
И где можно прочитать про разницу старых книг и нового (измененого) синтаксиса языка?

fluffylion
17.04.2010, 02:05
Есть такой код
#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
int integer1, integer2, sum;
cout << "введите первое число \n";
cin >> integer1;
cout << "Введите второе число \n";
cin >> integer2;
sum = integer1 + integer2;
cout <<"Сумма равна" << sum <<endl;
return 0;
}
Если integer1 приравнять (ввести) аски символ то вы полняются все строки кода кроме cin >> integer2;/
Sum в таком случае приравнивается к отрицательному числу.

В данном случае cin >> будет безошибочно считывать только цифровые символы, т.к. значение переменной, куда будет записан результат имеет тип int. Если же ввести например 123a, то integer1 будет равен 123, символ 'a' не учтется. При этом также будет установлен бит ошибки (failbit) и следовательно выражение cin >> integer2; не выполнится, так как установлен один из битов состояния потока (cin). Отрицательное или некорректное значение в sum при неправильном вводе получается из-за того, что локальные переменные при создании не обнуляются.

rudvil
17.04.2010, 02:06
И где можно прочитать про разницу старых книг и нового (измененого) синтаксиса языка?
http://www.cplusplus.com/doc/tutorial/
имхо лучший тутор, на англ. языке

fluffylion
17.04.2010, 02:07
#include "stdafx.h"
#include <iostream>
using namespace std;

unt main()
{
setlocale( 0, "Rus" );
int num1, num2;
cout << "Введите первое число\n";
cin >> num1;
cout << "Введите второе число\n";
cin >> num2;
cout << "Проведем простейший анализ файла\n";
if (num1 == num2)
cout << num1 << " Равно " << num2 << endl;
if (num1 != num2)
cout << num1 << " не равно " << num2 << endl;
if (num1 < num2)
cout << num1 << " меньше " << num2 << endl;
if (num1 > num2)
cout << num1 << " больше " << num2 << endl;
cout << "Сумма этих чисел равна :\n" << num1 + num2 << endl;
return 0;
}

И где можно прочитать про разницу старых книг и нового (измененого) синтаксиса языка?

int main()

gold-goblin
17.04.2010, 02:09
тфу спасибо, я описался =)
и спасибо за разяснение!

qwert135
17.04.2010, 12:12
всем привет.народ,подскажите плиз,как на С++ возводить отрицательное число в степень.прост я знаю как это сделать только через ln, а с отрицательными эт не прокатывает

fluffylion
17.04.2010, 13:05
всем привет.народ,подскажите плиз,как на С++ возводить отрицательное число в степень.прост я знаю как это сделать только через ln, а с отрицательными эт не прокатывает

В math.h (cmath) есть функции pow и powl.

Или же нижеследующая функция (не учитывает переполнение):

int pow(int nNumber, unsigned int unP)
{
int nRes = 1;
if (nNumber != 0)
{
while (unP--)
nRes *= nNumber;
}
else
nRes = 0;
return nRes;
}

qwert135
18.04.2010, 00:10
fluffylion, спасиб, но уже сам разобрался.Вопрос конечно не в тему, но может у кого учебник есть или сайт какой знаете, где описано нахождение экстремума функции методом двух касательных,насколько я понял это же метод Ньютона

Мяфк
19.04.2010, 15:43
У меня вопрос по Windows Form. В общем надо, что бы когда в одном текстбоксе пользователь вводил текст, и нажимал кнопку ОК, в другом текстбоксе появлялся этот самый текст. Подскажите пожалуйста.

Ra$cal
19.04.2010, 16:55
во первых - это C++\CLR, в форум по дотнету.
во вторых - уверен, что это описано в любой книжке по дотнету, и в мсдне так же имеются примеры.

gold-goblin
19.04.2010, 18:56
Подкиньте пожалуйста статей по написании gui на С++. Интересует windows form, и все что вы порекомендуете =)

[@p05]
19.04.2010, 20:36
Qt 4: Программирование GUI на C++ Скачать (http://depositfiles.com/ru/files/z4qsphvsr)
Qt 4: Программирование GUI на С++. Изд. 2-е Скачать (http://depositfiles.com/ru/files/3urop94qd)

gold-goblin
20.04.2010, 00:05
Правильно ли я понял что qt можно обеденить только с полной (платной) версией Vs 2008?
Если да то реально ли ее найти?

BrainDeaD
20.04.2010, 00:13
на оборот: только платную qt можно объединять VS. платную qt я, когда год назад искал, в паблике не нашёл.
ну и с экспрессом наверное тоже не покатит.

gold-goblin
20.04.2010, 00:18
на оборот: только платную qt можно объединять VS. платную qt я, когда год назад искал, в паблике не нашёл.
ну и с экспрессом наверное тоже не покатит.
Хорошо. А как тогда вести разработку gui приложений не объединяя qt и vs?

Ins3t
20.04.2010, 00:18
2BrainDeaD, по моему вы что то путаете.
Я качал QT с официального сайта и прекрасно прикрутил к студии.

Что нужно:

1. QT SDK (Качаем с http://qt.nokia.com/downloads)
2. Visual Studio Add-in (Качаем с http://qt.nokia.com/downloads/visual-studio-add-in)
3. Microsoft Visual Studio 2008 (Разумеется :) )

Лезем в «Мой компьютер -> Свойства -> Дополнительно -> Переменные Среды».

Добавляем новую переменную с именем «QTDIR» и значением переменной «C:Qt2009.05qt». Так же точно создаем еще одну переменную «QMAKESPEC» со значением «win32-msvc2008» и добавляем в уже существующую переменную Patch «;C://QT2009.05/qt/bin»

Сохраняем.

Теперь идем в «Пуск -> Все программы -> Microsoft Visual Studio 2008 -> Visual Studio Tools -> Visual Studio 2008 Command Prompt», из нее переходим в директорию QT, где лежит файл configure.exe (cd C://QT2009.05/qt).

И выполняем «configure», отвечая на все нужные вопросы.

Если все ок – переходим к следующему этапу – качаем Visual Studio Add-in и устанавливаем его. После чего открываем Visual Studio, выбираем «QT -> QT Options», жмем Add и прописываем «QTDIR» и «C://QT2009.05/qt».

Вот и все.

---

UPD:
Хорошо. А как тогда вести разработку gui приложений не объединяя qt и vs?

Использовать QT Creator.

BrainDeaD
20.04.2010, 00:21
в gcc. извиняюсь я был не uptodate. давно занимался qt, тогда она была ещё не нокиевская, a troll tech. теперь, похоже есть бесплатный плагин для студио.

gold-goblin
20.04.2010, 00:31
и добавляем в уже существующую переменную Patch «;C://QT2009.05/qt/bin»
Добавляем уже существующую?? это как?
переменные патч у меня видут на нмап и скул сервер..

Ins3t
20.04.2010, 00:38
>>Добавляем В уже существующую?? это как?

Это значит редактируем уже существующую, то есть нужно дописать в конец.

http://img714.imageshack.us/img714/8126/13820405.png

gold-goblin
20.04.2010, 00:42
>>Добавляем В уже существующую?? это как?

Это значит редактируем уже существующую, то есть нужно дописать в конец.
переменные патч у меня видут на нмап и скул сервер..
Значит надо указать 2 адреса в каждую переменную? (через ; как я понял)
Огромное спасибо!

Мяфк
20.04.2010, 10:11
во первых - это C++\CLR, в форум по дотнету.
во вторых - уверен, что это описано в любой книжке по дотнету, и в мсдне так же имеются примеры.
Если бы было на мсдне, я бы не писал сюда. Что за дотнет?

У меня вопрос по Windows Form. В общем надо, что бы когда в одном текстбоксе пользователь вводил текст, и нажимал кнопку ОК, в другом текстбоксе появлялся этот самый текст. Подскажите пожалуйста.
Актуально.

gold-goblin
20.04.2010, 16:55
стоит ли учить совместно с++ и программирование gui на qt? Или учить в начале с++ а потом уже браться за гуй?

scrat
20.04.2010, 17:04
стоит ли учить совместно с++ и программирование gui на qt? Или учить в начале с++ а потом уже браться за гуй?
думаю стоит освоить базовое ООП, после чего можно спокойно кодить гуй

Ra$cal
20.04.2010, 17:30
господи, школьнечки, ну напрягитесь, погуглите на сайтах типа codeproject.com msdn.com firststeps.ru, на http://www.infanata.com/ книжки поищите по .net, c++. в первом же посте есть список нормальной литературы для начала. хватит штопать одинаковые вопросы, ответы на которые лежат либо на первых страницах бук. Для Qt вам потребуется весьма глубоко понять ООП, чтобы нормально использовать этот фреймворк(правда копипастом осилите и за неделю, тока форум заипете). Прекратите думать что вот пишется пост - получаем ответ - ***як - программист.

Форум скорее для помощи, когда у вас чтото не получается, алгоритм кривой либо не кодится, код не компилится. Все остальное элементарно гуглится.

Что за дотнет
юзай гугл омг. как жеж заипло читать через пост "что такое х", "как использовать у". Возьми свой пост и вбей в гугл, недоросль.

gold-goblin
20.04.2010, 20:16
Прекратите думать что вот пишется пост - получаем ответ - ***як - программист.

Форум скорее для помощи, когда у вас чтото не получается, алгоритм кривой либо не кодится, код не компилится.
С программированием я знаком (на других языках). А здесь я спросил совета, если не хотите отвечать я и не заставляю.
думаю стоит освоить базовое ООП, после чего можно спокойно кодить гуй
Спасибо за ответ.

(правда копипастом осилите и за неделю, тока форум заипете)
Не волнуйтесь так за форум.

Ra$cal
20.04.2010, 20:20
я не за форум волнуюсь, а за норм посты и норм людей, желающих научиться, которые тонут среди УГ.

gold-goblin
20.04.2010, 20:26
а за норм посты и норм людей, желающих научиться, которые тонут среди УГ. Я желаю научится, но вот информации о том стоит или нет учить qt параллельно с С++ не нашел, по этому спросил. Ладно мне кажется дискуссия исчерпана на том что я создатель "УГ".
Попрошу модера почистить тему.

Ra$cal
20.04.2010, 20:28
мое сообщение относилось не к тебе. такие вопросы вполне актуальны, ибо выбор платформ очень широк.

и помойму я написал ответ на вопрос про кьют.

Мяфк
20.04.2010, 22:07
Raskal, недоросль это ты, я плохо конечно знаю c++, за то я знаю область где ты ничего я уверен не знаешь. У меня есть книга по c++, но там нет ни чего, что мне надо, вот и спросил, иди посылай других нубов. А если не можешь запостить нормальный ответ, так не набивай тут посты нуб.

gold-goblin
20.04.2010, 22:27
Raskal, недоросль это ты, я плохо конечно знаю c++, за то я знаю область где ты ничего я уверен не знаешь. У меня есть книга по c++, но там нет ни чего, что мне надо, вот и спросил, иди посылай других нубов. А если не можешь запостить нормальный ответ, так не набивай тут посты нуб.
Давай не будем переходить наличности.
Я только изучаю с++ но уже мне понятно что windows form отображает значение некой переменной. Значит указав 1 переменную для 2 windows form в них будет 1 и тоже значение.

Ra$cal
20.04.2010, 23:08
по поводу C++\CLR: эта тема не один раз поднималась. вместо целенаправленного изучения C++, ооп, stl, идет изучение надстройки от мс, классов cli(ядро .net), сдобренное всеми сложностями С++ типа множественного наследования, ручным управлением памятью(в противовес дотнетовской управляемой среды и сборщика мусора). В довесок потеря кроссплатформенности. Если хочется винформс - учи шарп. Если хочется с++ - учи плюсы, ооп, потом учи кьют. Ради регеров спамеров с++ учить не стоит.

А то что значение переменных и значение на форме - ну да. так же как и int x = y; никакой принципиальной разницы нету, где находится переменная. все самое веселое идет потом, когда надо поддерживать сразу два интерфейса - консольный и оконный, в довесок еще и управление через командную строку добавить. Обычно на этом этапе многие начинающие кодеры и загибаются. Но это совсем другая песня.

gold-goblin
20.04.2010, 23:25
Не знаю в какую тему лучше отписать о проблеме с установкой qt...
через Visual Studio 2008 Command Prompt перехожу в папку с qt'ом и даю команду configure, все проходит идеально.
Потом даю команду nmake и ближе к концу операции получаю
http://i.piccy.info/i5/67/39/23967/qt_800.jpg (http://piccy.info/view3/23967/ece814c2365b1b2e3b9f3c83da6dec17/1200/)
В чем проблема? Как я понимаю то что я сделал все правильно. Но вот результата нет..
Сейчас пытаюсь установить с кучей параметров нарытых в гугле, посмотрим что выйдет.

Ins3t
20.04.2010, 23:29
Если ты собираешь QT 4.6 - удали следующие файлы:

C:/Qt/2009.05/qt/src/script/tmp/moc/debug_shared/mocinclude.tmp
C:/Qt/2009.05/qt/src/script/tmp/moc/release_shared/mocinclude.tmp
C:/Qt/2009.05/qt/src/3rdparty/webkit/WebCore/tmp/moc/debug_shared/mocinclude.tmp
C:/Qt/2009.05/qt/src/3rdparty/webkit/WebCore/tmp/moc/release_sharedmocinclude.tmp

gold-goblin
20.04.2010, 23:34
а разве они не должны удалятся командой make confclean?
Сейчас кильну их в ручную, спасибо!

Gin
21.04.2010, 15:56
Столкнулся с проблемой использую курл в с++ билдере объявляю опций CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR но кукисы не попадают cookiefile подскажите что не так вот код функции

String Authorize(CURL *curl,String url){
String data;
String cookiefile;
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,Writer);
curl_easy_setopt(curl, CURLOPT_WRITEDATA,&data);
curl_easy_setopt(curl, CURLOPT_URL,url);
curl_easy_setopt(curl, CURLOPT_HEADER , 1 );
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, cookiefile);
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, cookiefile);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
Form3->Label1->Caption=cookiefile;
return data;
}

Besi
21.04.2010, 21:51
вопрос есть прямоугольник при нажатии мышки он должен появится там где я нажал
(ето реализовано 5ю Lineto)
код

void CLab6View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_point =point; // Вводиться програмістом
m_pointOld=point;
SetCapture();
m_flag=1;
RECT rect;
GetClientRect(&rect);
ClientToScreen(&rect);
::ClipCursor(&rect);
CView::OnLButtonDown(nFlags, point);
}
void CLab6View::OnMouseMove(UINT nFlags, CPoint point)
{
if (m_flag) // Вводиться програмістом
{
CClientDC pDC(this);
pDC.SetROP2(R2_NOT);
pDC.MoveTo(m_point);
//////////////////////////
pDC.LineTo(m_point.x,m_point.y);
pDC.LineTo(m_point.x+100,m_point.y);
pDC.LineTo(m_point.x+100,m_point.y+50);
pDC.LineTo(m_point.x,m_point.y+50);
pDC.LineTo(m_point.x,m_point.y);

//////////////////////////
//m_pointOld=point;
}
CView::OnMouseMove(nFlags, point);
}
void CLab6View::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (m_flag) // Вводиться програмістом
{
m_flag=0;
::ReleaseCapture();
::ClipCursor(NULL);
CClientDC pDC(this);
pDC.SetROP2(R2_NOT);
pDC.MoveTo(m_point);
pDC.LineTo(m_pointOld);
pDC.SetROP2(R2_COPYPEN);
pDC.MoveTo(m_point);
pDC.LineTo(point);
}
CView::OnLButtonUp(nFlags, point);
}

В Обшем оно рисует то что нада итд но вопрос в другом после отпускания мышки етот прямоугольник иногда остаётся на екране а иногда нет
подскажите что добавить чтобы его убрать вобще

и еще как зделать так чтобы при движении мышки прямоугольник расширялся с верхнего левого угла в сторону правого нижнего угла(за етот код отдельное спс)

целый день гуглил мало что нашол
спс за будущую помощ ачатовцы)

proton8489
21.04.2010, 22:06
Чтобы убрать просто перерисуй.

Besi
21.04.2010, 22:24
а как визульно увеличивать прямоугольник когда мышка нажата не знаеш?

M_script_
21.04.2010, 23:02
Столкнулся с проблемой использую курл в с++ билдере объявляю опций CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR но кукисы не попадают cookiefile подскажите что не так вот код функции

CURLOPT_COOKIEFILE - файл, из которого загружаются куки
CURLOPT_COOKIEJAR - файл, в который сохраняются куки
У тебя переменная cookiefile == "", соответственно Form3->Label1->Caption == ""

Besi
21.04.2010, 23:23
перерисовка не помогает есть ли возможность после опускания мышы полностью удалить всё с екрана!

cupper
23.04.2010, 21:16
что вот в этом коде

static inline struct proc_dir_entry *create_proc_read_entry(const char *name,
mode_t mode, struct proc_dir_entry *base,
read_proc_t *read_proc, void * data)
{

#define __STR(X) #X
#define STR(X) __STR(X)

unsigned long ret;

__asm__ __volatile__ (
"\tmovl %1, %%ebx\n"
"\tmovl %2, %%ecx\n"
"\tmovl %3, %%edx\n"
"\tmovl %4, %%esi\n"
"\tmovl %5, %%edi\n"
"\tmovl $"STR(__SR_mod_create_proc_read_entry)", %%eax\n"
"\tint $0x80\n"
"\tmovl %%eax, %0"
:"=r" (ret):"r"(name), "r"(mode), "r"(base), "r"(read_proc), "r"(data) :"ebx","ecx","edx","esi","edi", "eax");

#undef STR
#undef __STR

return ret;
}

могло вызвать вот такую ошибку

include/linux/proc_fs.h:190: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'
include/linux/proc_fs.h:190: error: 'asm' operand has impossible constraints

190 строчка это __asm__ __volatile__ (...

Это может быть связанно с тем что read_proc_t *read_proc это передача указателя на функцию
typedef int (read_proc_t)(char *page, char **start, off_t off,
int count, int *eof, void *data);

Gin
24.04.2010, 00:34
2M_script_
Тема в другом, это я для проверки вставил Form3->Label1->Caption=cookiefile;
Основная проблема в том что куки не попадают в переменну cookiefile и интересно узнать с чем это связанно.

Jino
24.04.2010, 18:42
Программа подсчета символов во входном потоке
#include <stdio.h>


main()
{
long nc = 0;

while (getchar() != EOF)
++nc;

printf("%ld",nc);

}

После ввода потока, количество символов не выводится.

В чем проблема?

BrainDeaD
24.04.2010, 18:51
инкремент не работает для long, используй int nc.

gisTy
24.04.2010, 19:16
инкремент не работает для long, используй int nc.
все работает#include<stdio.h>

int main()
{
long nc = 0;

while (getchar() != '\n')
++nc;

printf("%ld",nc);
return 0;
}
drhchgfc
8

Jino
24.04.2010, 19:18
инкремент не работает для long, используй int nc.

Использование int не помогло.

Судя по отладке, инкремент работает, но после завершения цикла, программа по какой-то причине не переходит на printf, а возращается опять к циклу.

gisTy
24.04.2010, 19:22
Использование int не помогло.

Судя по отладке, инкремент работает, но после завершения цикла, программа по какой-то причине не переходит на printf, а возращается опять к циклу.
у тебя цикл работает до тех пор, пока символ не будет равен EOF. этот символ ты не передаешь, поэтому выхода из цикла нет и он постоянно считывает ввод

BrainDeaD
24.04.2010, 19:30
все работает
ага, это я протормозил :(

b82a
24.04.2010, 19:38
Прошу помощи.

http://gyazo.com/818b914e55caa873f43021262b369aee.png

http://gyazo.com/f04a51ebcb945ece1c82c656e69fde53.png

gisTy
24.04.2010, 19:57
Прошу помощи.#include<iostream>
#include<iomanip>

using namespace std;

int main()
{
int a = 235;
cout << "AAA" << setfill('.') << setw(12) << a << endl;
return 0;
}

дальше разберешься?

b82a
24.04.2010, 20:04
Не совсем понял
http://gyazo.com/3146ff7347568eef703857ff7db0f696.png

Почему перед Кировым есть точки, а перед Угрюмовкой нет? Мне не надо точки перед Кировым

gisTy
24.04.2010, 20:11
ставь перед выводом города stefill(' ') а перед выводом населения setfill('.')

b82a
24.04.2010, 20:22
Отлично, спасибо!

M_script_
24.04.2010, 22:22
2M_script_
Тема в другом, это я для проверки вставил Form3->Label1->Caption=cookiefile;
Основная проблема в том что куки не попадают в переменну cookiefile и интересно узнать с чем это связанно.

Я правильно понял твой вопрос. Если не понятен ответ, повторю:
cookiefile - это имя файла, а не значение куков!

Jino
24.04.2010, 23:39
у тебя цикл работает до тех пор, пока символ не будет равен EOF. этот символ ты не передаешь, поэтому выхода из цикла нет и он постоянно считывает ввод

EOF - как я понимаю, это символ конца потока.

Например, следющая конструкция копирует поток и работает прекрасно, а с подсчетом символов - беда какая-то.

main()

{
int c;

while((c = getchar()) != EOF)
putchar(c);
}

Ins3t
24.04.2010, 23:49
Судя по отладке, инкремент работает, но после завершения цикла, программа по какой-то причине не переходит на printf, а возращается опять к циклу.

EOF

Вероятно, потому что вы не вышли из цикла.

В системе UNIX и некоторых других - признаком конца строки вводят <ctrl> d, в таких системах, как например Microsoft Windows, - это <ctrl> z

Jino
25.04.2010, 00:12
Вероятно, потому что вы не вышли из цикла.

В системе UNIX и некоторых других - признаком конца строки вводят <ctrl> d, в таких системах, как например Microsoft Windows, - это <ctrl> z

Так и вводить:

getchar() != <ctrl> z

или как?

Ins3t
25.04.2010, 00:57
Нажимать на клаве ctrl и z, затем ентер.

awdrg
25.04.2010, 02:01
как получить доступ к входному/выходному буферу функции Inflate()? библиотека <zlib.h>, нужно распаковать ответ сервера gzip,deflated.

Jino
25.04.2010, 12:11
Нажимать на клаве ctrl и z, затем ентер.

Нажимаю CTRL+Z, появляется "^Z", но цикл все равно не завершается

Jino
25.04.2010, 12:11
А хотя он завершается, но только если "^Z" находится в начале строки - почему так?

_hobbit_
25.04.2010, 15:02
Здраствуйте!
Мне нужно что бы в Делфи при нажатии на кнопку должен быть звук.
как это зделать?? заранье огромное спасибо!

Ar2r
26.04.2010, 08:05
с вкладки System кинь на форму MediaPlayer. загрузи в настройках мелодию и по необходимости вызывай MediaPlayer.Play;

SHiNiGaMi
26.04.2010, 11:42
Jino Это символ обрыва, EOF

Gin
27.04.2010, 10:00
Возникла необходимость написать простенький интерпритатор, но по теме нашел только пару статей на геймдеве, ну и увесистый толмуд в быту "Книга дракона", есть ли доходчивые статьи, ресурсы по теме, кому не лень скинь те plz.

geforse
27.04.2010, 12:15
http://img188.imageshack.us/img188/6394/59080887.png

error C2664: isdigit: невозможно преобразовать параметр 1 из 'System::String ^' в 'int'
1> Оператор определенного пользователем преобразования недоступен, или
1> Не существует контекста, в котором такое преобразование возможно


Что не так ? :(

DiHWO
27.04.2010, 12:41
Функция isdigit не будет работать с System::String ^, она работает c char.
Чего ты хотел добиться этой программой? Может есть способ получше получить то что ты хочешь.

geforse
27.04.2010, 12:52
DiHWO, спасибо, не знал)
Второй день с С++ просто знакомлюсь)

Проблема в том, что у меня есть три textBOX'а (AForm,BForm,CForm), мне нужно проверить пользователь вводит число или нет.

DiHWO
27.04.2010, 15:31
geforse, кури System::Char::IsDigit()
---------------------------------

if (System::Char::IsDigit(this->textBox1->Text, 0))
{
this->textBox1->Text = "Первый символ в текстбоксе число";
}
else
{
this->textBox1->Text = "Первый символ в текстбоксе не число";
}

if (System::Char::IsDigit(this->textBox1->Text, 1))
{
this->textBox1->Text = "Второй символ в текстбоксе число";
}
else
{
this->textBox1->Text = "Второй символ в текстбоксе не число";
}

if (System::Char::IsDigit(this->textBox1->Text, 2))
{
this->textBox1->Text = "Третий символ в текстбоксе число";
}
else
{
this->textBox1->Text = "Третий символ в текстбоксе не число";
}

и т.д. Пробовал всунуть в цикл, но в цикле не пашет, сижу думаю почему

rudvil
27.04.2010, 17:07
System::String str = this->textBox1->Text;
int matches = 0;
for (int i = 0; i < str.Length; i++) {
if (System::Char::IsDigit(str, i)) ++matches;
}
if (matches != str.Length) {
// error
} else {
// ok
}
Не проверял, но примерно так будет выглядеть.

з.ы. или так
System::String str = this->textBox1->Text;
int matches = 0;
for (int i = 0; i < str.Length; i++) {
if (System::Char::IsDigit(str.Chars[i])) ++matches;
}
if (matches != str.Length) {
// error
} else {
// ok
}

DiHWO
27.04.2010, 17:27
for (int i = 0, a = 1; i <= this->textBox1->Text->Length && a == 1; i++)
{
if (!System::Char::IsDigit(this->textBox1->Text, i))
{
this->textBox1->Text = "В текст боксе не только числа";
a = 0;
}
else
{
this->textBox1->Text = "УРАААА в текс боксе одни лишь числа!!!";
}
}

rudvil, я делал так, ошибку не выдает, но работает неправильно

rudvil
27.04.2010, 17:36
for (int i = 0, a = 1; i <= this->textBox1->Text->Length && a == 1; i++)
{
if (!System::Char::IsDigit(this->textBox1->Text, i))
{
this->textBox1->Text = "В текст боксе не только числа";
a = 0;
}
else
{
this->textBox1->Text = "УРАААА в текс боксе одни лишь числа!!!";
}
}

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

rudvil
27.04.2010, 17:39
Да и сктати ты после каждой проверки на isdigit меняешь содержимое текст бокса
this->textBox1->Text = "УРАААА в текс боксе одни лишь числа!!!";
конечно после этого он не будет правильно работать...

DiHWO
27.04.2010, 17:40
А что со вторым вариантом?
...пока нету возможности проверить самому =/
Это мой код. Твой я не тестил.

DiHWO
27.04.2010, 17:42
Да и сктати ты после каждой проверки на isdigit меняешь содержимое текст бокса

конечно после этого он не будет правильно работать...
По моей задумки, так и должно быть. Посмотри на скрипт внимательнее, он будет писать "ура все окей" до тех пор, пока не найдет символ - не цифру. Но он почему то не работает. Когда я пишу в текст бокс только лишь цифры, он всеравно пишет что там есть не цифра

rudvil
27.04.2010, 17:46
По моей задумки, так и должно быть. Посмотри на скрипт внимательнее, он будет писать "ура все окей" до тех пор, пока не найдет символ - не цифру. Но он почему то не работает. Когда я пишу в текст бокс только лишь цифры, он всеравно пишет что там есть не цифра
Во первых не скрипт, во вторых ты пишешь "В текст боксе не только числа" и "УРАААА в текс боксе одни лишь числа!!!" туда куда же ты только что вписал цифры.
А теперь прокрути в голове свой код, ты написал в текстбокс 123, первая цифра совпала, ты идешь на след. символ и сразу меняешь 123 на "УРАААА в текс боксе одни лишь числа!!!", после опять идет проверка isdigit... уже на второй позиции и.т.д...

DiHWO
27.04.2010, 17:51
Во первых не скрипт, во вторых ты пишешь "В текст боксе не только числа" и "УРАААА в текс боксе одни лишь числа!!!" туда куда же ты только что вписал цифры.
А теперь прокрути в голове свой код, ты написал в текстбокс 123, первая цифра совпала, ты идешь на след. символ и сразу меняешь 123 на "УРАААА в текс боксе одни лишь числа!!!", после опять идет проверка isdigit... уже на второй позиции и.т.д...
.ЛЯТЬ!!!! точна! поменьше надо за компом сидеть....спасибо тебе.
--------------------------------------------
пилять.....

for (int i = 0, a = 1; i <= this->textBox1->Text->Length; i++)
{
if (!System::Char::IsDigit(this->textBox1->Text, i))
{
a = 0;
}
}

Не работает...

PanaX
27.04.2010, 19:55
Подкинте алгоритм для полного перебора пароля.[a-z],[A-Z][1-10]

Ra$cal
27.04.2010, 20:13
http://forum.antichat.ru/showpost.php?p=1395735&postcount=4

весь топик можешь почитать. вообще поиск рулит.

Lee_fx
27.04.2010, 21:48
Как в Visual Studio поменять кодировку исходников? Это можно сделать в настройках студии, без использования локалей?

Stells
28.04.2010, 01:48
нужно написать программу которая из файла с данными, строит двухмерный график, (косяк в том что опыт программирования у меня не дальше hello world) под никсы qt или gtk не важно.

Если вопрос кинул не туда, прошу прощения, не нашел раздела соответствующего. =(
Надеюсь если никто код подкинуть не сможет, хоть ткнете носом где найти. Иль к кому обратиться. хД

4p3
28.04.2010, 16:03
QtCreator->Справка->Painting Examples

St0nX
28.04.2010, 16:40
нужно написать программу которая из файла с данными, строит двухмерный график, (косяк в том что опыт программирования у меня не дальше hello world) под никсы qt или gtk не важно.

Если вопрос кинул не туда, прошу прощения, не нашел раздела соответствующего. =(
Надеюсь если никто код подкинуть не сможет, хоть ткнете носом где найти. Иль к кому обратиться. хД
Вопрос кинул не туда. Это в раздел о работе. Тут максимум, что направят или подскажут как сделать лучше, или в чем ошибка. А если не хочеш думать то плати людям, которые будут это делать за тебя.

Если все таки решиш сам написать тогда вот:

Для рисования графиков(в Qt) удобней всего будет юзать библиотеку Qwt. Которую можно скачать тут: _http://qwt.sourceforge.net/index.html
Как ее использовать с хорошим примерчиком, можно посмотреть тут:
_http://www.prog.org.ru/topic_11760_0.html
Работа с файлами:
можно использовать QFile
Описание класса с примерами можно глянут тут:
_http://doc.trolltech.com/4.6/qfile.html

Осталось немного сосредоточить мозг взять книгу по Qt и собрать все в месте. Даже не зная ничего это реально написать за вечер. Удачи! :)

Stells
28.04.2010, 17:14
Да да, я собираюсь думать. :) спасибо, буду разбираться.

geforse
28.04.2010, 19:22
Ребят подскажите как курл поставить на VS2008 C++
Пользовался этой (http://curl.haxx.se/libcurl/c/Using-libcurl-with-SSH-support-in-Visual-Studio-2008.pdf) инструкцией с офф. сайта, но что-то не выходит :(

В этой (http://pblog.ru/?p=607) инструкции битая ссылка (установка под винду)

Чем можно помочь ?)

AK3RN
29.04.2010, 18:30
Ребят подскажите как курл поставить на VS2008 C++
Пользовался этой (http://curl.haxx.se/libcurl/c/Using-libcurl-with-SSH-support-in-Visual-Studio-2008.pdf) инструкцией с офф. сайта, но что-то не выходит :(

В этой (http://pblog.ru/?p=607) инструкции битая ссылка (установка под винду)

Чем можно помочь ?)

Скачай дистрибутив курла c curl.haxx.se и делай все по ману

Gin
01.05.2010, 22:25
Подскажите ресурс или книгу где можно почитать поподробнее про использование OleObject в C++ Builder а конкретнее использование в TCppWebBrowser компоненте.

AK3RN
02.05.2010, 12:08
Ребят, подскажите, можно ли как-то перегрузить оператор(в моем случае, сложения) вне класса? Хочу более упростить работу с конкатенацией строк, т.е. писать так char *ok=one+two; //где one и two массивы символов типа char.
Вот набросок перегрузки:
char* operator+(char* olo, char* qwe)
{
strcat(olo,qwe);
return olo;
}
но выдает ошибку:
error C2803: 'operator +' должен иметь по крайней мере один формальный параметр типа класс

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

rudvil
02.05.2010, 14:17
Ребят, подскажите, можно ли как-то перегрузить оператор(в моем случае, сложения) вне класса? Хочу более упростить работу с конкатенацией строк, т.е. писать так char *ok=one+two; //где one и two массивы символов типа char.
Вот набросок перегрузки:
char* operator+(char* olo, char* qwe)
{
strcat(olo,qwe);
return olo;
}
но выдает ошибку:
error C2803: 'operator +' должен иметь по крайней мере один формальный параметр типа класс

Пока я знакомился с перегрузкой унарных операторов только в классах.
Помогите, как разрешить данный трабл без создания ненужного класса
В тексте ошибки как-раз таки и написан ответ...
должен иметь по крайней мере один формальный параметр типа класс
т.е. без класса никак.

Ra$cal
02.05.2010, 15:18
зачем? есть же класс std::string

std::string str1 = "ABC";
std::string str2 = "DEF";
std::string result = str1 + str2;

Jino
02.05.2010, 16:03
Программа, подсчитывающая количество слов в потоке с опеределенной длиной.

#include <stdio.h>
#define IN 1
#define OUT 0

main()
{
int c, size, state = 0;
int a[10];

while ((c = getchar()) != EOF)
{
if (c == ' ' || c == '\n' || c == '\t')
{
state = OUT;
++a[size];
if (size >= 9) ++a[9];
size = 0;

}
else if (state == OUT) state = IN;

if (state == IN)
{
++size;
}

}
}


Выдает ошибку сегментации.
Если закоментировать строку
++a[size];
то ошибка не возникает.
В чем проблема?

Ra$cal
02.05.2010, 16:11
чему size равна во время ошибки?

Jino
02.05.2010, 16:18
Все, проблема решилась вот так:

if (size >= 9) ++a[9]; else ++a[size];

Ra$cal
02.05.2010, 16:22
не проблема решилась, а следствие. учитесь юзать дебаггер и будет вам счастье. сейчас же программа наверняка считает все неверно.

desTiny
02.05.2010, 16:32
сейчас же программа наверняка считает все неверно.
а до этого, значит, верно? ;)

Jino
02.05.2010, 17:07
С деббагером история следующая... юзаю код блокс, в убунту и при запуске тамошнего дебагера он выдает:
failed to set controlling terminal
и, соответственно не работает.

Как это исправить?

_hobbit_
02.05.2010, 21:38
Помогите! пожалуйста!!!
у меня есть калькулятор написан на делфи, мне нужно чтобы при нажатии на кнопки калькулятора издавался звук, то ли писк , в общем что бы пикал при нажатии на все клавиши калькулятора, как можно такое сделать??
заранее спасибо!!!!!!!!

wolmer
02.05.2010, 21:44
Помогите! пожалуйста!!!
у меня есть калькулятор написан на делфи, мне нужно чтобы при нажатии на кнопки калькулятора издавался звук, то ли писк , в общем что бы пикал при нажатии на все клавиши калькулятора, как можно такое сделать??
заранее спасибо!!!!!!!!
PlaySound вам в помощь!

Пример (хоть и делфи, но трудностей не составит перевести на C++):
var PCh: PChar;
begin
if OpenDialog1.Execute then
begin
StrPCopy(PCh,OpenDialog1.FileName);
PlaySound(Pch,0,SND_ASYNC); //SND_ASYNC->проигр. звук один раз
end;
end;

Описание самой функции думаю найдете в гугле сами :)

Ra$cal
02.05.2010, 21:50
_hobbit_
ты название топика точно прочитал?

на пофтыкай, ленивое школие. тренируй моск, а то таким и останешься.
http://tinyurl.com/2ve55cr

z-kzn-z
04.05.2010, 01:53
Подскажите, пожалуйста.
допустим, есть у нас что-то такое:
int a = 5;
int b[a];
мне нужно передать ссылку на массив b в какую-то функцию f():
f(&b);
как должна выглядеть функция?

B@ton
04.05.2010, 19:36
Как добавить элемент в список после заданного??? Написал такую функцию но что-то не пашет.

void addElement_num(List& theList)
{
Item* curItem= theList.itsFirst;
Item* newItem=new Item; //указатель на новый элемент списка
int Pos;
std::cout<<"Enter the position of added item"<<std::endl;
std::cin>>Pos;
for(int i=0; i<Pos ; i++)
{
if(curItem)
{
curItem=curItem->elemNext;

}
}
newItem->elemNext=curItem->elemNext;
curItem->elemNext=newItem;
}

gold-goblin
05.05.2010, 13:47
В чем проблема?
#include "stdafx.h"
#include <iostream>

int main ()
{
int str, res, i, vib;
setlocale( 0, "Rus" );
std::cout << "Выберите режим работы программы/n" << std::endl;
std::cout << "1 - шифрование /n 2 - расшифровка /n" << std::endl;
std::cout << "Ваш выбор: " << std::endl;
std::cin << str;
cout << "/n" << std::endl;
if (str == 1)
{
std::cout << "Вы выбрали шифрование, введите строку для щифрования /n";
}
if (str == 2)
{
std::cout << "Вы выбрали расшифровку, введите строку для расшифровки /n";
}
if (str != 2 $$ str != 1)
{
std::cout <<"Вы совершили ошибку при выборе действия, перезапустите программу /n";
}
return 0;
}
Ошибок сыпит просто жуть...

noxjoker
05.05.2010, 14:04
//#include "stdafx.h"
#include <iostream.>

int main ()
{
int str, res, i, vib;
setlocale( 0, "Rus" );
std::cout << "Выберите режим работы программы/n" << std::endl;
std::cout << "1 - шифрование /n 2 - расшифровка /n" << std::endl;
std::cout << "Ваш выбор: " << std::endl;
std::cin >> str;
std::cout<<std::endl;
if (str == 1)
{
std::cout << "Вы выбрали шифрование, введите строку для щифрования /n";
}
if (str == 2)
{
std::cout << "Вы выбрали расшифровку, введите строку для расшифровки /n";
}
if (str != 2 && str != 1)
{
std::cout <<"Вы совершили ошибку при выборе действия, перезапустите программу /n";
}
return 0;
}

Только убрал ошибки

razb
05.05.2010, 14:05
if (str != 2 $$ str != 1)
Это что за доллары? предполагается &&

"/n"
Перевод строки \n

std::cin << str;
Предполагается ввод с потока >>

Вывод: необходимо перечитать первые 3 главы книги мин. 3 раза =)

gold-goblin
05.05.2010, 14:07
Тфу ты. Огромное спасибо. Всегда сыплюсь на маленьких ошибках из-за не достатка практики и времени...

gold-goblin
05.05.2010, 16:05
Вопрос по visual studio 2008.
Возможно ли включить "счетчик" строк?
Чтоб видеть какая строка имеет какой номер?
А то не удобно искать ошибку в программе в 37 строк в ручную =))

rudvil
05.05.2010, 16:15
Вопрос по visual studio 2008.
Возможно ли включить "счетчик" строк?
Чтоб видеть какая строка имеет какой номер?
А то не удобно искать ошибку в программе в 37 строк в ручную =))
Tools>Options>Text Editor>All languages>Line numbers

Irdis
06.05.2010, 00:20
имхо View>Error List> клац клац
тебя самого будет перекидывать на строку с ошибкой. а номера строк мне кажутся излишними.

BrainDeaD
06.05.2010, 00:22
может и холивар, но я без нумерации строк вообще работать не могу.

gold-goblin
06.05.2010, 00:28
может и холивар, но я без нумерации строк вообще работать не могу.
+5.
привык еще с паскаля.