Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> <string.h> пробелы 
:(
    Опции темы
mes
Дата 23.3.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Garcian @  23.3.2009,  22:27 Найти цитируемый пост)
ххх подразобрался с чтением, спс mes, правда, каждый символ идет на отдельной строчке   smile 

ну показывайте, как разобрались и как это на каждой строчке smile



--------------------
PM MAIL WWW   Вверх
Anikmar
Дата 23.3.2009, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Прикольная задача, мне понравилась.
Фантазии нашим преподам не занимать.  smile 
PM MAIL ICQ   Вверх
Garcian
Дата 24.3.2009, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 5.11.2008

Репутация: нет
Всего: нет



Код

#define MAX_RAZMER 250


mes,  
Код

for (i = 0;!fin.eof() && i < MAX_RAZMER; i++) { fin >> *(t+i); std::cout << *(t+i) << std::endl;}

Вот  smile 

Это сообщение отредактировал(а) Garcian - 24.3.2009, 20:57
--------------------
Неродивый студент
PM MAIL   Вверх
mes
Дата 24.3.2009, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Garcian @  24.3.2009,  19:55 Найти цитируемый пост)
 << std::endl

это перевод на следующую строку, поэтому и вывод соответсвующий.

можно выводить побуквенно, как сделали Вы 
Код

for (i = 0;!fin.eof() && i < MAX_RAZMER; i++) { fin >> *(t+i); std::cout << *(t+i);}

а можно вначале считать , а потом вывести.
Код

for (i = 0;!fin.eof() && i < MAX_RAZMER; i++)  fin >> *(t+i);
std::cout << D << std::endl;

и если переменная относится только к циклу, как переменная i (судя по имени)
то инициализировать ее лучше внутри цикла
Код

for (int i=0; 

иначе можно снаружи, но тогда желательно дать смысловое имя, чтоб не случилось конфликтов между циклами.

Код

int readed;
for (readed=0;

или
Код

int readed=0;
for (; 

* любая из 3х секций for может быть пустой или даже все например for(;;)

Это сообщение отредактировал(а) mes - 24.3.2009, 21:11


--------------------
PM MAIL WWW   Вверх
Garcian
Дата 24.3.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 5.11.2008

Репутация: нет
Всего: нет



Anikmar, все работает, спасибо.

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

Вот переделанный код Anikmarа
Код

#include <string.h>
#include <iostream.h>
#include <fstream.h>

#define RAZMER 100

fstream fin, fout;

int main ()
{
    fin.open ("C:\\Documents and Settings\\Garcian\\Ìîè äîêóìåíòû\\L2_in.txt", ios::in);
    fin.unsetf (ios::skipws); 
    
    int Len,Cur;
    char Str1[RAZMER] = { 0 };
    
    for (int i = 0;!fin.eof() && i < RAZMER; i++) { fin >> Str1[i];}
    
    char Str2[RAZMER] = { 0 };
    char *Pos,*MaxPos;

    Len =  strlen(Str1);
    Cur = 1;
    MaxPos = NULL;

    fout.open ("C:\\Documents and Settings\\Garcian\\Ìîè äîêóìåíòû\\L2_out.txt", ios::out);
    while (Cur <=Len)
    {
        strncpy(Str2,Str1,Cur);
        strnset(Str2,' ',Cur);
        Pos = strstr(Str1,Str2);
        if (Pos == NULL) break;
        MaxPos = Pos;
        Cur++;
    }

    if (MaxPos == NULL) fout << "Net probel'nih simvolov\n";
    else fout << MaxPos - Str1;
}


не читает  smile 
--------------------
Неродивый студент
PM MAIL   Вверх
mes
Дата 24.3.2009, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Garcian @  24.3.2009,  21:42 Найти цитируемый пост)
  fin.open ("C:\\Documents and Settings\\Garcian\\Ìîè äîêóìåíòû\\L2_in.txt", ios::in);

Вас ничего не смущает в имени файла ?! не используйте кирилицу..
 к тому  же путь проще и логичнее использовать относительный


--------------------
PM MAIL WWW   Вверх
Garcian
Дата 24.3.2009, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 5.11.2008

Репутация: нет
Всего: нет



ну так именуется путь к папке администратора (т.е. меня), если использовать для хранения другие папки, то ничего не работает
--------------------
Неродивый студент
PM MAIL   Вверх
mes
Дата 24.3.2009, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Garcian @  24.3.2009,  22:09 Найти цитируемый пост)
если использовать для хранения другие папки, то ничего не работает 

а если использовать эту , то рабоатает ?!
Почти каждое Ваше высказывание как загадка.. постарайтесь формулировать точнее мысль, чтоб не тратить время форумчан на додумывание недосказанного.




--------------------
PM MAIL WWW   Вверх
Garcian
Дата 25.3.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 5.11.2008

Репутация: нет
Всего: нет



mes, лично у вас программа работает? (Я не говорю про путь файла)
--------------------
Неродивый студент
PM MAIL   Вверх
mes
Дата 25.3.2009, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Garcian @  24.3.2009,  23:18 Найти цитируемый пост)
mes, лично у вас программа работает? (Я не говорю про путь файла) 

а у меня сейчас под рукой нет компилятора ) 



--------------------
PM MAIL WWW   Вверх
Garcian
Дата 25.3.2009, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 5.11.2008

Репутация: нет
Всего: нет



В общем я сойду с ума с этими ПО... Перенес программу на ноутбук - все работает!  smile

Добавлено через 4 минуты и 36 секунд
вот так всегда, ломаю голову, что не так, а тут такие пироги. 
Спасибо 
mes, 
Anikmar, за вашу помощь и нелегкий труд! smile 
--------------------
Неродивый студент
PM MAIL   Вверх
mes
Дата 25.3.2009, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Garcian @  24.3.2009,  21:42 Найти цитируемый пост)
    while (Cur <=Len)
    {
        strncpy(Str2,Str1,Cur);
        strnset(Str2,' ',Cur);
        Pos = strstr(Str1,Str2);
        if (Pos == NULL) break;
        MaxPos = Pos;
        Cur++;
    }

что то мне этот код внушает сильные опасения ;)
пересмотрите еще раз что тут написано.


--------------------
PM MAIL WWW   Вверх
Anikmar
Дата 25.3.2009, 03:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата(mes @  25.3.2009,  01:00 Найти цитируемый пост)
что то мне этот код внушает сильные опасения ;)
пересмотрите еще раз что тут написано. 


Это мой код. Задача не использовать указатели. Нужно: создать строку из пробелов заданной длины.

Сначала делаю строку заданной длины
strncpy(Str2,Str1,Cur);

Затем устанавливаю ее в пробелы
strnset(Str2,' ',Cur);

На самомо деле не бьюсь за оптимальность, потому, что ограничения препода иногда ставят в тупик. На вскидку придумал так. Работает. Можно сделать лучше, наверное, но мне показалось так лаконичнее.
PM MAIL ICQ   Вверх
mes
Дата 25.3.2009, 04:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Anikmar @  25.3.2009,  02:00 Найти цитируемый пост)
Это мой код. Задача не использовать указатели. На самомо деле не бьюсь за оптимальность,

ну так указатели все равно то используются ?!

ограничения препода я честно говоря  до конца так и не понял, но решусь предложить свой вариант
Код

int main ()
{
  char *str = "              aaa     bbb  ccc   ddd    eee      uuu        ";

  int spnmax =0; // макс длина промежутка пробелов
  int spnpos =0; // и его позиция

  for (const char *p =str; p;)  в цикле
  {
        p=strchr(p, ' ');        // ищем первый пробел
        if (p)                        // если нашли
        {
          int pos = p-str;      //запоминаем позицию
          int spnlen=0;     
          for (const char *p1=p++; p1 && p-p1==1  ; p1=strchr(p++, ' '))  ++spnlen; // и считаем пробелы

          if (spnmax<spnlen) // если последовательность длинее чем максимальная
          {
               spnmax=spnlen; // то сохраняем длину 
               spnpos=pos;      // и позицию для максимольной последов-ти
          }
       }
  }

  if (!spnmax)  std::cout <<  "no spaces" <<std::endl; 
  else std::cout <<spnmax<<" spaces in pos " << spnpos<<std::endl;

  system("pause");
  return(0);
}




Это сообщение отредактировал(а) mes - 25.3.2009, 04:17


--------------------
PM MAIL WWW   Вверх
Anikmar
Дата 25.3.2009, 04:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата(mes @  25.3.2009,  04:13 Найти цитируемый пост)
ну так указатели все равно то используются ?!

В том-то и дело, что нет. Только начало строки.
PM MAIL ICQ   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0582 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.