Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Serjin
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 22
1

Ввод из файла в массив и нахождение наиболее встречающегося элемента

30.11.2014, 10:42. Просмотров 1172. Ответов 43
Метки нет (Все метки)

Добрый день (вечер)! Нужно написать программу так, чтобы она создавала файл из рандомных чисел, далее нужно вывести содержимое этого файла на экран, затем в этом содержимом файла найти наиболее встречающийся символ и заменить его на '+'. Я сделал так, чтобы файл создавался, выводился на экран, а вот как найти наиболее встречающийся символ и заменить его на '+' понять не могу. Мои мысли сводятся к тому, что нужно содержимое файла записать в строчный массив, затем уже с этим массивом работать и искать символы, но как это реализовать, не могу понять.
Вот код моих наработок :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <ctime>
#include <stdio.h>
#include<time.h>
#include <cstdio>
#include <string>
#include <iostream>
#include <fstream>
#include <vector>
#include <Windows.h>
#include <stdio.h> 
#include <conio.h>
#include <string.h>
using namespace std;
void fun1();
void fun2();
void fun3();
void fun4();
void fun5();
char i;
char *Array = new char(10);
char *k = new char(1);
const char N=20;
int main(){
while (1)  {
    setlocale (0,"");
      cout<<"1.Сгенерировать \n"<<"2.Показать \n"<<"3.Изменить \n"<<"4.Об Авторе \n"<<"5.Выход \n";
      int n;
      cin>>n;
      switch (n) {
             case 1: fun1(); break;
             case 2: fun2(); break;
             case 3: fun3(); break;
             case 4: fun4(); break;
             case 5: return 0; break;
             default: cout<<"Не выбран пункт меню \n"; break;
             }
      }    
}
void fun1() {
        setlocale (0,"");
     srand(time(0));
ofstream file("t.txt");
for(i=0; i<10; i++)
file<<(char)(rand()%91+32);                                                                                
     }
void fun2() {
ifstream file("t.txt");
while (!file.eof())
{
for (char i=0;i<N;i++)
{ 
file.get(Array[i]);
}
Array[i] = '\n';
for (char j = 0; j < i; ++ j)
cout << Array[j];
cout<<"\n";                                                                                                  
}    
}
void fun3() {
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2014, 10:42
Ответы с готовыми решениями:

Найти в массиве и вывести значение наиболее часто встречающегося элемента
Здравствуйте вы мне можете помочь? вот условие задачи, её надо сделать на...

Найти в массиве и вывести значение наиболее часто встречающегося элемента.
ПАцаны помогите, попадаю... отблагадарю... 1. Найти в массиве и вывести...

Нахождение номера элемента строки - C++ через ввод вывод
Задача. Дано целое число n и набор из n целых чисел . Найти номера первого и...

Ввод из файла в массив
Приветствую. Вопрос, конечно, проще некуда... но всё же. Как организовать...

двойной массив.ввод из файла
Доброго времени суток. Подскажите пожалуйста, почему не получается ввод из...

43
ыфырф1992
25 / 25 / 17
Регистрация: 08.04.2012
Сообщений: 200
02.12.2014, 16:58 41
Serjin, для стринга тоже куча действий есть, можете попробовать переписать заменив массив на стринг
0
Serjin
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 22
02.12.2014, 17:06  [ТС] 42
Хм, то есть уже сравнивать не два массива, а две строчки, я правильно понял?

Добавлено через 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
39
40
41
42
43
ofstream f;// создаем поток на запись
                     ifstream file;// создаем поток на чтение
                    file.open("t.txt");
                    string a;
                    char b;
                    if (!file.is_open()) {cout<<"Не найден файл"<<endl; break;}
                    else  while (!file.eof())
                        {
                            getline(file,a);
                           // file>>a;
                            
                        }
                    int schetchik=0,c=0;
 
                    
                    for (int i=0;i<g-1;i++)
                    {
                        for (int j=0;j<g-1;j++) 
                        {
                            if (a[i]==a[j]) schetchik+=1; /* если элемент массива a[0]равен a[1] то счетчик увеличивается на 1., далее увеличивается j пока не станет меньше g, а i все это время =0
                                                         следующий круг i увеличивается на 1. 
                                                         если элемент массива a[1]равен a[1] то счетчик увеличивается на 1., далее увеличивается j пока не станет меньше g, а i=1
                                                         и т.д.*/
                        }
 
                        if (schetchik>c) {c=schetchik;b=a[i];} /*счетчике хранится сколько раз какая перепенныя встречается в тексте, если это переменная встречается больше максимальной(переменная с)
                                                               то переменная с перезаписывается, и в b сохраняется какая именно переменная встретилась столько то раз*/
                        schetchik=0;//обнуляем счетчик
                    }
 
 
                    for (int i=0;i<g;i++)
                    {
                        if (c<2) {cout<<"Нет символов встречающихся чаще 1 раза";break;}//если максимальна переменная встречалась только 1 раз, то выводим сообщение и прекращаем работу цикла фор(break)
                        if (a[i]==b) a[i]='+';// если a[i] равна переменной которая встречается чаще всего то перезапищем ее на +
                    }
                   if (c>1) cout<<"Часто встречающийся символ:"<<" "<<b<<endl<<"Теперь в файле записанна последовательность из символов:"<<" "<<a;// если максимальная(по встречам в тексте) переменная встречалась чаще одного раза, то скажем что это за переменная
                   { file.close();// закрываем поток чтения
                    f.open("t.txt");
                    f<<a;// записываем массив а в файл
                    f.close(); // закрываем поток записи
                    cout<<endl;
                    break;
0
ыфырф1992
25 / 25 / 17
Регистрация: 08.04.2012
Сообщений: 200
02.12.2014, 17:09 43
поздравляю))
0
Serjin
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 22
02.12.2014, 17:33  [ТС] 44
Цитата Сообщение от ыфырф1992 Посмотреть сообщение
поздравляю))
Спасибо, без вашей помощи не получилось бы

Добавлено через 23 минуты
Что-то я не пойму, я немного переделал программу и теперь она ругается на брейк в этой строчке
C++
1
2
3
4
5
6
7
ofstream f;// ñîçäГ*ГҐГ¬ ïîòîê Г*Г* Г§Г*ГЇГЁГ±Гј
                     ifstream file;// ñîçäГ*ГҐГ¬ ïîòîê Г*Г* Г·ГІГҐГ*ГЁГҐ
                    file.open("t.txt");
                    string a;
                    char b;
                    if (!file.is_open() ) {cout<<"ГЌГҐ Г*Г*éäåГ* ГґГ*éë"<<endl; break; 
                    }
[Error] break statement not within loop or switch
что может быть?
0
02.12.2014, 17:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2014, 17:33

Ввод данных в массив с файла с++
есть файл input.txt в нем 2 строки, на первой - одно число(размер массива), на...

Ввод данных в динамический массив из файла
В задаче написано: введение данных в динамический массив делать из файла. Как...

Ввод данных из файла в двумерный массив
Здравствуйте! Я написал такую программу: #include &lt;iostream&gt; #include...


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

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

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