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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++]Зеркальное отображение. Помогите пожалуйста! 
:(
    Опции темы
Sandr12
  Дата 23.3.2010, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Задача:
Создать файл и внести в него последовательность символов.Вывести из этого файла в результирующий файл символы в обратной последовательности(зеркольное отображение).

 smile
желательно с комментариями,чтоб хоть немного разобраться... smile 

MVC++
 

Это сообщение отредактировал(а) Sandr12 - 23.3.2010, 22:56
PM MAIL   Вверх
ИванМ
Дата 23.3.2010, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

#include <fstream>
#include <string>
#include <algorithm>

int main()
{
    using namespace std;

    //строка символов
    string outs="123456789";

    //открываем первый файл для записи
    ofstream f1out("c:\\1.txt");    
    //записываем символы
    f1out<<outs;
    //закрываем файл
    f1out.close();
    
    //открываем первый файл для чтения
    ifstream f1in("c:\\1.txt");
    string ins;
    //читаем символы
    f1in>>ins;
    //закрываем файл
    f1in.close();

    //обращаем строку символов
    reverse(ins.begin(), ins.end());

    //открываем второй файл для записи
    ofstream f2out("c:\\2.txt");    
    //записываем обращенную строку
    f2out<<ins;
    //закрываем файл
    f2out.close();
}

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


Новичок



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

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



ошибка:
c:\microsoft visual studio\myprojects\lb\lb.cpp(35) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Error executing cl.exe.
 smile 
PM MAIL   Вверх
Sandr12
Дата 24.3.2010, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ИванМ, а можно без STL?

желательно с fprintf, fscanf...
PM MAIL   Вверх
ИванМ
Дата 24.3.2010, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Sandr12 @  24.3.2010,  00:50 Найти цитируемый пост)
ошибка:
c:\microsoft visual studio\myprojects\lb\lb.cpp(35) : fatal error C1010: unexpected end of file while looking for precompiled header directive

если используешь прекомпиленные хэдеры, надо все инклуды поместить в stdafx.h

Цитата(Sandr12 @  24.3.2010,  01:06 Найти цитируемый пост)
ИванМ, а можно без STL?
желательно с fprintf, fscanf... 

тогда не ко мне
PM MAIL   Вверх
Sandr12
Дата 24.3.2010, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а к кому?))
аууу!!!
кто подскажет?)
PM MAIL   Вверх
t_gran
Дата 25.3.2010, 04:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

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



Sandr12, вот уже несколько лет вожусь со студентами и никак не могу понять, неужели вам самим не интересно? А если не интересно, то зачем выбирать специальности связанные с этим? 10 советов от Эйнштейна - прочтите первые два пункта. А сама программа, вот, пожалуйста на C:
Код

#include <stdio.h>

#define FILE_INPUT   "file.txt"
#define FILE_OUTPUT  "file_out.txt"

//----------------------------------------------//
// Функция определяет длину файла
long FileLength (FILE *theFile)
{
   fseek(theFile, 0, SEEK_END);  // Устанавливаем курсор в конец файла
   long len= ftell(theFile);     // Возвращаем позицию, она и является размерностью в байтах
   fseek(theFile, 0, SEEK_SET);  // Возвращаем курсор в начало файла
   return len;
}
//----------------------------------------------//
// Функция делает реверс строки: Вася -> ясаВ
int TextReverse (char *theText, int len)
{
   int i;
   for (i= 0; i < len/2; ++i)
   {
      char buff= theText[i];
      theText[i]= theText[len-i-1];
      theText[len-i-1]= buff;
   }
   return 0;
}
//----------------------------------------------//
int main (int argc, char **argv)
{
   FILE *f= fopen(FILE_INPUT, "r");
   if (!f)  // Убеждаемся в наличие файла
   {
      printf("Error: file '%s' not found ...", FILE_INPUT);
      return 1;
   }
   long len= FileLength(f);
   if (!len)   // Проверяем на наличие данных в файле
   {
      printf("Error: file is empty ...");
      return 2;
   }
   // Выделяем память под строку (+1 для завершающего символа '\0')
   char *text= (char *) malloc(sizeof(char) * len + 1);

   // Считываем строку из файла
   fgets(text, len+1, f);

   fclose(f);

   TextReverse(text, len);

   f= fopen(FILE_OUTPUT, "w");
   fputs(text, f);
   fclose(f);

   free(text);

   return 0;
}



Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  file_reverse.zip 1,83 Kb


--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
Dov
Дата 26.3.2010, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Я не знаю, что здесь комментировать... сам разбирайся   smile 
Код
void printBack(FILE * in, FILE * out, char ch)
{    
    if(ch != '\n')
    {
        fputc(ch, in);
        printBack(in, out, getchar());
        fputc(ch, out);
    }
}

int main()
{
    FILE * infile  = fopen("input.txt" , "w");
    FILE * outfile = fopen("output.txt", "w");

    puts("Enter a string: ");
    printBack(infile, outfile, getchar());

    fclose(infile);
    fclose(outfile);
    return 0;
}


Это сообщение отредактировал(а) Dov - 26.3.2010, 03:40


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Sandr12
Дата 30.3.2010, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



t_gran,

Добавлено через 3 минуты и 39 секунд
t_gran, спасибо,прочитал все пункты.
времени мало на программирование остаётся =(
8 предметов в университете...

Добавлено через 3 минуты и 56 секунд
ребят,не пойму какие библиотеки подключать...
PM MAIL   Вверх
likehood
Дата 30.3.2010, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


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

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



Цитата(Sandr12 @  30.3.2010,  01:33 Найти цитируемый пост)
ребят,не пойму какие библиотеки подключать... 

Если речь идет о программе t_gran'а, то в ней есть все что нужно.
Если у тебя проблемы с precompiled headers, можешь их просто отключить (проект -> свойства -> С/С++ -> precompiled headers -> первая строчка - ставишь "не использовать")

P.S.
Dov, в твоей программе есть небольшое несоответствие заданию. Ты сразу создаешь оба файла, а нужно создать первый файл и на основе него создать перевернутый файл. Программа не сильно изменится, но все же. Кстати, за рекурсию - респект!  smile 
PM MAIL   Вверх
Dov
Дата 30.3.2010, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(likehood @  30.3.2010,  10:42 Найти цитируемый пост)
Dov, в твоей программе есть небольшое несоответствие заданию. Ты сразу создаешь оба файла, а нужно создать первый файл и на основе него создать перевернутый файл.

Ну, если только проблемма в этом, то можно внести небольшие изменения...
Код
void printBack(FILE * in, FILE * out)
{
    char ch;

    if((ch = fgetc(in)) != EOF)
    {        
        printBack(in, out);
        fputc(ch, out);    
    }
}

int main()
{
    FILE * infile  = fopen("input.txt" , "w");
    FILE * outfile = fopen("output.txt", "w");
    char   ch;
    
    puts("Enter a string: ");    
    while((ch = getchar()) != '\n')
        fputc(ch, infile);
    fclose(infile);

    infile  = fopen("input.txt", "r");
    printBack(infile, outfile);
    
    fclose(infile);
    fclose(outfile);
    return 0;
}
 

Так лучше?  smile 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
likehood
Дата 30.3.2010, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


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

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



Цитата(Dov @  30.3.2010,  12:20 Найти цитируемый пост)
Так лучше?  smile  

Во, другое дело!
Главное теперь, чтобы Сандр12 разобрался.

Это сообщение отредактировал(а) likehood - 30.3.2010, 13:38
PM MAIL   Вверх
Sandr12
Дата 31.3.2010, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



угу...поймёт... smile

вот две ошибки:
c:\microsoft visual studio\myprojects\new2\new2.cpp(44) : error C2065: 'malloc' : undeclared identifier
c:\microsoft visual studio\myprojects\new2\new2.cpp(52) : error C2065: 'free' : undeclared identifier
PM MAIL   Вверх
t_gran
Дата 31.3.2010, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

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



Sandr12, заголовочник malloc.h не пробовали подключать?

Блин, нашёл в своём примере два бага:
1. fgets - считывает до конца строки (неприятно, если нужно работать с множеством строк).
2. Писал без учёта различных методов разрыва строки (Windows, Linux).

В общем fgets заменена на fread, а поиск конца документа описан в строке 20.

Код

#include <stdio.h>

#define FILE_INPUT  "file.txt"
#define FILE_OUTPUT "file_out.txt"

//----------------------------------------------//
// Функция определяет длину файла
long FileLength (FILE *theFile)
{
   fseek(theFile, 0, SEEK_END);  // Устанавливаем курсор в конец файла
   long len= ftell(theFile);     // Возвращаем позицию, она и является размерностью в байтах
   fseek(theFile, 0, SEEK_SET);  // Возвращаем курсор в начало файла
   return len;
}
//----------------------------------------------//
// Функция делает реверс строки: Вася -> ясаВ
int TextReverse (char *theText, int len)
{
   int i;
   while (!theText[--len]);
   for (i= 0; i < len/2; ++i)
   {
      char buff= theText[i];
      theText[i]= theText[len-i];
      theText[len-i]= buff;
   }
   return 0;
}
//----------------------------------------------//
int main (int argc, char **argv)
{
   FILE *f= fopen(FILE_INPUT, "r");
   if (!f)  // Убеждаемся в наличие файла
   {
      printf("Error: file '%s' not found ...", FILE_INPUT);
      return 1;
   }
   long len= FileLength(f);
   if (!len)   // Проверяем на наличие данных в файле
   {
      printf("Error: file is empty ...");
      return 2;
   }

   // Выделяем память под строку (+1 для завершающего символа '\0')
   char *text= (char *) malloc(sizeof(char) * len + 1);

   // Считываем строку из файла
   fread(text, len, 1, f);

   fclose(f);

   TextReverse(text, len);

   f= fopen(FILE_OUTPUT, "w");
   fputs(text, f);
   fclose(f);

   free(text);

   return 0;
}

Бинарник с исходником ниже.


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

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  reverse.zip 2,57 Kb


--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
Sandr12
Дата 31.3.2010, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ррррррррр  smile 
Н Е  П О Л У Ч А Е Т С Я !!!!!!!!!

это ещё что???:
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
The thread 0x2850 has exited with code 1 (0x1).
The program 'C:\Microsoft Visual Studio\MyProjects\new2\Debug\new2.exe' has exited with code 1 (0x1).

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

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


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

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

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

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


 




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


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

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