Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.70
xexew
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 76
#1

Посимвольное чтение - C++

01.12.2011, 20:49. Просмотров 5813. Ответов 2
Метки нет (Все метки)

В консоль подается текст содержащий такие выражения:
а=3 b=7
z=32 a=1
y=2

b=7
"EOF"-конец.
программа не обращает внимание на количество пробелов и отступов.
после прочтения текста, программа должна вывести таблицу:
среднее значение сумма
а 2 4
b 7 14
y 2 2
z 32 32

Добавлено через 5 минут
вопрос состоит в том, как организовать запись значения переменной в массив?
допустим я хочу переменную 'а' записать в массив arr['a'] и присвоить ей значение переменной после знака '='.
C++
1
2
3
4
5
6
7
8
char c;
char a[4];
cin.get(c);
while(cin)
{
if(c>='a' && c<='z')
cin.get(c),a['c']=cin.get(c);
}
что-то вроде этого, но ведь еще надо подсчитывать количество записей, что бы найти среднее значение
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2011, 20:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Посимвольное чтение (C++):

Посимвольное чтение из файла - C++
Всем добрый вечер (ночь)! Так сложилась ситуация что нужно мне посимвольно считать текст из файла fin в массив str, причем считывать надо...

Посимвольное чтение файла в вектор - C++
Вечер добрый. Есть файл sir.in.txt, содержащий строку ABC; посимвольно записываю его в вектор следующим образом: ifstream...

Посимвольное чтение массива char - C++
Производится чтение из файла.Определенный диапазон считывается в переменную.Необходимо произвести посимвольное чтение из переменной и...

Посимвольное чтение, добавление в конец строки - C++
Программа должна брать из файла массив символов, читать посимвольно и к каждому символу в конец добавлять .txt. Выходит не совсем...

Посимвольное чтение строки типа string - C++
Здравствуйте! Подскажите, пожалуйста. У меня есть строка типа string, нужно все цифры вывести на печать. Как сделать &quot;пробежку по...

Как создать посимвольное чтение строки и загнать в массив - C++
В консоль подается строка вида &quot;()(()))((&quot;, нужно создать динамический массив под нее, и загнать каждый символ строки туда, как это...

2
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
01.12.2011, 22:22 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <string>
#include <boost/regex.hpp>
#include <algorithm>
#include <map>
#include <list>
#include <boost/lexical_cast.hpp>
#include <numeric>
#include <functional>
 
int main()
{
   std::string s = "a=3 b=7\n"
                   "z=32 a=1\n"
                   "y=2\n"
                   "b=7\n";
   
   boost::regex reg("((\\w)\\s*=\\s*(\\d+))"); 
   
   boost::smatch res;
   
   std::map< char, std::list<int> > v;
   
   std::map< char, double> amean;  
   std::map< char, int > sum;  
      
   std::string::const_iterator start = s.begin();
   std::string::const_iterator end = s.end();
   
   while( boost::regex_search(start , end , res, reg) )
   {
      v[res[2].first[0]].push_back(boost::lexical_cast<int>(std::string(res[3])));
      start= res[1].second;
   }
 
   for(std::map< char, std::list<int> >::iterator it = v.begin(); it != v.end(); ++it)
   {      
      sum[it->first] = std::accumulate(it->second.begin(), it->second.end(), 0);
      amean[it->first] = (double)sum[it->first] / it->second.size();      
   }
   
   for(std::map< char, std::list<int> >::const_iterator it = v.begin(); it != v.end(); ++it)
   {
      std::cout<<it->first<<" ";
      std::cout<<amean[it->first]<<" "<<sum[it->first]<<std::endl;
   }
}
Работу с файлами сами доделайте.
1
xexew
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 76
01.12.2011, 23:53  [ТС] #3
спасибо) все как-то сложно)
вот мое
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
 
using namespace std;
 
void main()
{   const int n=24;
    char c;
    int tmp, a[n], b[n];
    for(int i=0; i<n; i++)
        b[i]=0;
    for(int i=0; i<n; i++)
        a[i]=0;
    cin.get(c);
    
    while(cin)
    {
        if(c>='a' && c<='z')
            tmp=(int)(c-'a'),
            cin.get(c),cin.get(c),
            a[tmp]+=(int)(c-('a'-'1')),b[tmp]++;
        
        else
            cin.get(c);
 
    }
    for(int i=0; i<n; i++)
    {
        if(a[i])
            cout<<"kolichestvo "<<(char)(i+'a')<<"= "<<b[i]<<" summa= "<<a[i]<<" srednee znachenie= "<<a[i]/b[i]<<endl;
        else 
        {
                   while(a[i]==0)
                         i++;
                }
    }
 
    return 0;
}
и у меня вопрос, так как в тексте вводятся не все латинские буквы, то некоторые элементы массива не надо выводить, как сделать так что бы программа выводила только ненулевые элементы массива? в моей программе я написал вот это:
C++
1
2
3
4
5
6
7
8
9
for(int i=0; i<n; i++)
    {
        if(a[i])
            cout<<"kolichestvo "<<(char)(i+'a')<<"= "<<b[i]<<" summa= "<<a[i]<<" srednee znachenie= "<<a[i]/b[i]<<endl;
        else 
        {
                   while(a[i]==0)
                         i++;
                }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2011, 23:53
Привет! Вот еще темы с ответами:

Как заполнить файл и как осуществить посимвольное чтение - C++
решила задачу с файлами на высоком уровне, а нужно на низком, помогите плиз!!!не могу разобраться как заполнить файл и как осуществить...

Посимвольное сравнение - C++
Не могу понять что я делаю не так, объясните пожалуйста. #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; void...

Посимвольное краска - C++
Народ подскажите пожалуйста как посимвольное красить буквы? например в слове Привет, сделать разным каждые буквы по цвету

посимвольное считывание - C++
У меня есть переменная типа string которая равна &quot;000000000000&quot;. Мне нужно программно превратить ее вот в такую: 000-000-000-000. Я хочу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru