Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.05.2009, 23:24   #21
Kycaka
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 63
По умолчанию

у меня есть в файле .тхт текст длинной допустим 700 символов. я хочу засунуть этот текст посимвольно в массив.
чтобы 1ая буква этого текста была массивек[0], вторая буква массивек[1] и так 700 символов))

как можно это сделать)
Kycaka вне форума
Старый 25.05.2009, 23:36   #22
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ну вот вам пример. Есть файл test.txt.
Открываем файл, определяем размер.
Потом выделяем память под массив символов. В цикле считываем туда символы из файла. Параллельно добавляем их в Мемо:
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
std::ifstream fin("test.txt",std::ios::binary);
int i,len;
char *mas;
fin.seekg(0,std::ios_base::end);
len = fin.tellg();
ShowMessage("Размер файла: "+IntToStr(len));
mas = new char[len];
fin.seekg(0,std::ios_base::beg);
i=0;
while(!fin.eof())
 {
  mas[i++] = fin.get();
  Memo1->Text = Memo1->Text + mas[i-1];
 }
delete[] mas;
fin.close();
}

ps Нужно подключить fstream:
Код:
#include <fstream>
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 26.05.2009, 12:24   #23
Kycaka
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 63
По умолчанию

Когда делаю так, у меня долго думает программа, да и я сам не все толком понял.

Я ошибся, мне нужно не из файла а из ТМемо.
Вообще как у меня. Я загружаю в Тмемо из файла.тхт текст, расчитываю там разные статистики для букв и т.п.

т.е. текст у меня хранится в ТМемо. Теперь (для удобства) мне нужно перевести из ТМемо весь текст в один массив, так, чтобы буквы были в разных "записях" массива, т.е. посимвольно.

Вот что делаю я:

Цитата:
int i=0;
int d=0;
int f=0;
int strok_vsego = Memo1->Lines->Count; //определили сколько всего строк.

char *ALL_text;
ALL_text = new char[dlina_texta]; //я до этого еще определял длину всего текста в Тмемо

while(i<strok_vsego)
{
AnsiString odna = Crypto->Lines->Strings[i]; //перегоняю строку одну переменную типа ансистринг.
char *odna_char = odna.c_str(); //теперь в массив
while ((unsigned)d<strlen(odna_char)) //выполняется столько раз, сколько символов в строке
{
ALL_text[f] = odna_char[d]; //посимвольно в итоговый массив мы вносим буквы из строки
d=d+1;
f=f+1;
}
d=0; //счетчик символов с строке обнуляется, а счетчик символов в массиве не обнуляется. т.к. записи должны идти дальше. (т.е. к примеру в строке 30 символов. они записались с 0 до 29. потом следующая строка должна быть уже с30 до 59 к примеру.
i=i+1;
}
В итоге, я перегнал все строки посимвольно в один массив ALL_text.
Теперь, когда я хочу узнать длину этого массива, я пишу к примеру:

Edit1->Text = strlen(ALL_text);

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

Но так же я заметил, что впринципе всего символов это переменная f.

К примеру. я загружаю текст в мемо, все там преобразую и перевожу в массив.
буква f к примеру равна 669
другая переменная, через которую я тоже считал длину всего текста равна (dlina_texta) 669
а вот strlen(ALL_text) равна 771


еще раз жму на кнопку.
f = 669;
dlina_texta = 669
strlen(ALL_text) = 669


еще раз жму:

f = 669;
dlina_texta = 669
strlen(ALL_text) = 690


почему она все время меняется?

Последний раз редактировалось Kycaka; 26.05.2009 в 12:43.
Kycaka вне форума
Старый 26.05.2009, 12:41   #24
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Edit1->Text = strlen(ALL_text);
Нельзя так. У вас динамический массив. Вам нужно где-то хранить его размер.
Считайте длину при занесении символов в массив.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 26.05.2009, 12:50   #25
Kycaka
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 63
По умолчанию

понятно, кокрас это и есть переменная f. Спасибо.

Последний раз редактировалось Kycaka; 26.05.2009 в 12:55.
Kycaka вне форума
Старый 26.05.2009, 12:56   #26
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Я сейчас делал копию, и у меня както в Project Manager в главной копии пропала запись о 2ой форме. теперь когда запускаю на F9 и Shift+F9 пишет что не может найти ее, как добавить ее в менеджер обрантно?
Что и куда добавить?
Может, File -> Include Unit Hdr...?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 26.05.2009, 13:03   #27
Kycaka
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 63
По умолчанию

уже ничего___)) разобрался что и куда пропало)) Спасибо)
Kycaka вне форума
Старый 26.05.2009, 15:35   #28
Kycaka
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 63
По умолчанию

Цитата:
delete[] massivek; // освобождаем память
тут мы полностью очищаем массив? или только лишние записи, в которых ничего нет?
Kycaka вне форума
Старый 26.05.2009, 15:38   #29
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Kycaka
тут мы полностью очищаем массив? или только лишние записи, в которых ничего нет?
Освобождаем полностью.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 26.05.2009, 19:10   #30
Kycaka
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 63
По умолчанию

не подскажите, как можно найти ближайшее значение к заданному.
К примеру:
заданное число = 0.0529

у меня есть:
0.0234
0.0411
0.0531
0.0312
0.0121
0.0803

как найти ближайшее число, а лучше два или три
Kycaka вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод двумерного массива Kocapb Общие вопросы C/C++ 4 11.10.2012 11:05
Как данные с массива передавать на тренд и таблицу? KuevProger Помощь студентам 1 20.03.2009 11:47
Вывод массива из функции LeoN PHP 2 13.11.2008 13:57
Вывод на печать StringGrid таблицу Македонский Общие вопросы Delphi 3 06.11.2007 01:21