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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ОТрывок программы 
:(
    Опции темы
nefestim
Дата 2.4.2008, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



<-------------------- Пометил вопросы.


Код

#include "stdafx.h"
#include <fstream>

#include <vector>
#include <string>
#include <algorithm>

using namespace std;

bool Mycompare ( string elem1, string elem2 )
{
    return elem1 > elem2;
}


int _tmain(int argc, _TCHAR* argv[])
{
/*
  ifstream c("input.txt");
  ofstream d("output2.txt");
  char e[255];
  char **aa, **bb; <------------------------------ что обозначают **
  int j, m;

// Первоначальное отведение памяти
  m=10;
  aa = new char*[m];

  int i=0;
  if (c.is_open()<------------------------------ что выполняет) {
    for (; !c.eof();) {
      c.getline(e, 254); <------------------------------ что выполняет
      aa[i]=new char[strlen(e)+1];
      strcpy(aa[i], e);
      i++;
      if (i>=m) {
// Отведение дополнительной памяти
        bb = new char*[m+10];
        for (j=0; j<m; j++) bb[j]=aa[j];
        m+=10;
        delete [] aa;
        aa = new char*[m];
        for (j=0; j<m-10; j++) aa[j]=bb[j];
        delete [] bb;  <---------------------------------- обязательно ли тут скобки [], почему?
      }
    }

// сортировка
    int n;
    char *w;
    for (int k=0; k<i-1; k++) {
      n=k;
      for (int l=k+1; l<i; l++) if (strcmp(aa[n], aa[l])<0) n=l;
      if (n>k) {
        w=aa[k];
        aa[k]=aa[n];
        aa[n]=w;
      }
    }
// вывод
    for (j=0; j<i; j++) d<<aa[j]<<endl;

// освобождение памяти
    for (j=0; j<i; j++) delete [] aa[j];
    delete [] aa;
  }
  c.close();
  d.close();
*/


// stl 

  ifstream c("input.txt");
  ofstream d("output1.txt");
  vector<string> aa;
  char ee[255];

//input
  if (c.is_open()) {
    while(!c.eof()) {
      c.getline(ee, 254);
      aa.push_back(ee); <------------------------------ что тут происходит?
    }
//    sort
    sort(aa.begin(), aa.end(), Mycompare);

//output
//    for (unsigned int j=0; j<aa.size(); j++) dd<<aa[j].c_str()<<endl;
    for (vector<string>::iterator j=aa.begin(); j!=aa.end(); j++) d<<(*j).c_str()<<endl;
  }
  c.close();
  d.close();

    return 0;
}




Это сообщение отредактировал(а) nefestim - 2.4.2008, 21:19
PM MAIL   Вверх
bsa
Дата 2.4.2008, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Ну отрывок, судя по всему, создавался по Microsoft Visual Studio. Дальше что?
PM   Вверх
nefestim
Дата 2.4.2008, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Извиняюсь чуть раньше выбросил текст
PM MAIL   Вверх
anatox91
Дата 2.4.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

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



например вот это
Код

delete [] bb;

надо именно так, потому что удаляется массив

Код

char **aa, **bb;

это указатели на указатели

Код

aa.push_back(ee);

массив ee помещается в конец вектора aa

Код

c.getline(e, 254);

получаем строку из файлового потока с и помещаем в символьный массив е

Код

c.is_open()

а тут наверно даже не надо знать программирование а просто англ.язык  smile 
наверно эта функция проверяет открыт ли файл  smile 

Это сообщение отредактировал(а) anatox91 - 2.4.2008, 21:57


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
JackYF
Дата 3.4.2008, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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




M
JackYF
Потёр флуд и оффтопик.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
opjox
Дата 3.4.2008, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Дополню:

Цитата(anatox91 @  2.4.2008,  21:48 Найти цитируемый пост)
надо именно так, потому что удаляется массив

Если вы использовали при выделении памяти [], то нужно использовать [] и при освобождении. 

Цитата(anatox91 @  2.4.2008,  21:48 Найти цитируемый пост)
это указатели на указатели

Вернее указатель на указатель типа char

Цитата(anatox91 @  2.4.2008,  21:48 Найти цитируемый пост)
получаем строку из файлового потока с и помещаем в символьный массив е

При этом считывая в e не более 254 символов.

PM MAIL ICQ   Вверх
inside_pointer
Дата 4.4.2008, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: 12



Код

char * a;    <=>    char a[];  
char ** a;    <=>    char * a[];  


Короче массив строк
PM MAIL   Вверх
opjox
Дата 4.4.2008, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот только если используются [], то размер должен быть указан явно или должна быть возможность его вычислить на этапе сборки. 
Код

char * p;
char s[]; // ошибка
char s1[] = "++"; // нормально
char s2[3]; // нормально



Это сообщение отредактировал(а) opjox - 4.4.2008, 20:25
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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