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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Изменить лабу! Есть готовый вариант нужно переделать на 
:(
    Опции темы
nefestim
Дата 3.2.2008, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Задание: Разработать консольные программы для потоковой загрузки в оперативную память содержимого текстового файла, выполнения манипуляций над ним и потокового вывода полученных данных в другой файл.
Строки в новом файле должны быть в обратном порядке, причем выводить только  те строки, которые не начинаются с цифры.

1.    Код программы

lab#1_1.cpp

Код

#include <fstream>
#include <iostream>
#include <string>

using namespace std;

int count_strings ();        //число строк в файле

int main (void){
  int i;
  char **str_arr, str[255];
  
  //чтение
  str_arr = new char *[count_strings()];

  ifstream in_file("input.txt");
  if (!in_file){ cout << "Failed to open 'input.txt'"; return -1;}
  
  for (i = 0; !in_file.eof(); i++){
    in_file.getline(str, 254);
    str_arr[i] = new char[strlen(str) + 1];
    strcpy(str_arr[i], str);
  }
  in_file.close();
  
  
  //запись
  ofstream out_file("output.txt");
  if (!out_file){ cout << "Failed to open 'output.txt'"; return -1;}
  
  for (int j = i - 1; j >= 0; j--) if (str_arr[j][0] < 48 || str_arr[j][0] > 57) out_file << str_arr[j] << endl;
  
  out_file.close();
  
  //очистка
  for (int j = 0; j < i; j++) delete [] str_arr[j];
  delete [] str_arr;

  return 0;
}

//число строк в файле
int count_strings (){
  int i;
  char ch;
  
  ifstream in_file("input.txt");
  if (!in_file){ cout << "Failed to open 'input.txt'"; return -1;}
  
  in_file.get(ch);
  for (i = 0; !in_file.eof();){
    if (ch == '\n') i++;
    in_file.get(ch);
  }
  
  in_file.close();
  return i + 1;
}

lab#1_2.cpp

Код

#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main (void){
  vector<string> str_arr;
  char str[255];
  
  ifstream in_file("input.txt");
  if (!in_file){ cout << "Failed to open 'input.txt'"; return -1;}
  
  //чтение
  while (!in_file.eof()){
    in_file.getline(str, 254);
    str_arr.push_back (str);
  }
  
  in_file.close();
  
  //запись
  ofstream out_file("output.txt");
  if (!out_file){ cout << "Failed to open 'output.txt'"; return -1;}
  
  for (vector<string>::iterator it = str_arr.end() - 1; it > str_arr.begin(); it--) 
    if ((*it).at(0) < 48 || (*it).at(0) > 57) out_file << (*it).c_str() << endl;
    
  out_file.close();
  return 0;
}


Нужно переделать чтоб программа выполняла:
Разработать консольные программы для потоковой загрузки в оперативную память 
содержимого текстового файла, выполнения манипуляций над ним и потокового вывода 
полученных данных в другой файл. 
Первая программа должна использовать классы из стандартной библиотеки (iostream или
fstream) и для хранения в оперативной памяти использовать динамический массивы,
так чтобы отведенная память была пропорциональна размеру исходного файла.
Вторая программа должна дополнительно использовать класс vector из стандартной 
библиотеки для хранения данных в оперативной памяти и выполнения манипуляций 
над ними.
Третья программа должна использовать классы платформы .NET.

Задание: Отбросить все символы в строках с номером символа менее 10 и затем 
    отсортировать строки в алфавитном порядке.

Вот ещё примеры где есть 3. 

Код

//Инвертировать все строки и затем отсортировать строки в алфавитном порядке.
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;
#define STR_SZ 255
//------------------------------------------------------------------------------------
void main(void)
{
    int c=0;
    ifstream iFile("input.txt");
    ofstream oFile("output.txt");
    char ** str=new char*[STR_SZ],*temp;
    for(int i=0;i<STR_SZ;i++) str[i]=new char[STR_SZ];

    if(iFile.is_open())//если файл удалось открыть
    {
        while(iFile.getline(str[c++],STR_SZ));//чтение из файла    
        for(int i=0;i<c;i++) strrev(str[i]);//инвертирование строк
        for(int k=0;k<c;k++)
        {
            for(int i=1;i<c-k;i++)
            {
                if(strcmp(str[i],str[i-1])<0)//сортировка строк
                {
                    temp=str[i];
                    str[i]=str[i-1];
                    str[i-1]=temp;
                }
            }//i
        }//k        
        for(int i=0;i<c;i++)
            oFile<<str[i]<<endl;//запись в файл
    }
    else oFile<<"Source file not found";//если файл открыть не удалось
    iFile.close();
    oFile.close();
    delete[] str;
}


2
Код

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

#define STR_SZ 255

using namespace std;

//------------------------------------------------------------------------------------
void main(void)
{
    ifstream iFile("input.txt");
    ofstream oFile("output.txt");
    vector<string> str;
    char * ctemp=new char[STR_SZ];
    string stemp;
    if(iFile.is_open())//если файл удалось открыть
    {
        while(iFile.getline(ctemp,STR_SZ)) str.push_back(ctemp);//чтение из файла    
        for(int i=0;i<str.size();i++)//инвертирование строк
        {
            strcpy(ctemp,str[i].c_str());
            strrev(ctemp);
            str[i]=string(ctemp);
        }
        for(int k=0;k<str.size();k++)
        {
            for(int i=1;i<str.size()-k;i++)
            {
                if(str[i].compare(str[i-1])<0)//сортировка строк
                {
                    stemp=str[i];
                    str[i]=str[i-1];
                    str[i-1]=stemp;
                }
            }//i
        }//k        
        for(int i=0;i<str.size();i++)
            oFile<<str[i]<<endl;//запись в файл
    }
    else oFile<<"Source file not found";//если файл открыть не удалось
    iFile.close();
    oFile.close();
    delete[] ctemp;
}

3
Код


#include "stdafx.h"

using namespace System;
using namespace System::IO;

#define STR_SZ 255

void main(void)
{
    array<String^> ^ str=gcnew array<String^>(STR_SZ);
    array<wchar_t> ^ ctemp;
    String ^ temp;
    String ^ in_path="input.txt";
    String ^ out_path="output.txt";
    int c;
    StreamReader ^ iFile;
    StreamWriter ^ oFile=gcnew StreamWriter(out_path);
    if(File::Exists(in_path))
    {
        iFile=gcnew StreamReader(in_path);
        for(c=0;iFile->Peek()>=0;c++) 
            str[c]=iFile->ReadLine();//чтение из файла

        for(int i=0;i<c;i++)//инвертирование строк
        {
            ctemp=str[i]->ToCharArray();
            ctemp->Reverse(ctemp);
            str[i]=gcnew String(ctemp);
        }

        for(int k=0;k<c;k++)
        {
            for(int i=1;i<c-k;i++)
            {
                if(String::Compare(str[i],str[i-1])<0)//сортировка строк
                {
                    temp=str[i];
                    str[i]=str[i-1];
                    str[i-1]=temp;
                }
            }//i
        }//k        
        for(int k=0;k<c;k++)
            oFile->WriteLine(str[k]);//запись в файл
        iFile->Close();
    }
    else oFile->WriteLine("Source file not found");
    
    oFile->Close();
}


И ещё: Что означает "->"?

Это сообщение отредактировал(а) Rodman - 4.2.2008, 10:27
PM MAIL   Вверх
Rodman
Дата 4.2.2008, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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




M
Rodman
Модератор: Название темы должно отражать ее суть!

PM MAIL WWW Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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