Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите найти ошибку

629
02 апреля 2002 года
TekiL
19 / / 20.09.2000
Такой расклад пользователь вводит с клавиатуры числа. остановка - пробел
т. е. прога должна
а. проверить не ввёл-ли пользователь пробел
б. сконвертить введёный стринг в double

код
char *note_char;
...
do
{
cin(note_char);
if (note_char!=" ")
note[x][y]=atof(note_char);
...
}
while (note_char!=" ");

При компиляции никаких ошибок. Но в итоге прога не работает и виснет. Дебаг показал что у всех переменных нормальные (ожидаемые) значения.
где я ошибся?
526
03 апреля 2002 года
advisor
44 / / 20.03.2000
код
char note_char;
...
do
{
note_char = (char) _getch();
if (note_char!=' ')
note[x][y]=atof(note_char);
...
}
while (note_char!=' ');

не уверен но попробуй так.
629
03 апреля 2002 года
TekiL
19 / / 20.09.2000
не прошло.
во первых нужно сразу обявлять
char *note_char;
для этой строки
note[x][y]=atof(note_char);
(либо пишет cannot convert parameter 1 from 'char' to 'const char *')
и так далее. ошибок много звязанных иммено с этой фичей (кажется это называется пойнтер )
380
03 апреля 2002 года
Arestov
285 / / 20.09.2000
Цитата:

char *note_char;
...
do
{
cin(note_char);
if (note_char!=" ")
note[x][y]=atof(note_char);
...
}
while (note_char!=" ");



cin пустые (с пробелами и пр.) строки не возвращет.

Под чему равны x,y???
Вот это врятли когда-нибудь не выполниться
note_char!=" ", т.е. note_char скорее всего всегда будет не равен " ", т.к. производится сравнение адресов.

Вот что надо
читаем double'ы пока юзверг не введёт строку "end"
#include <iostream>
#include <string.h>
#include <memory.h>

using namespace std;

int main(int argc, char* argv[])
{
char c[32];

do
{
cin.width( 31 );
cin >> c;
strlwr(c);
if (strcmp(c, &quot;end&quot;)!=0)
break;
cout << &quot;c = &quot; << atof(c) << endl;
}while(1);
return 0;
}

855
03 апреля 2002 года
zorg
4 / / 20.01.2000
Привет,
вот тебе код который тебе нужен

int a = 0, i = 0;
char buffer[80];
while( a != 32 )
{
a = getche();
buf[i++] = a;
}
buf = '\0';

дальше нужно сконвертировать этот буффер
думаю с этим у тебя проблем нет

Удачи.!
Если сработает, дай знать.

855
03 апреля 2002 года
zorg
4 / / 20.01.2000
Цитата:

On 2002-04-02 2208, Arestov wrote
[quote]
char *note_char;
...
do
{
cin(note_char);
if (note_char!=&quot; &quot;)
note[x][y]=atof(note_char);
...
}
while (note_char!=&quot; &quot;);



cin пустые (с пробелами и пр.) строки не возвращет.

Под чему равны x,y???
Вот это врятли когда-нибудь не выполниться
note_char!=&quot; &quot;, т.е. note_char скорее всего всегда будет не равен &quot; &quot;, т.к. производится сравнение адресов.

Вот что надо
читаем double'ы пока юзверг не введёт строку &quot;end&quot;
#include <iostream>
#include <string.h>
#include <memory.h>

using namespace std;

int main(int argc, char* argv[])
{
char c[32];

do
{
cin.width( 31 );
cin >> c;
strlwr(c);
if (strcmp(c, &quot;end&quot;)!=0)
break;
cout << &quot;c = &quot; << atof(c) << endl;
}while(1);
return 0;
}


[/quote]

Привет Арестов,
где ты там видел сравнение адресов ??
у него вся проблема заключалась в том, что cin не возвращал управление, пока пользователь не нажал клавишу Enter.
для этого, ему нужно просто брать каждый символ и сравнить с &quot; &quot;

удачи !

475
03 апреля 2002 года
Winnie
90 / / 20.03.2000
Цитата:

код
char *note_char;
...
do
{
cin(note_char);
if (note_char!=&quot; &quot;)
note[x][y]=atof(note_char);



интересно а кто выделяет память под note_char?
imho ошибка в этом

380
04 апреля 2002 года
Arestov
285 / / 20.09.2000
Цитата:

On 2002-04-03 1009, zorg wrote

Привет Арестов,
где ты там видел сравнение адресов ??



Вот где

Цитата:

char *note_char;
....
while (note_char!=&quot; &quot;);



Цитата:


у него вся проблема заключалась в том, что cin не возвращал управление, пока пользователь не нажал клавишу Enter.



cin не вернёт управление пока юзер что-нить не введёт и нажмёт Enter, по крайней мере в моей версии STL.
т.е. моя STL предполагает ws(cin)

Цитата:

для этого, ему нужно просто брать каждый символ и сравнить с &quot; &quot;



вот моя STL не вернёт &quot; &quot;, а только непустые строки, которые помимо \t\n и пробела имеют что-то ещё.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог