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

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


Информационный Канал Subscribe.Ru


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

Выпуск № 227
от 06.04.2003, 14:50

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 678
Отправлено ответов: 1480
Активность: 218.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Eugene
Статус: Профессиональный
Общий рейтинг: 109.31
URL: мощный файловый архив
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 107.98
[Подробней >>]
Ramzes
Статус: Опытный
Общий рейтинг: 128.93
[Подробней >>]
 
Avl2k
Статус: Опытный
Общий рейтинг: 121.02
[Подробней >>]
Dzik
Статус: Профессиональный
Общий рейтинг: 114.04
URL: Разработка игрушек
[Подробней >>]
Morgion
Статус: Начальный
Общий рейтинг: 106.25
[Подробней >>]
 
DiGiT[old]
Статус: Профессиональный
Общий рейтинг: 111.21
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 667. Здравствуйте Уважаемые Эксперты! Подскажите пожалуйста, как мне на ассемблере вывести на экран один ... (ответов: 1)
Вопрос № 669. Здравствуйте, уважаемые эксперты. Извините за глупый вопрос, но я только начал изучать С++. Программ... (ответов: 7)

Вопросов: 2, ответов: 8


 Вопрос № 667

Здравствуйте Уважаемые Эксперты!
Подскажите пожалуйста, как мне на ассемблере вывести на экран один параметр, задающийся программе в командной строке.
(заданный следующим образом напр. - C:>write.com/long)
P.S. под WIN ещё не пишу только под DOS начал изучать ASM.
Заранее благодарен!



Вопрос отправлен: 02.04.2003, 01:48
Отправитель: kapral (kaprals@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Eugene

Приветствую Вас, kapral!
Так чего вопрос в рассылку по C++ посылаешь? В приложении пример как вывести всю строку. А если хочешь найти только ключ, то уже придётся анализировать строку. Например в начале строки содержится полный путь запущенной программы, потом уже то, что передали в качестве параметров.

Приложение:

Ответ отправлен: 02.04.2003, 12:27
Отправитель: Eugene


 Вопрос № 669

Здравствуйте, уважаемые эксперты.
Извините за глупый вопрос, но я только начал изучать С++.
Программа позволяет пользователю ввести слово (или предложение). Потом она подсчитывает число введеных символов и сообщает его пользователю. Это в идеале. Моя же программа постоянно показывает одно и тоже неправильное число. Не подскажете, в чем проблема?
Спасибо


Приложение:


Вопрос отправлен: 03.04.2003, 14:48
Отправитель: faraon (faraon@hotmail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Eugene

Доброе время суток, faraon!
Вот так заработает.

Приложение:

Ответ отправлен: 03.04.2003, 15:54
Отправитель: Eugene


Отвечает vitya

Приветствую Вас, faraon!
переделай функцию так:
int length(char * q)
{
int x = 0;
while (*q++)
++x;
}
int main()
{
...
length(p);
}

Ответ отправлен: 03.04.2003, 15:07
Отправитель: vitya


Отвечает Ramzes

Добрый день, faraon!
это потому, что ты каждый раз передаешь функции указатель на последний элемент массива.
меняем
int lenth(char p){...} на int lenth(char* p){...}
и x=lenth(p[50]); на x=lenth((char*)p);
и все работает :))

Ответ отправлен: 03.04.2003, 15:09
Отправитель: Ramzes


Отвечает Avl2k

Приветствую Вас, faraon!
1. p[50] - это не вся строка, а один символ строки.
2. char p - аналогично.
В-общем, надо так
#include
int lenth(char p)
{
int x=0; // cчетчик длины
char *q=&p; // указатель на массив со словом
/* Я думаю, пока указатель будет не нулем, введенное
слово не закончилось */
while (*q++) x++;
return x;
}
void main()
{
int x;
char p[50]; // массив из 50 char
cin >> p; // ввод последовательности символов
x=lenth(p[50]); // вызов функции для опр длины
cout << x; // вывод длины
cin >> x; // чтоб окно не закрылось
}
С уважением, Avl2k.

Ответ отправлен: 03.04.2003, 15:38
Отправитель: Avl2k


Отвечает Dzik

Добрый день, faraon!
Замени в обьявлении своей функции char p на char *p, с ним и работай(а не с q).
А так ты со стеком работаешь.

Ответ отправлен: 03.04.2003, 16:00
Отправитель: Dzik


Отвечает Morgion

Приветствую Вас, faraon!
/* Я думаю, пока указатель будет не нулем, введенное слово не закончилось */while (*q++) x++;- ну- кто ж так говорит-то- не указатель, а значение по адресу, на который этот указатель указывает.
И вообще- посмотри в определении ф-и lenth (length- правильней :))- (char p)- то есть 1 символ! А тебе нужно передавать указатель на строку. То есть (char *p). Так как указатель уже передан, то char *q=p. И передавать надо не p[50] (это равносильно *(p+50) :)) потому что это 50 элемент твоей строки. Надо передавать p, то есть адрес строки (указатель).
PS: Разберись с указателями по какой-либо книге, которые не раз уже рекомендовались.

Приложение:

Ответ отправлен: 03.04.2003, 20:32
Отправитель: Morgion


Отвечает DiGiT[old]

Приветствую Вас, faraon!
А си и с++ кто изучать будет я что ли за тебя :)
Ну мне просто весело стало от такого кода.
Во первых p[50] это есть 50-ый элемент относительно p[0],
во вторых параметры в процедуру передаются в стеке и брать адрес и потом его использовать от стекового элемента не правильно это я про char *q=&p;
В третих нужно сделать так как в приложении
ЗЫ я всегда буду искоренять ересь void main(), т.к. функция main должна возвращать значение типа int так говорит стандарт. Запомни это.

Приложение:

Ответ отправлен: 04.04.2003, 04:47
Отправитель: DiGiT[old]



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (34)
C / C++ (25)
Perl (6)
Delphi (16)
Pascal (21)
Basic / VBA (9)
Java / JavaScript (8)
PHP (5)
MySQL / MSSQL (6)
Пользователю
Windows 95/98/Me (32)
Windows NT/2000/XP (24)
"Железо" (29)
Поиск информации (15)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (12)
Юристу
Гражданское право (8)
Семейное право (5)
Трудовое право (5)
КоАП (6)

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




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное