Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: bomzzz
Дата сообщения: 29.04.2013 06:56
я сам так же спрашиваю. по ассемблеру хорошо пишут на киберфоруме, по си не знаю, но как обычно народу больше трется. мне написали несколько кусков, я две недели отсидел людям коды писал.
хорошо что у меня вопросы не по Си не пишут отчеты какие они книги прочитали. вопрос как задать массив это слишком
Автор: AZJIO
Дата сообщения: 29.04.2013 07:09
На форуме AutoIt3 в день таких задач решается несколько, я сам 5-10 ответов могу дать в сутки иногда при отсутсвии кода, а уж указать ошибки при наличии кода, это вообще мелочь.

Цитата:
но как обычно народу больше трется
Почему тогда ответ 4 дня ждать приходится?
Автор: kotlomoy
Дата сообщения: 29.04.2013 07:51
AZJIO
в шапке есть ссылка
http://www.linuxrsp.ru/artic/smart-questions-ru.html
Автор: AZJIO
Дата сообщения: 29.04.2013 09:20
kotlomoy
Читал год назад эту ссылку, сам пару раз давал её на форуме AutoIt3, на офсайте у некоторых она в подписи, переведено на несколько языков. В шапку лучше качественные книги добавить, ссылки на IDE. Думаю это больше принесёт пользы новичкам.
Автор: adasiko
Дата сообщения: 29.04.2013 15:18
AZJIO

Цитата:
задача эта примитивная, нулевой уровень.

Без знания элементарных основ эта задача действительно сложная. А писание кода без осмысления и хоть какой-то теории называется не программирование, а быдлокодинг. Да и процесс обучения строится от простого к сложного, а не разом.
PS: уж извиняюсь, но как есть. Больше кэпить не буду
Автор: Regina93
Дата сообщения: 29.04.2013 17:44
Добрый вечер!
Подскажите, пожалуйста, как установить библиотеку Glut? Операционная система Ubuntu. Я знаю, что она устанавливается набором 1-й команды в терминале. Но есть проблема: мой нэт-бук не подключён к Интернету. Интернет есть на компе, но на компе стоит Винда.
Можно ли скачать библиотеку с интернета, а потом установить на Ubuntu?
Автор: AZJIO
Дата сообщения: 29.04.2013 21:39
adasiko
быдлопомощь...
Автор: Denglis
Дата сообщения: 30.04.2013 09:44
Как удалить все одинаковые символы из массива символов?
Например, надо удалить все символы 's' если встречается 's''s'?:
char ch[]="psssrossgrsasssssms"
Автор: ne_viens
Дата сообщения: 30.04.2013 10:50
void stripDupes(char* s)
{
    int a, b, i, j, k;
    char c, buf[256];

    for(i = k = 0; ; ++i) //find all duplicated chars
    {
        c = s[i];
        if(!c)
            break;
        if(c == s[i+1])
        {
            for(j = 0; j < k; ++j)
                if(c == buf[j])
                    goto skip;
        buf[k++] = c;
skip:;
        }
    }

    for(i = j = 0; ; i++) //strip them
    {
        c = s[i];
        if(!c)
            break;

        for(a = b = 0; a < k; ++a)
        {
            if(c == buf[a])
            {
                b = 1;
                break;
            }
        }

        if(b)
            continue;

        s[j] = c;
        j++;
    }
    s[j] = 0;
}
Автор: AZJIO
Дата сообщения: 30.04.2013 20:25
Denglis
Если подключить регулярные выражения, то код выльестся в строку замены (.)\1+ на \1

ne_viens
Не получилось у меня проверить работу кода. Попробовал с нуля написать свой, тоже не работает http://pastebin.com/YFjtSv8q
Автор: ne_viens
Дата сообщения: 01.05.2013 13:30
Скопируй код из [more]void stripDupes(char* s)
{
int a, b, i, j, k;
char c, buf[256];

for(i = k = 0; ; ++i) //find all duplicated chars
{
c = s[i];
if(!c)
break;
if(c == s[i+1])
{
for(j = 0; j < k; ++j)
if(c == buf[j])
goto skip;
buf[k++] = c;
skip:;
}
}

for(i = j = 0; ; i++) //strip them
{
c = s[i];
if(!c)
break;

for(a = b = 0; a < k; ++a)
{
if(c == buf[a])
{
b = 1;
break;
}
}

if(b)
continue;

s[j] = c;
j++;
}
s[j] = 0;
}

main()
{
    char ch[]="psssrossgrsasssssms";
    
    stripDupes(ch);
    puts(ch);
}[/more] в файл stripdup.c, собери с "cl /Ox stripdup.c" из командной строки MSVC или с "gcc -O2 stripdup.c -o stripdup.exe".
Автор: AZJIO
Дата сообщения: 02.05.2013 04:35
ne_viens
С таким main() и мой вариант заработал. Только я видимо задачу неправильно понял, я удалил повторы, оставив по одному экзепляру, а не полностью. Заработал стандартно, без спец-ключей.
Автор: Denglis
Дата сообщения: 04.05.2013 05:02
AZJIO
Вы правильно поняли: надо только удалить повторы... Спасибо...
Автор: AZJIO
Дата сообщения: 05.05.2013 12:08
http://pastebin.com/aD8ariZM
Пытаюсь получить рандомный IP в строку. С printf уже получилось, но нужно получить именно строку, чтобы отправить её на возврат в Exit. Проблема с strncat, если удаляю строку код не падает, как только не скланял параметры, уже наизусть их выучил, что указатели, что первая размером позволяющая вместить вторую, всё равно падает.
Автор: ne_viens
Дата сообщения: 05.05.2013 12:28
randomIP(char* ip)
{
    unsigned int i = __rdtsc();
    
    sprintf(ip, "%d.%d.%d.%d", i >> 24, (i >> 16) & 0xff, (i >> 8) & 0xff, i & 0xff);
}

main()
{
    char ip[32];
    
    randomIP(ip);
    puts(ip);
}
Автор: kotlomoy
Дата сообщения: 05.05.2013 15:58
AZJIO

Например, так

Код: #define _CRT_RAND_S
#include <winsock2.h>
#include <ws2ipdef.h>
#include <stdlib.h>
int main() {
struct in_addr Addr;
char * p;
char Addr_String[ INET_ADDRSTRLEN ];
rand_s( (unsigned int *)&Addr.S_un.S_addr );
p = inet_ntoa( Addr );
strcpy( Addr_String, p );
};
Автор: Daniyar91
Дата сообщения: 14.05.2013 23:52
Необходимо рассчитать хеш Tiger некоторого текста, используя библиотеку Crypto++ (CryptoPP), проблема в том - что я не шарю в C/С++, и по этому не могу понять как это реализовать (вычислить хеш).

Например:
Есть некий текст "строка1{CRLF}строка2{CRLF} ... строкаN"
{CRLF} - так я обозначил разрыв строки (не просто CR или LF, а именно CR и LF).

Как я себе это представлю:

Первый вариант

Код:
#include <iostream>

#include "cryptlib.h" // 1
#include "tiger.h" // 1

int main()
{
using namespace std;

string _string = "нужный мне текст"; // 2
string _hesh = Tiger(_string); // 3
cout << _hesh;
cin.get();
return 0;
}
Автор: AZJIO
Дата сообщения: 15.05.2013 14:38
Daniyar91
Почему именно с этой библиотеки нужен хеш? И почему именно на С/С++? В AutoIt3 есть готовая UDF использующая DLL из Windows.
Автор: Daniyar91
Дата сообщения: 15.05.2013 15:23
Возможно, я неправильно поставил вопрос, мне не обязательна эта библиотека или C/C++, просто Tiger, я смог найти только в этой библиотеке.
Автор: adasiko
Дата сообщения: 15.05.2013 15:42
Daniyar91
на странице авторов этого хэша есть же примеры http://www.cs.technion.ac.il/~biham/Reports/Tiger/
Автор: AZJIO
Дата сообщения: 15.05.2013 18:23
Daniyar91
Функции _Crypt_HashData и _Crypt_HashFile посмотри в справке AutoIt3-UDF.
Автор: Daniyar91
Дата сообщения: 15.05.2013 20:21
adasiko
Если бы я знал хотя бы азы C/C++, то наверно, то что там есть мне бы помогло.

AZJIO
Эти функции не подходят потому что в файле Crypt.au3 есть только следующие константы: $CALG_MD2, $CALG_MD4, $CALG_MD5, $CALG_SHA1, $CALG_3DES, $CALG_AES_128, $CALG_AES_192, $CALG_AES_256, $CALG_DES, $CALG_RC2, $CALG_RC4, $CALG_USERKEY т.е нету $CALG_TIGER, и у MS тоже нету.


Из переписки непонятно кого, мне стало ясно что у авторов Tiger не хватило ума написать свой алгоритм для Visual Studio, что не есть хорошо. Также стало ясно что у M$ long long называется _int64, что надо удалить LL в конце каждого шестнадцатеричного значения, что отсутствуют протатипы функций strlen() и printf() и еще что-то не работает.
Из всего этого выходит что лучше не пытаться что-то делать с их оригинальными исходниками а использовать библиотеку Crypto++, так как она нормально компилируется.

Я так понимаю что эта функция(которая рассчитывает Tiger) должна быть в скомпилированном файле cryptopp.dll, отсюда вопрос - что эта за функция и как ее использовать?
Автор: ne_viens
Дата сообщения: 15.05.2013 23:01
Tiger в многих crypto библиотеках есть. Я для себя из LibTomCrypt выдернул:
http://pastebin.com/sfU2DnUd
Автор: Daniyar91
Дата сообщения: 16.05.2013 03:36

Цитата:
Tiger в многих crypto библиотеках есть

Код который ты указал очень сильно походит на тот что в Crypto++ т.е. получается что Tom St Denis скопипиздил его и немного поменял ну или наоборот.



Код: main()
{
    hash_state md;
    unsigned char hash [3*8];

    tiger_init(&md);
    tiger_process(&md, "Tiger", 5);
    tiger_done(&md, hash);

}
Автор: ne_viens
Дата сообщения: 16.05.2013 08:34
Неа, это только пример вызова Tigera.
Чтобы отображалось, надо чуть больше кода:
main()
{
int i;
hash_state md;
unsigned char hash[3*8];

tiger_init(&md);
tiger_process(&md, "Tiger", 5);
tiger_done(&md, hash);

for(i = 0; i < sizeof(hash); ++i)
printf("%02x", hash[i]);
}
Автор: SenatkinO
Дата сообщения: 16.05.2013 13:19
Все добрый День! Помогите пожалуйста! Нужна программа на Делфи которая проверяет работу схемы!!! Это дипломная работа! ЗАранее всем благодарен!!!!!!!!!
Автор: Daniyar91
Дата сообщения: 16.05.2013 13:59
ne_viens
в коде что ты дал, выше main() есть закомментированные строки
Там - Hash of "Tiger": = 9F00F599072300DD 276ABB38C8EB6DEC 37790C116F9D2BDF
а у нас отображается = DD00230799F5009F EC6DEBC838BB6A27 DF2B9D6F110C7937

не стал парится, просто написал следующее

Код: main()
{
    ...
    ...
    for(i = 7; i >= 0; --i)
        printf("%02x", hash[i]);
    for(i = 15; i >= 8; --i)
        printf("%02x", hash[i]);
    for(i = 23; i >= 16; --i)
        printf("%02x", hash[i]);
}
Автор: ne_viens
Дата сообщения: 16.05.2013 14:21
В коде Hash of "Tiger" представлен в виде трёх unsigned long long, а не 24 unsigned char. В жизни всегда 2 вариант применяется. Можно в CryptoBench посмотреть, например.

Что из себя представляет текст, который надо похашить и какая его длина? Обычный txt файл, открытый в Notepad'е? Тогда лучше всего собрать win приложение с EditBox'ом, в который кидать текст с копипастой, потом похашить кнопкой OK. Это надо будет ещё дофига строк кода добавлять (штук 20-30 примерно).

CR,LF занимает 2 байта.
И не хорошая это идея хашить текст с переводами строк, так как на других опсистемах переводы могут состоять только из CR или LF, и, соответственно, там хаши будут отличатся.
Автор: Daniyar91
Дата сообщения: 16.05.2013 14:48
Обычный текст не более 1 КБ и 10 строк, но может быть меньше.

Цитата:
лучше всего собрать win приложение с EditBox'ом

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


Цитата:
на других опсистемах переводы могут состоять только из CR или LF, и, соответственно, там хаши будут отличатся

в данный момент мне нужно CR и LF, так всеже как передавать CR и LF?
Автор: ne_viens
Дата сообщения: 16.05.2013 15:00
http://rghost.net/46037536

TigerCR+LF = "Tiger\r\n"

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.