Вопросы и ответы по программированию.

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
Аватара пользователя
Monk
VIP
VIP
Сообщения: 4713
Зарегистрирован: 21.11.2009
Благодарил (а): 418 раз
Поблагодарили: 1053 раза
Контактная информация:

#331 Сообщение 18.11.2012, 14:51

Если нули передвинуть в конец, то разве ты не 24053 в 24530 должен преобразовать?
«По ночам компьютеры собираются вместе и смеются над людьми, если те делают работу, которую могли бы делать компьютеры» (с) habrahabr
 
[hide_num=64]Изображение
Изображение

Не стоит становиться на одно колено ради девушки, которая ради тебя не готова встать на два. (С)
640K ought to be enough for anybody (с) BG[/hide_num]

Аватара пользователя
Rama
Модератор
Модератор
Сообщения: 1143
Зарегистрирован: 28.03.2008
Благодарил (а): 389 раз
Поблагодарили: 240 раз
Контактная информация:

#332 Сообщение 18.11.2012, 15:06

kinders666
Тогда так, по-моему
[syntax lang="c" lines="n"]
k = 0;
for (i = 0; i < n - k; i++) {
if (A == 0) {
k++;
for (j = i; j < n - k; j++)
A[j] = A[j+1];
A[n-k] = 0;
}
}
[/syntax]
Где k - кол-во нулей, которые ты передвинул.

Аватара пользователя
kinders666
Модератор
Модератор
Сообщения: 4163
Зарегистрирован: 25.10.2006
Откуда: Москва
Благодарил (а): 537 раз
Поблагодарили: 191 раз

#333 Сообщение 18.11.2012, 15:16

Уже сам разобрался, вот как нужно:

Код: Выделить всё

    int i;
    int j;
    int k;
    int z = 0;
    double B[NMAX];
    for (i = 0; i < n; i++)
     {
	     B[i] = 0;
	 }
     for (j = 0; j < n; j++)
     {
	     if (A[j] != 0)
		 {
		    B[z] = A[j];
		    z++;
		 }
	 }
     for (k = 0; k < n; k++)
     {
        cout << "A[" << k << "] = ";
        cout << B[k] << endl;
     }
Изображение
Изображение

Аватара пользователя
Rama
Модератор
Модератор
Сообщения: 1143
Зарегистрирован: 28.03.2008
Благодарил (а): 389 раз
Поблагодарили: 240 раз
Контактная информация:

#334 Сообщение 18.11.2012, 16:18

Реализация через второй массив не очень удачна, имхо. В последнем цикле вместо k должно быть z? Алсо, заполнить определенный участок памяти одинаковыми символами можно и без цикла, через memset. Приведенный выше кусок кода просто выводит ненулевые элементы массива на экран =] Но раз уже разобрался, то я удаляюсь.

Аватара пользователя
kinders666
Модератор
Модератор
Сообщения: 4163
Зарегистрирован: 25.10.2006
Откуда: Москва
Благодарил (а): 537 раз
Поблагодарили: 191 раз

#335 Сообщение 18.11.2012, 19:40

Saloed
Я начинающий, мы акромя if и for мало что проходили, о memset вообще в первый раз слышу, не хочу вызывать дополнительные вопросы у преподавателя. А в последнем цикле всё правильно, он просто выводит уже изменённый массив
Изображение
Изображение

Аватара пользователя
Rama
Модератор
Модератор
Сообщения: 1143
Зарегистрирован: 28.03.2008
Благодарил (а): 389 раз
Поблагодарили: 240 раз
Контактная информация:

#336 Сообщение 18.11.2012, 20:02

kinders666
Обычно преподаватели наоборот хвалят за самостоятельные познания. http://www.cplusplus.com/ там вверху есть поиск. Если ввести там memset и перейти по первой ссылке — покажет в какой библиотеке функция, прототип, пример, похожие функции.

Аватара пользователя
kinders666
Модератор
Модератор
Сообщения: 4163
Зарегистрирован: 25.10.2006
Откуда: Москва
Благодарил (а): 537 раз
Поблагодарили: 191 раз

#337 Сообщение 18.11.2012, 20:50

Saloed
Благодарю, полезная штука, жаль не на русском.. Нет, хвалить-то он может и будет, но точно потребует объяснений как это работает.. Проверка на то, что ты сам делал, а не кто-то за тебя или из сети скачал вообще.
Изображение
Изображение

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#338 Сообщение 18.11.2012, 22:27

Не рекомендую cplusplus.com, там встречаются неточности и даже неверные описания.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
nikit-xxx
Лейтенант
Лейтенант
Сообщения: 208
Зарегистрирован: 28.11.2007
Благодарил (а): 44 раза
Поблагодарили: 5 раз

#339 Сообщение 19.11.2012, 16:16

kinders666,
memset настолько стар, что есть даже в справочнике Шилдта http://cpp.com.ru/shildt_spr_po_c/index.html или http://lord-n.narod.ru/download/books/w ... C/main.htm
Откуда иксы в моём нике
Изображение
Изображение
скачать С. Прата. Язык программирования C++. Лекции и упражнения. 5-е изд (*Выровнена нумерация страниц, *Содержание)
Краткая инструкция по созданию пиратки-распака CS/HL
Изображение
Использование тэга подсветки синтаксиса
[syntax lang="cpp" lines="n"]
#include <iostream>
using namespace std;

struct cl{
static void f() { cout << "Hi, user!\n"; }
int i;
};

int main()
{
cl::f();
//cl::i = 1;
return 0;
}
[/syntax]

Fire666
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 2600
Зарегистрирован: 15.02.2007
Откуда: Москва
Благодарил (а): 2 раза
Поблагодарили: 43 раза
Контактная информация:

#340 Сообщение 20.11.2012, 18:20

А чем memset плох?

Ну или сам напиши аналог

[syntax lang="c" lines="n"]
void memset2( void *pData, byte pattern, size_t size )
{
for( int i = 0; i < size; i++ )
{
pData = pattern;
}
}
[/syntax]

Аватара пользователя
nikit-xxx
Лейтенант
Лейтенант
Сообщения: 208
Зарегистрирован: 28.11.2007
Благодарил (а): 44 раза
Поблагодарили: 5 раз

#341 Сообщение 24.01.2013, 03:09

Помогите пожалуйста исправить уродливый шрифт в текстовом поле с информацией о процессе, это пример 04-ProcessInfo к книге Дж. Рихтера "Рихтер Дж. - Windows. Создание эффективных Win32-приложений с учётом специфики 64-разрядной версии Windows - 2008.pdf", который я подружил с Visual Studio 2005.
Изображение

http://rghost.ru/43266889

Почему оно не запускается на других чистых операционках (Win XP 32-bit SP3, Win Server 2003 32-bit)? Вроде нет зависимостей CLI/CLR... "Приложение не может быть запущено, т. к. оно некорректно настроено"
Добавлено спустя 1 час 44 минуты 15 секунд:
если кому интересно, с помощью dumpbin.exe /IMPORTS обнаружил зависимость программы от MSVCR80.dll, эту зависимость убрал как написано здесь и теперь всё нормально запускается.


Остаётся вопрос, как поменять сплюснутый шрифт?
Откуда иксы в моём нике
Изображение
Изображение
скачать С. Прата. Язык программирования C++. Лекции и упражнения. 5-е изд (*Выровнена нумерация страниц, *Содержание)
Краткая инструкция по созданию пиратки-распака CS/HL
Изображение
Использование тэга подсветки синтаксиса
[syntax lang="cpp" lines="n"]
#include <iostream>
using namespace std;

struct cl{
static void f() { cout << "Hi, user!\n"; }
int i;
};

int main()
{
cl::f();
//cl::i = 1;
return 0;
}
[/syntax]

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#342 Сообщение 24.01.2013, 09:33

nikit-xxx
Программу ты писал же? Значит шрифт -- твоих рук дело :D
Покажи код.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
nikit-xxx
Лейтенант
Лейтенант
Сообщения: 208
Зарегистрирован: 28.11.2007
Благодарил (а): 44 раза
Поблагодарили: 5 раз

#343 Сообщение 24.01.2013, 14:01

NiGHt-LEshiY
nikit-xxx писал(а):http://rghost.ru/43266889
это пример 04-ProcessInfo к книге Дж. Рихтера "Рихтер Дж. - Windows. Создание эффективных Win32-приложений с учётом специфики 64-разрядной версии Windows - 2008.pdf", который я подружил с Visual Studio 2005.

я не нашёл в коде (в .rc тоже искал, да) где явно указывается шрифт этого текстового поля..

что меня смущает, что шрифт можно менять только для окна диалога, для других элементов вообще нет поля Font

Добавлено спустя 43 минуты 20 секунд:
всё, нашёл ф-ю, ставящую плохой шрифт:
SetWindowFont(GetDlgItem(hwnd, IDC_RESULTS), GetStockFont(ANSI_FIXED_FONT), FALSE); строка ~263 в файле ProcessInfo.cpp
Откуда иксы в моём нике
Изображение
Изображение
скачать С. Прата. Язык программирования C++. Лекции и упражнения. 5-е изд (*Выровнена нумерация страниц, *Содержание)
Краткая инструкция по созданию пиратки-распака CS/HL
Изображение
Использование тэга подсветки синтаксиса
[syntax lang="cpp" lines="n"]
#include <iostream>
using namespace std;

struct cl{
static void f() { cout << "Hi, user!\n"; }
int i;
};

int main()
{
cl::f();
//cl::i = 1;
return 0;
}
[/syntax]

Аватара пользователя
Monk
VIP
VIP
Сообщения: 4713
Зарегистрирован: 21.11.2009
Благодарил (а): 418 раз
Поблагодарили: 1053 раза
Контактная информация:

#344 Сообщение 27.01.2013, 19:23

Можно как-то скомпиленный C# проект проверить на требуемую версию framework?
«По ночам компьютеры собираются вместе и смеются над людьми, если те делают работу, которую могли бы делать компьютеры» (с) habrahabr
 
[hide_num=64]Изображение
Изображение

Не стоит становиться на одно колено ради девушки, которая ради тебя не готова встать на два. (С)
640K ought to be enough for anybody (с) BG[/hide_num]

Аватара пользователя
kinders666
Модератор
Модератор
Сообщения: 4163
Зарегистрирован: 25.10.2006
Откуда: Москва
Благодарил (а): 537 раз
Поблагодарили: 191 раз

#345 Сообщение 15.04.2013, 13:04

Нужна помощ по C++; for; string
Есть строка s0, содержащая только цифры от 0 до 9, четное число элементов. Я ее изменяю:
int size = s0.length();
string s1 = "";
for (i = 0; i < size; i = i + 2)
s1 = s1 + s0;
for (i = 1; i < size; i = i + 2)
s1 = s1 + s0;
Таким образом, если у нас была строка 0123456789, то получилась 0246813579
Тупой вопрос: как вернуть строку в первозданное состояние? То есть, допустим, из 0246813579 получить 0123456789?
Изображение
Изображение

Ответить Вложения 1