Обсуждение Программирование на C/C++

Battle Bear

Ословед
Требуется создать список из наследников одного класса. Можно ли реализовать смену типа указателя на предыдущий/следующий элемент при вставке нового/удалении старого элемента?
 
Подсобите немножко: написал простенькую программу (никаких ООП, консольное приложение DOS) на ввод/вывод данных, самый минимум короче, но при выводе сообщений вместо русских букв закорючки, как исправить?
Использовал MS VS 2010 и std::cin; cout...
Где-то в настройках проекта может порыться?
 

SunnyMan

Namynnuz
Подсобите немножко: написал простенькую программу (никаких ООП, консольное приложение DOS) на ввод/вывод данных, самый минимум короче, но при выводе сообщений вместо русских букв закорючки, как исправить?
Использовал MS VS 2010 и std::cin; cout...
Где-то в настройках проекта может порыться?
PHP:
setlocale(LC_ALL,"Russian");
 
Ага, сам уже догадался)
А ещё маленький вопросец, надо подключить к проекту библиотеку .lib как это делается?

PS разобрался и с этим.

Новая проблема, всё шо хотел увидел, но случайные числа получаются не совсем случайные, т.е. генерятся от заранее заготовленного числа (в данном случае единицы, использую rand() ), есть возможность брать время в основу генерации случайного ряда, но если брать секунды, то идут повторы, а взять миллисекунды я не знаю как. Хотел попробовать GetTickCount(void) подрубил заголовочный #include <Winbase.h> для неё, компилятор нарыл в Winbase.h туеву кучу ошибок... Какие ещё возможны варианты для миллисекунд?
 
Вот этим кодом:
long random ()
{
long r;
long result;

//srand(GetTickCount());

r = rand() % 37;

if (r == 0)
{ result = 3; }
else
{ result = r % 2; }

return result;
}

генерирую псевдослучайную серию чисел в массив:

int i;
for ( i = 0; i < n; i++)

{
isp = random();
}

При этом каждый раз формируется один и тот же массив чисел, т.к. rand() сеется одним и тем же числом. Если же включать в код строчку srand(GetTickCount()) (разобрался как врубать функцию, нужно было добавить не Winbase.h, а Windows.h), то массив получается кривым... %(((
 

Battle Bear

Ословед
В программе используется графика из graphics.h. Как получить с клавиатуры строку, учитывая что cin ждет ввода в консоли, а не в графическом окне, а getch возвращает код нажатой клавиши(неужели придется писать функцию, переводящую код клавиши в нормальный символ char?)?
 

SunnyMan

Namynnuz
В программе используется графика из graphics.h. Как получить с клавиатуры строку, учитывая что cin ждет ввода в консоли, а не в графическом окне, а getch возвращает код нажатой клавиши(неужели придется писать функцию, переводящую код клавиши в нормальный символ char?)?
Собственно, а прямое приведение типов (char)symbol не работает?
 

Battle Bear

Ословед
Так?
PHP:
int main(){
  initwindow(800,600);
  setcolor(WHITE);
  int q ;
  char * w;
  q=getch();
  w=(char *)q;
  outtextxy(20,20,w);
  getch();
    };
Вылетает при нажатии любой клавиши.
 
Как в vc++ создать аналог этого (string[] a = new string[100]; ), который будет пригоден для нормальной работы?

String^ *a[100];
a[1] = "111";
.....

String^ **a[100];
a[1] = "111";
....

String^ a[100] = new String[100];
a[1] = "111";
....

String^ *a[100] = {"111", ...};

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

JIECHuK

Ословед
Как в vc++ создать аналог этого (string[] a = new string[100]; ), который будет пригоден для нормальной работы?

String^ *a[100];
a[1] = "111";
.....

String^ **a[100];
a[1] = "111";
....

String^ a[100] = new String[100];
a[1] = "111";
....

String^ *a[100] = {"111", ...};

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

интересно, как ты пытаешься во второй символ запихнуть строку из четырех символов(3 единички и конец строки)
 
интересно, как ты пытаешься во второй символ запихнуть строку из четырех символов(3 единички и конец строки)
Если ты про то что надо записать не так
String^ *a[100];
a[1] = "111";
а так к примеру
String^ *a[100];
*a[1] = "111";
то я просто забыл указать "*"
Т.к. со строками в с++ никогда не работал, то не знаю, как их точно использовать.
 

JIECHuK

Ословед
а нет, я какуюто чушь сморозил, тоже с классами String^ не работал. не проще ли тебе было массив из char создать?
 

    PHOENIX_DIVUS

    очки: 18
    Нет комментариев
Сверху