Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 557
от 19.10.2006, 07:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 404, Экспертов: 49
В номере:Вопросов: 3, Ответов: 5


Вопрос № 58772: Здравствуйте уважаемые эксперты.В данной программе нужно после каждых трех отрицательныйх элементов вставить ноль.Допустим мы вставляем 2 нуля,но количество элементов в массиве изменяется.Нужно ввести новую переменную,которая бы считала сколько нулей...
Вопрос № 58779: Добрый всем день, такой вопросик: есть число типа double, есть кол-во цифр после запятой. Необходимо преобразовать его в строку(char*) с точкой . Что-то с _fcvt и _gcvt не выходит, может что-то неправильно делаю. Уважением Костя...
Вопрос № 58844: Уважаемые эксперты! Начисто забыл, как получить строковый параметр, передающийся в командной строке при запуске приложения. Подскажите, pls! Желательно наглядным примером. Заранее спасибо!...

Вопрос № 58.772
Здравствуйте уважаемые эксперты.В данной программе нужно после каждых трех отрицательныйх элементов вставить ноль.Допустим мы вставляем 2 нуля,но количество элементов в массиве изменяется.Нужно ввести новую переменную,которая бы считала сколько нулей мы вставили.Тоесть конечный вывод с[i] был равен числу элементов в массиве изночально+количество вставленных нулей.Как это сделать ??
Заранее благодарю за ответы

Приложение:

Отправлен: 13.10.2006, 12:30
Вопрос задал: Respect (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: ADSota
Здравствуйте, Respect!

Новый размер массива все-таки придеться вычислять, в противном случае нужно будет использовать 2 массива. Один из вариантов:

Приложение:

---------
Открыть глаза навстречу солнцу

Ответ отправил: ADSota (статус: Специалист)
Ответ отправлен: 17.10.2006, 15:52


Вопрос № 58.779
Добрый всем день,
такой вопросик:
есть число типа double, есть кол-во цифр после запятой.
Необходимо преобразовать его в строку(char*) с точкой .
Что-то с _fcvt и _gcvt не выходит, может что-то неправильно делаю.
Уважением Костя
Отправлен: 13.10.2006, 14:14
Вопрос задал: Kos (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Tek
Здравствуйте, Kos!
Например так:

char fl[100];
std::string tmps;
int decp, sign;

tmps = fcvt(double(minSum)/100, 2, &decp, &sign);
strcpy(fl, (sign==1?"-":""+tmps.substr(0, decp)+"."+tmps.substr(decp,2)).c_str());

sign - признак наличия знака
decp - позиция десятичной точки
в tmps сплошное чистло со знаками после запятой, но без самой запятой

Но вообще конечно как и сказали лучше sprintf
---------
WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано
Ответ отправил: Tek (статус: 1-ый класс)
Ответ отправлен: 13.10.2006, 14:29
Оценка за ответ: 4
Комментарий оценки:
Спасибо, но наворочено , sprintf -то что надо!

Отвечает: dentist
Здравствуйте, Kos!
ну можно поступить так:

char str[60] = {0};
double var = 124.1254363732;
sprintf(str, "%3.10f", var); // 3 знака перед запятой и 10 после
MessageBox(0, str, "", 0);
---------
"Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 5-ый класс)
Ответ отправлен: 13.10.2006, 14:44
Оценка за ответ: 5
Комментарий оценки:
То что надо!


Вопрос № 58.844
Уважаемые эксперты! Начисто забыл, как получить строковый параметр, передающийся в командной строке при запуске приложения.
Подскажите, pls! Желательно наглядным примером.
Заранее спасибо!

Приложение:

Отправлен: 13.10.2006, 23:52
Вопрос задал: =FeanaR= (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Vaga
Здравствуйте, =FeanaR=!

По традиции C++ передает два (иногда три) параметра в main, которые в большинстве программ называются argc и argv.
Параметр argc содержит количество аргументов командной строки, передаваемых в вашу программу.
Параметр argv представляет собой массив указателей на символьные строки, каждая из которых соответствует одному параметру командной строки.
С:> COPY SOURCE.DOC TARGET.DOC

В данном случае командная строка указывает команду (COPY) и два аргумента (имя файлов SOURCE. DOC и TARGET. DOC). Чтобы разрешить вашей программе доступ к командной строке, C++ передает два параметра в функцию main:

void main(int argc, char *argv[])

Первый параметр argc содержит количество элементов в массиве argv. Например, в случае предыдущей команды COPY параметр argc должен содержать значение 3 (он включает имя команды и два аргумента).

#include

void main(int argc, char *argv[])

{
cout << "Количество аргументов командной строки равно " << argc << endl;
}
За более подробным описанием советую обратить взор сюда: http://www.allk.ru/book/10/93.html
---------
Ошибка становится ошибкой, когда рождается как истина. Станислав Ежи Лец
Ответ отправил: Vaga (статус: 4-ый класс)
Ответ отправлен: 14.10.2006, 00:18

Отвечает: Sergey A. Wedensky
Здравствуйте, =FeanaR=!

Vaga абсолютно прав - в main передается количество аргументов к.с. и они сами, можно получить еще переменные окружения:
int main( int argc[ , char *argv[ ] [, char *envp[ ] ] ] );
Но это для DOS или консольного приложения.
Добавлю от себя: в WinAPI для этого существует функция
LPTSTR GetCommandLine(void);
Ответ отправил: Sergey A. Wedensky (статус: 5-ый класс)
Ответ отправлен: 16.10.2006, 10:02


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное