XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Общение> Hard & Soft
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
MPI3
Хм...
offline
Опыт: 24,597
Активность:
Какой-то глюк с кодом на С++
Не знал где тему создать: здесь или в трактире, этот раздел мне показался более подходящим.
Смысл в том, что мне надо сделать алгоритм вычисления и вывести число в файл. С последним как раз проблемы. У меня есть учебник, сделал шаблон, разобрал, оптимизировал - удалил лишнее, там всё работает. У меня же появилась проблема с тем, что компилятор путает типы переменных. Отрывок кода:
Код:
ofstream out("file.txt");
char pwo;
pwo = (long double)p;
char pw[ ] = pwo;       //строка 14
out.write(pw, strlen(pw));
out.close();


Ошибка:
Цитата:
Error: fep.cpp(14,24):Cannot convert 'int' to 'char[]'
Warn : fep.cpp(17,2):'pwo' is assigned a value that is never used


Почему-то он char воспринимает как int, пытался char pw[ ] = (char)pwo - не помогло.

» Если что, то вот тот пример из учебника

#include <math.h>
#include <fstream.h>
#include <string.h>
#include <conio.h>
#include <stdio.h>
void main()
{
ofstream out("text.txt");
char str[ ] = "text";
out.write(str, strlen(str));
out.close();
}

P.S. тему чуть не назвал "Какой-то глюк с котом на С++"
Старый 21.06.2009, 19:09
ScorpioT1000
Работаем
offline
Опыт: отключен
Цитата:
ofstream out("file.txt");
char pwo;
pwo = (long double)p;
char pw[ ] = pwo; //строка 14
out.write(pw, strlen(pw));
out.close();

это смешно
char - "маленькое" целое(символьный тип)
long double - длинное число с точкой
char[] - массив чаров, где число в скобках генерируется при инициализации переменной, т.е.
Код:
char a[] = "ololo";
//тоже что и
//char a[6] = "ololo";

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

Отредактировано ScorpioT1000, 21.06.2009 в 20:10.
Старый 21.06.2009, 20:03
MPI3
Хм...
offline
Опыт: 24,597
Активность:
ScorpioT1000
поверь форматы я знаю))
Короче, мне нужно вывести число p. напрямую не выводится, я взял дополнительную переменную pw, пытался как char. Не получилось. Почему-то оператор out.write реагирует только на char[ ]. Это какая-то разновидность char, типо *char. как я понял.
Цитата:
ты написал такую бредню, что я даже не могу сообразить что здесь исправлять.

поэтому я специально в конце добавил пример по которому делал=)))
Старый 21.06.2009, 20:10
ScorpioT1000
Работаем
offline
Опыт: отключен
дак преобразуй к чару со звездой чтоб получились ячейки в массиве чаров:
[ 1цифра | 2цифра | 3цифра | Nцифра | \0 ]

и вобще для этого есть ф-ции число в чар*
Старый 21.06.2009, 20:13
J
expert
offline
Опыт: 48,447
Активность:
Код:
#include <fstream>
using namespace std;
void main()
{
    int num = 666;
    ofstream out("file.txt");
    char str[12];
    _itoa(num, str, 10);
    out.write(str, strlen(str));
    out.close();
}


J добавил:
Цитата:
реагирует только на char[ ]. Это какая-то разновидность char, типо *char. как я понял.
я думаю тебе с начало надо книжки какие-нибудь почитать по си++, и понять разницу между указателем и массивом
Старый 21.06.2009, 20:20
MPI3
Хм...
offline
Опыт: 24,597
Активность:
ScorpioT1000
какие? Если серьёзно я только на базовом уровне знаю c++

J
Цитата:
Error: fep.cpp(14,7):Call to undefined function '_itoa'
Старый 21.06.2009, 20:21
J
expert
offline
Опыт: 48,447
Активность:
у меня работает, попробуй без "_"
Старый 21.06.2009, 20:23
ScorpioT1000
Работаем
offline
Опыт: отключен
MPI3, какой c++? это не c++

ScorpioT1000 добавил:
ну и что что поток, это ничего не меняет..
Старый 21.06.2009, 20:23
MPI3
Хм...
offline
Опыт: 24,597
Активность:
J
неа, ничего нового. У тебя какой компилятор? скорее всего дело в нём.

ScorpioT1000
так какие функции?) int->*char
Старый 21.06.2009, 20:27
ScorpioT1000
Работаем
offline
Опыт: отключен
тебеже написали)
Цитата:
itoa(num, str, 10);


ScorpioT1000 добавил:
#include <stdlib.h>
Старый 21.06.2009, 20:29
J
expert
offline
Опыт: 48,447
Активность:
MPI3, у меня VS2008, выбраси книгу из которой взял этот пример, по коду видно она очень старая
Старый 21.06.2009, 20:30
MPI3
Хм...
offline
Опыт: 24,597
Активность:
блин..вы меня сами запутали)) у меня double=))) а не int)

MPI3 добавил:
Цитата:
открой гугл, и поищи как переконвертить число в строку

уже))) я находил, разные способы, но блин...не во всём сразу самому можно разобраться)
Старый 21.06.2009, 20:31
ScorpioT1000
Работаем
offline
Опыт: отключен
ну ftoa

ScorpioT1000 добавил:
и всеравно stdlib подключать еще)
Старый 21.06.2009, 20:33
MPI3
Хм...
offline
Опыт: 24,597
Активность:
ScorpioT1000
опять не находит функцию, она той же библиотеки?

MPI3 добавил:
хм...она подкл, не находит ф-цию
Старый 21.06.2009, 20:35
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
блин..вы меня сами запутали)) у меня double=))) а не int)
так например
Код:
#include <fstream>
using namespace std;
void main()
{
    double d = 5464.566;
    ofstream out("file.txt");
    char str[20];
    sprintf(str,"%0.02f",d);
    out.write(str, strlen(str));
    out.close();
}
Старый 21.06.2009, 20:40
MPI3
Хм...
offline
Опыт: 24,597
Активность:
J
Хм...спасибо, почти то. Видимо проблема в самом значении переменной(она длинее числа пи) и получается странный результат. Очень)
Старый 21.06.2009, 20:45
ScorpioT1000
Работаем
offline
Опыт: отключен
да, с ftoa косяк )
Цитата:
она длинее числа пи

а ты уже знаешь длину числа пи? =O
Старый 21.06.2009, 20:47
MPI3
Хм...
offline
Опыт: 24,597
Активность:
ScorpioT1000
э...да)))
ну относительно))
Но для данного вычисления я брал константу из библиотеки math. И там ещё было несколько дробных(ироциональных) чисел, так что кол-во знаков после запятой больше.
Как привести к 15-20 знакам...когда не знаешь точного числа знаков после запятой?)

MPI3 добавил:
о...всё, разобрался. Спасибо вам обоим=)
Старый 21.06.2009, 21:22
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 19:40.