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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Работа с файлами 
:(
    Опции темы
FOLGA
Дата 19.11.2007, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите пожалуйста с решением:

1.Файл number1.txt заполнить случайными целыми числами, принадлежащими диапазону от -100 до 100. Количество чисел в файле задается с клавиатуры. Количество чисел в каждой строке является произвольным числом из диапазона от 0 до 10 и задается с помощью функции random или rand. Вывести числа на консоль, сохранив разбиение на строки, соответствующее файлу number1.txt
Подсчитать сумму отрицательных элементов файла number1.txt. Все отрицательные элементы вывести в файл number3.txt и на консоль. В конец файла number2.txt добавить слова "Result = " и найденную сумму, вывести полученный результат на консоль.

2.С помощью текстового редактора создать файл text1.txt и заполнить словами из латинских букв (не менее 30 слов). Все отрицательные элементы вывести в файл number3.txt и на консоль. В конец файла number2.txt добавить слова "Result = " и найденную сумму, вывести полученный результат на консоль.
PM MAIL   Вверх
under_sun
Дата 19.11.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(FOLGA @  19.11.2007,  07:37 Найти цитируемый пост)
С помощью текстового редактора создать файл text1.txt и заполнить словами из латинских букв (не менее 30 слов). 

Я не понял, это просто такое упражнение для пальцев что ли  smile 
--------------------
TMTOWTDI
PM MAIL ICQ   Вверх
FOLGA
Дата 21.11.2007, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сорри, не то написала, там надо в текстовом файле слова по алфавиту расставить и на консоль вывести. smile 
PM MAIL   Вверх
Rekah
Дата 21.11.2007, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



По первой задаче: Проверку на "козяобразность" вводов юзера надо производить (допускать ввод толькочисел)? Числа чем отделены друг от друга? Если очень очень надо сделаю, но к завтра, и если время будет smile
PM MAIL   Вверх
under_sun
Дата 22.11.2007, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(FOLGA @  21.11.2007,  21:28 Найти цитируемый пост)
Сорри, не то написала, там надо в текстовом файле слова по алфавиту расставить и на консоль вывести.

Ну вот, теперь понятно.
Не знаю, знакома ли ты с STL... Может появится желание освоить smile 
Код

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

using namespace std;

int main()
{
     ifstream fin("text.txt");
     string word;
     set<string> words;         //то же самое, что set<string, less<string> >, т.е. в этом множестве
                                //будут храниться отсортированные по возрастанию строки
                                //если хочешь в обратном порядке, пиши set<string, greater<string> >
     set<string>::iterator it;  //аналогично с итератором set<string, less<string> >::iterator
    
     while(fin >> word)
          words.insert(word);

     for (it = words.begin(); it != words.end(); it++)
          cout << *it << endl;
    
     return 0;
}

--------------------
TMTOWTDI
PM MAIL ICQ   Вверх
FOLGA
Дата 22.11.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Rekah, проверку делать не надо, а числа пробелом отделять, если не трудно, попробуй сделать, плиз, это в принципе до след недели подождет...

Добавлено через 5 минут и 10 секунд
under_sun, спасиб!  smile 
PM MAIL   Вверх
GIK
Дата 22.11.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


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

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



Цитата

Rekah, проверку делать не надо, а числа пробелом отделять, если не трудно, попробуй сделать, плиз, это в принципе до след недели подождет...


Rekah - мой друг smile , я ему передам и помогу. В принципе я сделал кое что, но сразу скажу сложный алгоритм, препод тебе поверит если что?  smile 
На конвертацию числа, вото такой отрывок:

Код

  for(k=0; k<3; k++){
    for(i=0;i<10;i++) //Предполагаем что символов не менее 10 (из них что-то числа)
    {
      from.get(ch); //Считываем первый знак
      if(ch=='-')
       {
         //Нашли отрицательное число
         while(ch!=',')
         {
           from.get(ch);
            if(ch!=',')
             buf_for_ch[dl_ch]=(ch-48); 
             dl_ch++; //
         }
           dl_ch--; //в итоге получаем, индекс крайнего эллемента И степень возведения первого числа!!! 

         //a oaia?u aicaiaei ?enei a noaiaiu
           while(v_pered!=dl_ch) //eiaaen no?aieoiy e eiioo ?enea (ianneaa), ii ia aie?ai aieoe ai eiioa, o.e. iineaaiaa neei ia aicaiaeony!!! (neeaauaaaony n eoiaii!!!)
           {
              //aicaiaei ?enei a noaiaiu ia?eiay n eiioa ?enea
              ran+= buf_for_ch[v_pered] * pow(10, buf_dl_ch);
              buf_dl_ch--; //oiaiuoaai noaiaiu aicaaaiey
              v_pered++; //i?iaaeaaainy aaeuoa
            }
           //Inoaeinu i?inoi nei?eou iineaaiee yeeaiaio ianneaa
           otr_ch[k][i]=ran+buf_for_ch[v_pered];
       }
      //Ia?aeuiua aaiiua 
      dl_ch=0;
      ran=0;
      v_pered=0;
      getch();
    }

  }

Пойдет? smile
Если да, то надо понять принцыпы. Вобщем смотри, в файле находятся сомволы (не числа), ты считываешь символы и конвертишь их в число, число собирается в массив, чтобы собрать из отдельных чисел одно, я каждое число умножаю на степень длины числа  n минус 1.
Пример:
Массив nums[3]={2,5,7}; состоит из трех чисел.(предполагаемое число 257) берем первое число и умножаем на 10 в степень (3-1), получаем 200, фиксируем его в перемепнной ran+=200; Далее число 5 умножаем на 10 в степени 3-2, получаем 50, и соответственно 200+50 = 250. И последнее число, которое возводить не надо, а просто прибавить. Все число готово. Очень просто если один раз понять, советую smile

Добавлено через 1 минуту и 7 секунд
Вкуривай пока, если что помогу smile 


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
under_sun
Дата 22.11.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



GIK, зачем такие сложности с конвертацией? Можно использовать 
Код

int atoi(const char* str)

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


Добрый человек
**


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

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



Цитата

GIK, зачем такие сложности с конвертацией? Можно использовать 

Согласен, но так ведь круче smile Хотя для начинающих лучше использовать atoi  smile 


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
FOLGA
Дата 23.11.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



GIK, Даааа, мощно, очень мощно, я бы никогда не додумалась до такого, хотя у нас что то в этом роде было в прошлом году, а вот atoi у меня почему то не работает... 

PM MAIL   Вверх
GIK
Дата 23.11.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


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

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



Цитата

 а вот atoi у меня почему то не работает... 

Эх жаль компилера нет под рукой  smile 
А задачу может даже сегодня скину тебе, щас я на работе, тут бесплатным програмированием не разрешают заниматся   smile

Добавлено через 2 минуты и 9 секунд
Ну принцип то тебе понятен? это самое главное, и поможет тебе в будующем smile 


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
FOLGA
Дата 24.11.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



GIK,с алгоритмом я разобралась, только мне никто не поверит, что я сама такое сделала... хотя попробовать конечно можно... может и прокатит...  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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