Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2011, 20:43   #1
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос вычисляющую сумму целых чисел, хранящихся в тексто¬вом файле

Напишите программу, вычисляющую сумму целых чисел, хранящихся в тексто¬вом файле и разделенных пробелами и словами. Например, после ввода строки "bears: 17 elephants 9 end" результат должен быть равен 26.

как это можно сделать ?
Файл я знаю как считать а к как там определить цифры и сложит их не могу понять
Sylar9 вне форума Ответить с цитированием
Старый 16.11.2011, 23:42   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

читать файл построчно.
в цикле перебирать элементы строки, пока не встретится цифра
((s[i]>='0') && (s[i]<='9'). если встретили цифру, то все символы while элемент цифра - накапливать в отдельную строчку. Полученную строку преобразовать в число.
число добавить к сумме.
всё.

p.s. не знаю я ваших Сей (C/C++), поэтому конктретным примером кода помочь не могу
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.11.2011, 23:48   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

как-то так:

Код:
std::ifstream ifs("file.txt");

std::string s;
int sum = 0;

while (ifs >> s)
{
    std::stringstream ss(s);
    int i;

    if (ss >> i)
       sum += i;   
}
код не проверялся
Rififi вне форума Ответить с цитированием
Старый 17.11.2011, 12:07   #4
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос

Цитата:
Сообщение от Rififi Посмотреть сообщение
как-то так:

Код:
std::ifstream ifs("file.txt");

std::string s;
int sum = 0;

while (ifs >> s)
{
    std::stringstream ss(s);
    int i;

    if (ss >> i)
       sum += i;   
}
код не проверялся
не получается:
что тут надо доделать:
Код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int mian()
{ 
  cout << "Enter name file" << endl;
  string name;
  cin >> name;
  ifstream f(name.c_str());
  string s;
  while (f.eof())
	{
		f >> s;
		cout << s;
   
	}

   
	system("pause");
	return 0;
}
Sylar9 вне форума Ответить с цитированием
Старый 17.11.2011, 13:28   #5
БалаШагаЛ
Форумчанин
 
Регистрация: 11.02.2011
Сообщений: 131
По умолчанию

Код:
#include <stdio.h>

void charnull(char *t)
{
  for (int i=0;i<100;i++)
  {
    t[i]="\0";
  }
}

int main()
{
  FILE *F=fopen("File.txt","rt");
  char t[100];
  int a,sum=0;
  while(!feof(F))
  {
    charnull(t);
    fscanf(F,"%s",t);
    for (int i=0;i<strlen(t);i++)
    {
      if ((t[i]<48)||(t[i]>58))
      {
        for (int j=i+1;j<strlen(t);j++)
        {
          t[j-1]=t[j];
        }
        t[strlen(t)-1]='\0';
      }
    }
    if (strlen(t)!=0)
    {
      sscanf(t,"%i",&a);
      sum+=a;
    }
  }
  fclose(F);
}
Вот как-то так. Писалось без компилятора под рукой, поэтому что-то может быть не так, поправьте, если что.
БалаШагаЛ вне форума Ответить с цитированием
Старый 17.11.2011, 13:53   #6
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос

Цитата:
Сообщение от БалаШагаЛ Посмотреть сообщение
Код:
#include <stdio.h>

void charnull(char *t)
{
  for (int i=0;i<100;i++)
  {
    t[i]="\0";
  }
}

int main()
{
  FILE *F=fopen("File.txt","rt");
  char t[100];
  int a,sum=0;
  while(!feof(F))
  {
    charnull(t);
    fscanf(F,"%s",t);
    for (int i=0;i<strlen(t);i++)
    {
      if ((t[i]<48)||(t[i]>58))
      {
        for (int j=i+1;j<strlen(t);j++)
        {
          t[j-1]=t[j];
        }
        t[strlen(t)-1]='\0';
      }
    }
    if (strlen(t)!=0)
    {
      sscanf(t,"%i",&a);
      sum+=a;
    }
  }
  fclose(F);
}
Вот как-то так. Писалось без компилятора под рукой, поэтому что-то может быть не так, поправьте, если что.
А спомошью fstream
Sylar9 вне форума Ответить с цитированием
Старый 17.11.2011, 15:25   #7
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Как-то так, например...
Код:
#include <iostream>
#include <sstream>
#include <iterator>
#include <algorithm>

using namespace std;

int main() {
    string str("bears: 17 elephants 9 end");
    stringstream ss(str);
    int sum = 0, nmbr;
    for (istream_iterator<string> It(ss); It != istream_iterator<string>(); ++It)
                if (isdigit((char)(*It)[0]))
                {
                    stringstream(*It) >> nmbr;
                    sum += nmbr;
                }
    cout << sum << endl;
}
Переделай под считывание из файла так, как тебе нужно.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывести массив целых чисел в файле по одному в строке newstudent777 Паскаль, Turbo Pascal, PascalABC.NET 12 22.09.2011 22:17
подсчитать количество элементов в файле целых чисел Aimet Паскаль, Turbo Pascal, PascalABC.NET 0 16.06.2011 20:11
В двумерном массиве 3 x 5, состоящем из целых чисел, найти сумму элеметов нечётных строк. (Delphi) Мария я Помощь студентам 1 30.04.2011 10:19
В типизированном файле целых чисел определить сумму компанентов на четных местах. (паскаль) Rfn.if Помощь студентам 0 27.04.2011 15:36
Посчитать сумму всех целых чисел в этом диапазоне LION7777 Фриланс 14 15.06.2010 00:16