Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

[C++] Глупый вопрос

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
ZiGi



Зарегистрирован: 15.07.2006
Сообщения: 11

СообщениеДобавлено: Сб Июл 15 2006 10:19    Заголовок сообщения: [C++] Глупый вопрос Ответить с цитатой

Для начала...
Тут случайно нет какогонибуть раздела для новичков? А то у меня ещо будет куча глупых вопросов Smile
Да и вобще неплохо было бы литературой ещо затарится, начал я учить C++ сравнительно недавно и у меня книг пока маловато...
Тут гдето точно должна быть тема с ссылками на литературу, правдо поиском я её на нашол.

Итак вопрос:
Для тренировки пишу прогу для страшно тупой задачи Smile Она должна открывать текстовый файлик делать из него копию в которой должна удалить все буквы а цыфры оставить. Она вроди как работает но со своими граблями... Вопервых проц вовремя работы занят не больше чем на 50%, вовторых сильно большые файлики хавать не хочет Smile Думал что она его просто долго обрабатывает, потому сделал прогрессбар для сличением за процессом и всёравно маленькие файли (гдето до 100 строчек) хавает а на большых виснет.

Arrow Великим и страшным програмерам
Прошу не матирится на пост, и не посылать меня на...
google.com
был я там - нечего интересного Smile
если вам чтото не нравится можно меня просто игнорировать!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Вс Июл 16 2006 00:55    Заголовок сообщения: Ответить с цитатой

Было бы нравственно указать:
1. ОС
2. Среда разработки и компилятор
3. Способ которым Вы открываете файл

Лично у меня проблем с файлами меньше 2Гб не возникало никогда...

Литература:
Страуструп, а вот названия не помню. Можно найти в интете на Русском языке. Еще, я бы рекомендовал Герберта Шилда(Шилдта) почитать.
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
ZiGi



Зарегистрирован: 15.07.2006
Сообщения: 11

СообщениеДобавлено: Вс Июл 16 2006 11:41    Заголовок сообщения: Ответить с цитатой

Kefir писал(а):
Было бы нравственно указать:
1. ОС

WinXP
Kefir писал(а):

2. Среда разработки и компилятор

Визуал студио
Kefir писал(а):

3. Способ которым Вы открываете файл

Тут я не понял. Я конечно извиняюсь за свое невежество, просто я не сильно давно сел за С++ и непонимаю в чом вопрос?
Могу подкинуть мой код, но подозреваю без пива его некто смотрет не будет Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Вс Июл 16 2006 12:23    Заголовок сообщения: Ответить с цитатой

Можно открывать файл с помощью:
1. UNIX-подобной системы ввода/вывода (open,read,write)
2. Стандартной библиотеки ввода/вывода Си (fopen,fprintf,fscanf)
3. Библиотки ввода/вывода Си++ (iostream)
и т.д.

Приводите код, разберемся...
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
kolobok0



Зарегистрирован: 22.04.2005
Сообщения: 253
Откуда: Мсква

СообщениеДобавлено: Пн Июл 17 2006 14:50    Заголовок сообщения: Ответить с цитатой

ZiGi писал(а):
Тут я не понял...


если Вы собрались далеко и на долго в программирование, и одна из Ваших платформ будет форточки(Win32) - то рекомендую поискать и купить (можно просто в инете) книги...

1) Круглинский
"Использование VC++ MFC" (название не точно).
Не плохо дан пласт MFC

2) Джэф Элджер "C++"
Не плохие приёмы программирования...

3) Рихтер
"Windows для проффесионалов"
Толково и обстоятельно про форточки.

4) Г.Буч
"Объектно-Ориентированный Анализ и Проектирование"
Альма матер по ООП. Ответит на вопрос какие и когда создавать классы. С точки зрения минимизации Ваших затрат.

5) страуструпа (тут уже прозвучало)...
Ну это математически-программный фундамент.

с уважением
(круглый)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Пн Июл 17 2006 22:26    Заголовок сообщения: Ответить с цитатой

Сперва надо научиться программировать вообще, а потом форточки...
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
ZiGi



Зарегистрирован: 15.07.2006
Сообщения: 11

СообщениеДобавлено: Вт Июл 18 2006 08:30    Заголовок сообщения: Ответить с цитатой

Kefir писал(а):
Сперва надо научиться программировать вообще, а потом форточки...

Да! Стопудова Кефир прав.

Но закниги спасибо!

Kefir писал(а):

1. UNIX-подобной системы ввода/вывода (open,read,write)

Я именно так делаю.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Вт Июл 18 2006 10:01    Заголовок сообщения: Ответить с цитатой

Ну дк листинг то дай!!! Так мы те ниче не посоветуем...
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
ZiGi



Зарегистрирован: 15.07.2006
Сообщения: 11

СообщениеДобавлено: Ср Июл 19 2006 13:23    Заголовок сообщения: Ответить с цитатой

Ну завтыкал малость.... Embarassed Rolling Eyes Embarassed
Код:

void COScleanDlg::OpenF(CString PathName)
{
CFile OFile;
if (OFile.Open(PathName, CFile::modeRead))
{
   int FileLength=OFile.GetLength();
   char *Buffer=new char [FileLength+1];
   try
   {
      OFile.Read(Buffer, FileLength);
   }
   catch (CFileException *e)
   {
      e->Delete();
      delete [] Buffer;
      return;
   }
   Buffer[FileLength]=0;
   m_sFileDATA=Buffer;
}
CString FileName=OFile.GetFileTitle();
OFile.Close();

m_Progress.SetRange(0,100);
m_Progress.SetPos(0);
int n=1, step=abs(m_sFileDATA.GetLength()/100);

for(int i=0;i<m_sFileDATA.GetLength();i++)
{
   if (i>=(step*n))
   {
      m_Progress.SetPos(n);
      n++;
   }
   CString sTempD=m_sFileDATA.GetAt(i);

   if(sTempD==".")
   {
   m_sFileDATA.Delete(i);
   }
   if(!iswdigit(m_sFileDATA.GetAt(i)))
   {
   m_sFileDATA.Replace(sTempD, " ");
   }
}
}

Хотел было прикрепить весь файлик но что-то ненайду как. Тут что нельзя файли прикреплять Question
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Ср Июл 19 2006 18:08    Заголовок сообщения: Ответить с цитатой

Как все мудрено!!!
Короче:
1. Нах длину файла узнавать? И пытаться засунуть его целиком в память?
2. Делаем буфер фиксированного размера и считываем из потока ассоциированного с первым файлом нужное количество байтов. Обрабатываем и пишем в поток ассоциированный со вторым файлом. Потом еще раз... И еще... Так пока файл не кончится... ВНИМАНИЕ!!! Необходимо обрабатывать ситуацию, в которой количество считанных байтов будет меньше размера буфера.
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
ZiGi



Зарегистрирован: 15.07.2006
Сообщения: 11

СообщениеДобавлено: Ср Июл 19 2006 19:44    Заголовок сообщения: Ответить с цитатой

Kefir писал(а):

2. Делаем буфер фиксированного размера и считываем из потока ассоциированного с первым файлом нужное количество байтов. Обрабатываем и пишем в поток ассоциированный со вторым файлом.

Может мой вопрос покажется вам несколько глуповатым (как и все остальные Smile ) но что имеется в виду под словом поток? И примерчик пожалуйста (правда я совсем обнаглел Smile ).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Ср Июл 19 2006 20:30    Заголовок сообщения: Ответить с цитатой

RTFM
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
ZiGi



Зарегистрирован: 15.07.2006
Сообщения: 11

СообщениеДобавлено: Чт Июл 20 2006 08:23    Заголовок сообщения: Ответить с цитатой

Kefir писал(а):
RTFM

Какие вы все пипец умные! Проще всего сказать RTFM. А нах тогда вобще форумы? Если на либой вопрос можна так ответить... Sad
И то если бы вы сказали где его взять, а так любой встречный-поперечный ответить может!!! Я же ещо в первом посте писал, нечего сказать - молчите, я же не персонально к вам обращаюсь, может найдётся какойнибуть нормальный человек который не считает для себя оскорбительным обяснить новичку чтонибуть элементарное.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Чт Июл 20 2006 12:01    Заголовок сообщения: Ответить с цитатой

Набор в гугле: "Учебник по Си++" и скачивание оного занимает менее 2х минут. А форумы существуют для обсуждений нетривиальных вопросов, ответов на которые в документации найти невозможно.
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Andy-C



Зарегистрирован: 09.12.2003
Сообщения: 73
Откуда: Нальчик

СообщениеДобавлено: Чт Июл 20 2006 13:01    Заголовок сообщения: Ответить с цитатой

ИМХО Если пользуете С++, кошерней использовать потоки (stream).

Код:
#include <iostream> //потоки
#include <locale>//локаль. В том числе и, что есть цифра ...

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

//Пока не кончился входной поток
  while(std::cin)
  {
// Читать по буковке
    std::cin>>ch;
//Если буковка это "цыфирька"
    if(std::isdigit(ch))
//Пихать буковку в стандартный вывод.
      std::cout<<ch;
  }
  return 0;
}


Не рационально читать по одному символу, но: проще, прозрачней, и чтение , всётаки, буферезированное.

С++ это не С! Лучше взять учебник по с++, не обязательно свежий.
http://www.natahaus.ru есть и папа с++ Smile
_________________
До onlina Andrew C.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ZiGi



Зарегистрирован: 15.07.2006
Сообщения: 11

СообщениеДобавлено: Сб Июл 22 2006 09:05    Заголовок сообщения: Ответить с цитатой

Ладно, ну допустим с вводом разобрались...
А что с загрузкой процесора? Когда я запскаю програмулину она хавает ровно 50% проца и не процентом больше. Тут что какоето ограничение? Есделал біло два потока - хавает 100% и всё бы ничего но теперь из-за потоков незнаю как реализовать прогрессбар. Подскажыте.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ZiGi



Зарегистрирован: 15.07.2006
Сообщения: 11

СообщениеДобавлено: Вс Авг 20 2006 10:33    Заголовок сообщения: Ответить с цитатой

Вроди робатает моя програмина, но всёравно както криво Smile
Сделал я там второй поток. Но теперь после обработки он не хочет отдавать данные котореы отобрал Smile Я толком не могу разобратся как они передаются между потоками. Помогите мне...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ZiGi



Зарегистрирован: 15.07.2006
Сообщения: 11

СообщениеДобавлено: Ср Авг 23 2006 14:15    Заголовок сообщения: Ответить с цитатой

Вроди и с этими граблями разобрался. Правда чисто методом научного тыка. Есть ещо проблемка... Когда прога начинает обрабатывать данные и по её окну ткнуть мышю или просто убрать с него фокус прога перестаёт отвечать до завершения обработки. Что мнея делать?

З. Ы. Вам не кажется что этот топик становится похож на записки психически-больного который любит поразговаривать сам с собой? Что некто незнает ответов на мои вопросы?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...