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

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

Войти
Регистрация
Восстановить пароль
 
vitaliypro
1 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 125
#1

Сортировка одномерного символьного массива из файла - C++

19.10.2013, 17:05. Просмотров 445. Ответов 6
Метки нет (Все метки)

//Пузырьковая сортировка по убыванию (прямое направление)

вот прога. считывает и выводит на экран буквы из файла "in.txt"

но как то она не правильно работает.(((

помогите из файла 10 элементов , (содержание файла : c r w y h g f t u d) считать в массив, что бы можно было потом отсортировать.!!!!!!!!!!!!!!!!!!!!!

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
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <fstream.h>
 
#define SIZE 10
#define IFILE "in.txt"
 
const n=10;
 
 
void getmas (char *a)
{
    FILE* f;
 
    if((f = fopen(IFILE, "r")) == NULL)
    {
        perror("fopen");
        exit(1);
    }
 
    if((fgets(a, SIZE*2, f) == NULL) && ferror(f))
    {
        fprintf(stderr, " Oshibka chtenia \n");
        exit(2);
    }
 
    fputs(a, stdout);
 
    cout <<endl<<" ________END____"<<endl;
    return ;
}
 
void SaveInFile (char *a)
{
  ofstream output_file ("out.txt");
  if(output_file==NULL) cout<< "~~ERROR~~ input file "<<"\n";
  for(int i=0; i<n;i++)
  {
    output_file << a[i]<< " ";
  }
}
 
 
void sortmas (char *a)
{
 
// сортировка пузырьком
  for(int i=0;i<n;i++)
  {
    for (int j=0;j<n-1-i;j++)
    {
      if (a[j]>a[j+1])
      {
        int x=a[j];
        a[j]=a[j+1];
        a[j+1]=x;
      }
    }
  }
  cout<<" Otsortirovanniy massiv : \n";
  for(int i=0;i<n*2;i++) cout<<a[i]<<"-";
  SaveInFile (a);
}
 
 
int main ()
{
    char a[n];
    getmas (a);
    cout<<" Ishodniu  massiv : \n";
        for(int i=0;i<SIZE*2;i++) cout<<a[i]<<"+";
    cout<<endl;
    sortmas (a);
    getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2013, 17:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сортировка одномерного символьного массива из файла (C++):

Удалить из символьного одномерного массива повторяющиеся символы - C++
пожалуйста подскажите!!!! как удалить из символьного одномерного массива повторяющиеся символы?

Сортировка символьного массива - C++
Помогите пожалуйста написать прогу на C++!!! Нужно отортировать матрицу из симовлов по первому столбцу, в случае если есть повторяющиеся...

Сортировка символьного массива - C++
Данная программа, по идее, должна сортировать символьный массив пузырьком. Но почему-то не сортирует. #include &lt;iostream&gt; #include...

Сортировка символьного массива по алфавиту - C++
Заданы два символьных массива, заполненных строчными латинскими буквами. Объединить их в один массив так, чтобы все буквы оказались...

Сортировка символьного массива в порядке убывания количества букв - C++
Мне нужно сначала: 1 - спросить у человека строку 2 - надо посчитать количество вхождений каждой буквы ( то есть если в строке...

Ввод из файла символьного массива - C++
Как ввести вот такой символьный массив из файла ? 2X11 X121 12X1 1112 2222 XXX2 X21X 1X2X

6
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
19.10.2013, 17:52 #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
#include<iostream>
#include<fstream>
using namespace std;
 
int main()
{
    char mas[10],temp;
    int i,j;
    ifstream a("in.txt");
    for(i = 0; i < 10; i++) a >> mas[i];
    a.close();
    for(i = 0; i<10; i++)
    {
        for(j = 9; j > i; j--)
        {
            if(mas[j-1]>mas[j])
            {
                temp=mas[j-1];
                mas[j-1]=mas[j];
                mas[j]=temp;
            }
        }
    }
    for(i = 0; i < 10; i++) cout << mas[i] << ' ';
    return 0;
}
1
vitaliypro
1 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 125
19.10.2013, 18:26  [ТС] #3
СПАСИБО ОГРОМНОЕ

а как разбить так как у меня было на функции
-ввод
-вывод
главная
???

Добавлено через 21 минуту
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
#include<iostream>
#include<fstream>
#include<conio.h>
 
using namespace std;
 
void genmas (char *mas)
{
    ifstream a("in.txt");
    for(int i = 0; i < 10; i++) a >> mas[i];
    a.close();
}
 
void sortmas (char *mas)
{
    char temp;
    for(int i = 0; i<10; i++)
    {
        for(int j = 9; j > i; j--)
        {
            if(mas[j-1]>mas[j])
            {
                temp=mas[j-1];
                mas[j-1]=mas[j];
                mas[j]=temp;
            }
        }
    }
}
 
void savefile(char *mas)
{
    ofstream filer ("out.txt");
    for(int i=0; i<10;i++)
    {
        filer << mas[i]<< " ";
    }
}
 
int main()
{
    char mas[10],temp;
    int i,j;
    genmas (mas);
    cout<<"Ishodniu massiv : \n";
    for(i = 0; i < 10; i++) cout << mas[i] << ' ';
    sortmas (mas);
    cout<<"\nSortirovanniu massiv : \n";
    for(i = 0; i < 10; i++) cout << mas[i] << ' ';
 
    savefile (mas);
 
    getch();
    return 0;
}

ВОТ ДОДЕЛАЛ ВСЕ САМ)НО СПАСИБО ЗА ПОМОЩЬ!!!!!!!
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5115 / 1553 / 384
Регистрация: 23.01.2011
Сообщений: 3,179
19.10.2013, 18:33 #4
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 <iterator>
#include <fstream>
#include <vector>
 
void getVectorFromFile(std::vector <char> &vector);
void sortVector(std::vector <char> &vector);
 
int main()
{
    std::vector <char> vector;
    getVectorFromFile(vector);
 
    std::cout << "File content: " << std::endl;
    std::copy(vector.begin(), vector.end(), std::ostream_iterator <char> (std::cout, " "));
    std::cout << std::endl;
 
    sortVector(vector);
    std::cout << "Sorted file content: " << std::endl;
    std::copy(vector.begin(), vector.end(), std::ostream_iterator <char>(std::cout, " "));
    std::cout << std::endl;
 
    system("pause");
    return 0;
}
 
void getVectorFromFile(std::vector <char> &vector)
{
    std::ifstream file("file.txt");
    char currentSymbol;
    while (file >> currentSymbol)
        vector.push_back(currentSymbol);
    file.close();
}
 
void sortVector(std::vector <char> &vector)
{
    for (size_t i = 0; i < vector.size(); i++) {
        for (size_t j = vector.size() - 1; j > i; j--) {
            if (vector.at(j - 1) > vector.at(j)) {
                char temporary = vector.at(j - 1);
                vector.at(j - 1) = vector.at(j);
                vector.at(j) = temporary;
            }
        }
    }
}
1
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
19.10.2013, 18:41 #5
vitaliypro , не за что. Если вы getch() замените на cin.get(), то можно будет убрать библиотеку conio.h
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5115 / 1553 / 384
Регистрация: 23.01.2011
Сообщений: 3,179
19.10.2013, 18:44 #6
забыл функцию сохранения отсортированного вектора в файл.
C++
1
2
3
4
5
6
void saveVectorToFile(std::vector <char> vector);
void saveVectorToFile(std::vector <char> vector)
{
    std::ofstream file("file.txt");
    std::copy(vector.begin(), vector.end(), std::ostreambuf_iterator <char> (file));
}
0
vitaliypro
1 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 125
19.10.2013, 18:57  [ТС] #7
спасибо)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2013, 18:57
Привет! Вот еще темы с ответами:

Чтение символьного массива из файла и вывод на экран - C++
Задание было: прочитать из файла символьный массив и обработать его. Т.к. нам чтение из файла пока не давали, пришлось искать самому. ...

Сортировка одномерного массива - C++
#include&lt;iostream.h&gt; #include &lt;time.h&gt; int main () { const int n=23; int T,i,m,k,temp; srand((unsigned)time(NULL));...

Сортировка одномерного массива - C++
объясните пожалуйста алгоритм выполнения сортировки относительно компьютера(программы)

Сортировка одномерного массива - C++
Помогите, пожалуйста, разработать приложение сортировки одномерного массива! Может у кого есть рабочая программа или код:) Помогите!!!:(


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

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

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