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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 минуту
#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
Эксперт С++
5106 / 1544 / 382
Регистрация: 23.01.2011
Сообщений: 3,167
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
Эксперт С++
5106 / 1544 / 382
Регистрация: 23.01.2011
Сообщений: 3,167
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
19.10.2013, 18:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2013, 18:57
Привет! Вот еще темы с ответами:

Сортировка одномерного массива - C++
Здраствуйте, нужна помощь,а то в голову нечего не лезит... Есть одномерный массив из чисел . Мне необходимо сортировать их рандомно, что...

Сортировка одномерного массива - C++
Здравствуйте пользователи! Написал программу &quot;Сортировка одномерного массива&quot;. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; using...

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

Сортировка одномерного массива - C++
Массив из 10 целых чисел заполнить случайными числами от -5 до 5. Произвести сортировку массива. Вывести на экран исходный и...


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

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

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