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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Visual C++]Работа с файлами, Удалить строку из файла 
:(
    Опции темы
Student2006
Дата 27.4.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите пожалуйста удалить из файла строку с наименьшим процентом гласных букв
В файле например: Moskva Omsk Rostov записаны построчно
Код

#include "stdafx.h"
#include <iostream.h>
#include <string.h>
#include <fstream.h>
#include <stdio.h>
#include <stdlib.h>

const int MAX=6;
const int N=100;

char ch[20];

double Procent()
{
    int lengh;
    lengh=strlen(ch);
//    cout<<"Dlina slova:"<<lengh<<endl;
    
    static const char vowel [MAX] = {'a','e','i','o','u','y'};
    int count = 0;
    for (int i = 0; i < lengh; i++)  
    {
        for (int j = 0; j < MAX ; j++)
            if(ch[i] == vowel[j]) 
                count++;        
    }
//    cout<<"Kol-vo glasnih:"<<count<<endl;
    double percent;
    percent = (count * 100.)/ lengh;
    cout<<"Procent:"<<percent<<endl;
    return percent;
}

void main()
{    
    ifstream f_in;
    f_in.open("File.txt");
    if(!f_in)
    {
        cout<<"ERROR"<<endl;
        exit(1);
    }
    while (f_in.getline(ch,20))    
    {
        cout<<ch<<endl;
        Procent();
    }
    f_in.close();
}


Это сообщение отредактировал(а) Alexeis - 27.4.2007, 20:49
PM MAIL   Вверх
Student2006
Дата 27.4.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Извините что без подсветки: я вроде тэг набирал
PM MAIL   Вверх
Alexeis
Дата 27.4.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(Student2006 @  27.4.2007,  17:14 Найти цитируемый пост)
Извините что без подсветки: я вроде тэг набирал 

нужно еще выбирать тип подсветки из выпадающего списка см. http://forum.vingrad.ru/index.php?showtopic=126445 . Если что там даже маленький ролик есть демонстрирующий все операции.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Xenon
Дата 27.4.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

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

const int MAX = 6;

using std::fstream;
using std::string;
using std::cout;
using std::cin;
using std::ios;
using std::endl;
using std::vector;

double procent(const string& ch)
{
    int lenght = ch.size();
//  cout<<"Dlina slova:"<<lengh<<endl;  
    static const char vowel [MAX] = {'a','e','i','o','u','y'};
    int count = 0;
    for (int i = 0; i < lenght; i++)  
    {
        for (int j = 0; j < MAX ; j++)
            if(ch[i] == vowel[j]) 
                count++;        
    }
//  cout<<"Kol-vo glasnih:"<<count<<endl;
    double percent = (count * 100)/ lenght;
    cout << "Procent:" << percent << endl;
    return percent;
}

int main()
{    
    vector<string> str_arr;
    fstream file("d:\\file.txt", ios::in);
    if(!file.is_open())
    {
        cout << "ERROR" << endl;
        return -1;
    }
    int line = 0;
    double max_buf = 0;
    int count = 0;
    string ch;
    while (1)    
    {
        getline(file, ch, '\n');
        cout << ch << endl;
        if (file.eof()) break;
        if (ch.size() != 0) 
        {
            str_arr.push_back(ch);        
            double buf_proc = procent(ch);
            if (buf_proc > max_buf)
            {
                max_buf = buf_proc;
                line = count;
            }
            ++count;
        }
    }
    file.clear();
    file.close();
    file.open("d:\\file.txt", ios::trunc | ios::out);
    file.seekp(0, ios::beg);
    for (int i = 0; i < str_arr.size(); ++i)
        if (i != line) file << str_arr[i] << '\n';
    file.close();
    cin.get();
    return 0;
}


PS. Что за Visual C++ ?

Это сообщение отредактировал(а) Xenon - 27.4.2007, 17:35


--------------------
user posted image  
PM MAIL   Вверх
Student2006
Дата 27.4.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, конечно, но в Visual Studio это не работает
PM MAIL   Вверх
zkv
Дата 27.4.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Цитата(Student2006 @  27.4.2007,  17:59 Найти цитируемый пост)
Спасибо, конечно, но в Visual Studio это не работает 

ну человееек...
ведь спросили не просто так:
Цитата(Xenon @  27.4.2007,  17:33 Найти цитируемый пост)
PS. Что за Visual C++ ?


В чем нерабочесть выражается?
PM MAIL   Вверх
Student2006
Дата 27.4.2007, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема в getline(file, ch, '\n'); 

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


Эксперт
***


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

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



Код

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

const int MAX = 6;

using std::fstream;
using std::string;
using std::cout;
using std::cin;
using std::ios;
using std::endl;
using std::vector;
using std::getline;

double procent(const string& ch)
{
    int lenght = ch.size();
//  cout<<"Dlina slova:"<<lengh<<endl;  
    static const char vowel [MAX] = {'a','e','i','o','u','y'};
    int count = 0;
    for (int i = 0; i < lenght; i++)  
    {
        for (int j = 0; j < MAX ; j++)
            if(ch[i] == vowel[j]) 
                count++;        
    }
//  cout<<"Kol-vo glasnih:"<<count<<endl;
    double percent = (count * 100)/ lenght;
    cout << "Procent:" << percent << endl;
    return percent;
}

int main()
{    
    vector<string> str_arr;
    fstream file("d:\\file.txt", ios::in);
    if(!file.is_open())
    {
        cout << "ERROR" << endl;
        return -1;
    }
    int line = 0;
    double max_buf = 0;
    int count = 0;
    string ch;
    while (1)    
    {
        getline(file, ch, '\n');
        cout << ch << endl;
        if (file.eof()) break;
        if (ch.size() != 0) 
        {
            str_arr.push_back(ch);        
            double buf_proc = procent(ch);
            if (buf_proc > max_buf)
            {
                max_buf = buf_proc;
                line = count;
            }
            ++count;
        }
    }
    file.clear();
    file.close();
    file.open("d:\\file.txt", ios::trunc | ios::out);
    file.seekp(0, ios::beg);
    for (int i = 0; i < str_arr.size(); ++i)
        if (i != line) file << str_arr[i] << '\n';
    file.close();
    cin.get();
    return 0;

}



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

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


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

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

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

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


 




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


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

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