ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

14.05.2009, 01:48
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
Mosvit - эпично накалякал =))))))) попробуй погуглить на тему сортировка пузырьком.
зы: и учись разделять блоки кода на функции. именно для этого они и придуманы. а комменты вида
//---------------------------------Вывод массива
очень хорошо говорят нам о том, что этот блок кода должен быть функцией.
|
|
|

15.05.2009, 19:43
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
PHP код:
typedef char * pChar;
int main()
{
// 1 enter string
pChar buffer = new char(50);
strcpy(buffer, "123456");
// 2 set end pointer
pChar endPointer = buffer;
while(*endPointer++);
*endPointer--;
*endPointer--;
// 3 get length
unsigned int len = strlen(buffer);
// 4 cout string
while(len--)
cout << *endPointer--;
return 1;
}
вкратце.
программа выделяет память под строку, вносит туда строку, создаёт ещё один указатель, перематывает его в конец строки, определяет длину строки и в цикле выводит строку в обратном порядке.
но если убрать эти два декремента:
PHP код:
*endPointer--;
*endPointer--;
программа выводит два квадратика, а потом 6543..
что тут не так?
функции реверса строк не предлагать, я хочу научиться писать их сам
|
|
|

15.05.2009, 20:04
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
1676
|
|
А так нельзя разве?
Код:
char *buffer = new char(50);
strcpy(buffer, "123456");
int len = strlen(buffer);
while(len--)cout<<buffer[len];
|
|
|

15.05.2009, 20:09
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
потому что даже после сравнения с нулем будет инкремент указателя. точнее в момент сравнения с нулем. как бы это объяснить по человечески... минусы использования декрементов и инкрементов в местах не очень для них подходящих... не юзай кароч таких конструкций, и будет все нормально.
Код:
#include <iostream>
using namespace std;
typedef char * pChar;
int main()
{
// 1 enter string
pChar buffer = new char(50);
strcpy(buffer, "123456");
// 2 set end pointer
pChar endPointer = buffer + strlen(buffer) - 1;
// 4 cout string
while(endPointer >= buffer)
cout << *endPointer--;
return 1;
}
|
|
|

15.05.2009, 21:31
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
pChar endPointer = buffer + strlen(buffer) - 1;
то что нужно! спасибо обоим
|
|
|

17.05.2009, 16:50
|
|
Участник форума
Регистрация: 08.02.2008
Сообщений: 116
Провел на форуме: 1608432
Репутация:
158
|
|
дайте лит-ру по ГУИ интерфейсу. или подскажите как реализовать:
1)считывание цифр из тексбокса
2) выполнение операций над ними (нарпимер сложение)
3)вывод результата
P.S.
Нужно реализовать вот это
Код:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
char buffer[500];
printf("Enter a number: ");
scanf("%o", &i);
itoa(i,buffer,10);
printf("decimal: %s\n", buffer);
itoa(i,buffer,16);
printf("hexadecimal: %s\n", buffer);
itoa(i, buffer, 2);
printf("binary: %s\n", buffer);
return 0;
}
на гуи 
Последний раз редактировалось s_p_a_m; 17.05.2009 в 16:53..
|
|
|

17.05.2009, 17:03
|
|
Новичок
Регистрация: 27.09.2008
Сообщений: 15
Провел на форуме: 103874
Репутация:
20
|
|
дайте лит-ру по ГУИ интерфейсу.
В c++ нет встроенного гуя,тебе нужно взять какую-нибудь сторонню библеотеку: mfc,winforms,qt..
P.S.
Нужно реализовать вот это
Если под винду подойдет winforms.Создавай в студии проект Windows Form Applications,кинь на форму кнопку и текст бокс.В обработчике нажатия на кнопку пиши что нужно сделать.Текст из текст бокса находится в this->textBox1->Text.
p.s. еще вариант на винапи написать.
|
|
|

17.05.2009, 17:08
|
|
Участник форума
Регистрация: 08.02.2008
Сообщений: 116
Провел на форуме: 1608432
Репутация:
158
|
|
Сообщение от FoV
В c++ нет встроенного гуя,тебе нужно взять какую-нибудь сторонню библеотеку: mfc,winforms,qt..
Если под винду подойдет winforms.Создавай в студии проект Windows Form Applications,кинь на форму кнопку и текст бокс.В обработчике нажатия на кнопку пиши что нужно сделать.Текст из текст бокса находится в this->textBox1->Text.
p.s. еще вариант на винапи написать.
в проге выводятся три значения, я кинул на форму тексбокс, кнопку и 3 лейбла
вопрос номер рас: куда вписывать код, создавать есче один файл СРР ?
2) как прасвоить выводимые данные к лейблам?
3) как считать данные из текстбокса ?
|
|
|

17.05.2009, 17:24
|
|
Новичок
Регистрация: 27.09.2008
Сообщений: 15
Провел на форуме: 103874
Репутация:
20
|
|
2) как прасвоить выводимые данные к лейблам?
this->label1->Text = "blabla"; Если нужно не текст присвоить юзай метод toString() - this->label1->Text = n.ToString();
3) как считать данные из текстбокса ?
System::String s = this->textBox1->Text;
|
|
|

17.05.2009, 17:34
|
|
Участник форума
Регистрация: 08.02.2008
Сообщений: 116
Провел на форуме: 1608432
Репутация:
158
|
|
Сообщение от FoV
System::String s = this->textBox1->Text;
error C3149: System::String: нельзя использовать здесь этот тип без "^" верхнего уровня

|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|