ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #2211  
Старый 29.01.2009, 19:23
herfleisch
Участник форума
Регистрация: 07.01.2009
Сообщений: 237
Провел на форуме:
745649

Репутация: 97
Отправить сообщение для herfleisch с помощью ICQ
По умолчанию

Кто подскажет: можно ли сделать вот так:
Код:
...

struct MailPass
{
	char *mail;
	char *pass;
};

...

int main(void)
{
    ....
    MailPass *	CurrentMailPassPointer;
    MailPass	CurrentMailPass;
    ...
    CurrentMailPassPointer = MailPassRead(MailPassList);
		CurrentMailPass.mail = (* CurrentMailPassPointer).mail;
		CurrentMailPass.pass = (* CurrentMailPassPointer).pass;

...
}

MailPass *MailPassRead(FILE *fd)
{
       ......
       MailPass mailpass;
	char a[255] = "\0";
	mailpass.mail = new char[sizeof(strtok(a,";"))];
	mailpass.pass = new char[sizeof(strtok(0,";"))];
	strcpy(mailpass.mail,strtok(a,";"));
	strcpy(mailpass.pass,strtok(0,";"));
         ....
	return &mailpass;
}
 

  #2212  
Старый 29.01.2009, 21:56
w_2k
Новичок
Регистрация: 23.07.2008
Сообщений: 28
Провел на форуме:
104504

Репутация: 1
Отправить сообщение для w_2k с помощью ICQ
По умолчанию

Полазил, поискал ошибку...так и не разобрался. Вот код целиком:
Цитата:
#include <stdlib.h>
#include <iostream>
#include <iomanip>
#include <time.h>
class Koloda{
private:
int count;
int cards[2][2]={{6,7},{1,2}};//Ругается вот тут
public:
Koloda(){
count=36;
};
Koloda(int c){
count=c;
};
~Koloda(){};
void Take_card(){
int i;
int j;
do {
srand(time(NULL));
i=rand()%9;
j=rand()%4;
}
while(cards[i][j]!=0);
cards[i][j]=0;
if(count>0)
count--;
else
std::cout<<"Карт больше нет";
};

};
Добавленно позже: Странно...почему форматирование не сохранилось?
 

  #2213  
Старый 29.01.2009, 21:59
.Slip
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
Провел на форуме:
21768337

Репутация: 3486


По умолчанию

Добавляй в тег [code]
__________________
..
 

  #2214  
Старый 29.01.2009, 22:39
w_2k
Новичок
Регистрация: 23.07.2008
Сообщений: 28
Провел на форуме:
104504

Репутация: 1
Отправить сообщение для w_2k с помощью ICQ
По умолчанию

Не-а. Теперь еще и ругается на то, что count неизвестная переменная(ссылаясь сюда if(count>0){count--;})
 

  #2215  
Старый 29.01.2009, 22:59
Chaak
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме:
5321514

Репутация: 3313


Отправить сообщение для Chaak с помощью ICQ
По умолчанию

w_2k

1. Не используй инлайн функции(это функции, которые определены в самом классе). Их содержимое как-бы копируется на место вызова, что приводит к плохим последствиям. Выноси все отдельно в файл.

2. Не используй srand(time(NULL)); в цикле, т.к идет постоянная привязка к одному и тому же времени. Выноси за цикл.



3. Проблема твоя в том, что ты указываешь статический массив по дефолту. Такое не допустимо при создании объекта. Выделяй память динамически в конструкторе(да и не забудь написать копир конструктора):

PHP код:
#include <stdlib.h>
#include <iostream>
#include <iomanip>
#include <time.h>

using namespace std;

class 
Koloda
{
private:
    
int count;
            
int ** cards;
public:    
 
Koloda(int c){count=c;}
Koloda()
{
      
count=36;
      
int ** cards = new int*[2];     //двумерный массив
      
for(int i 02i++)
      {
         
cards[i] = new int[2];
         for(
int j 02j++)
         {
             
cards[i][j] = 0;
         }
      }
      
cards[0][0] = 6;
      
cards[0][1] = 7;
      
cards[1][0] = 1;
      
cards[1][1] = 2;
}

~
Koloda()
{
      for(
int i 02i++)
      {          
         
delete cards[i];
      }
      
delete cards;
}

void Take_card(){
    
int i;
    
int j;
            
srand(time(NULL));
    do {
        
        
rand()%9;
        
rand()%4;
    }
    while(
cards[i][j]!=0);
    
cards[i][j]=0
    if(
count>0){count--;}
    else{
        
cout << "Карт больше нет";
    }

}
}; 

Herflrish, а почему нет?! Только не забудь удалять указатели...

Последний раз редактировалось ChaaK; 30.01.2009 в 00:18..
 

  #2216  
Старый 30.01.2009, 00:08
w_2k
Новичок
Регистрация: 23.07.2008
Сообщений: 28
Провел на форуме:
104504

Репутация: 1
Отправить сообщение для w_2k с помощью ICQ
По умолчанию

Благодарю) убрал только у конструктора тип и всё скомпилировалось) Спасиба огромное)
 

  #2217  
Старый 30.01.2009, 00:36
herfleisch
Участник форума
Регистрация: 07.01.2009
Сообщений: 237
Провел на форуме:
745649

Репутация: 97
Отправить сообщение для herfleisch с помощью ICQ
По умолчанию

Цитата:
Сообщение от ChaaK  
Herflrish, а почему нет?! Только не забудь удалять указатели...
Потому что по окончании работы функции область памяти, на которую ссылается указатель, никем ведь уже не контролируется по-моему. Вроде бы именно в этом случае в режиме Debug всё работает, а в Release - нет.
 

  #2218  
Старый 30.01.2009, 00:46
Chaak
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме:
5321514

Репутация: 3313


Отправить сообщение для Chaak с помощью ICQ
По умолчанию

Ты же ссылку возвращаешь, что тебе мешает удалить снаружи?

как вариант объяви как статик
 

  #2219  
Старый 30.01.2009, 20:41
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

Репутация: 86
По умолчанию

Пишу код на с++ в некоторых местах нужно конвертировать int в string,вот собственно и вопрос как это сделать?
Нашел в инете конвертер int в string но он странным образом не работает,точнее компилятор пишет ошибку
Код:
error C2228: left of '.str' must have class/struct/union
warning C4552: '>>' : operator has no effect; expected operator with side-effect
сам код
Код:
    std::ostringstream stm;
    // Output an int
    stm << 2500;
    // Retrieve the resulting string
    std::cout << stm.str() ;
    return 0;
вот откуда брал код
int to string

Последний раз редактировалось rudvil; 30.01.2009 в 20:43..
 

  #2220  
Старый 30.01.2009, 21:21
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от rudvil  
Пишу код на с++ в некоторых местах нужно конвертировать int в string,вот собственно и вопрос как это сделать?
Нашел в инете конвертер int в string но он странным образом не работает,точнее компилятор пишет ошибку
Код:
error C2228: left of '.str' must have class/struct/union
warning C4552: '>>' : operator has no effect; expected operator with side-effect
сам код
Код:
    std::ostringstream stm;
    // Output an int
    stm << 2500;
    // Retrieve the resulting string
    std::cout << stm.str() ;
    return 0;
вот откуда брал код
int to string
Если работаешь в борландской IDE то AnsiString(число)Есть ещё стандартные Ecvt,Fcvt,Gcvt
 
 





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


Быстрый переход




ANTICHAT.XYZ