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

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

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

Работа с файлами - C++

09.03.2012, 19:20. Просмотров 417. Ответов 5
Метки нет (Все метки)

Здраствуйте! Пож-та помогите понять где допустил ошибку - программировать только начинаю, поэтому не судите строго

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


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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int a[10],n,k;
    cout<<"Vvedite razmer massiva v faile> ";
    cin>>n;
 
    ifstream ss("1.txt");
          for (int i=0; i<n; i++)
                  ss>>a[i]; // считываем информацию с файла
 
        for (int i=0;i<n;i++)
            if (a[i]%2==0)
                a[i]=a[i]/2;
 
           for (int i=0;i<n-1;++i) // сортировка массива по возр
            { 
                for (int j=0;j<n-1;++j)
                { 
                    if (a[i]<a[i+1])
                 {
                     k=a[i+1];
                     a[i+1]=a[i];
                     a[i]=k;
                 }
               }
           }
     ofstream vivod("2.txt");
            for (int i=0; i<n; i++)
              vivod<<a[i]<<" "; // загоняем массив в выходной файл
    getch();
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2012, 19:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с файлами (C++):

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

Работа с файлами - C++
Задача программы такова - пользователь вводит строку адреса , например C:\blablabla и программа считывает все размеры файлов хранящихся в...

работа с файлами - C++
Дан текстовый файл и строка s. Если самая длинная строка файла не совпадает со строкой s, то строку s дописать в конец файла. Помогите...

Работа с файлами - C++
1) Преобразовать строку, заменяя каждую цифру соответствующим ей числом символов нижнего подчеркивания. Например: «3 слона» -&gt; «_ _ _слона»...

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

работа с файлами - C++
Текст берётся из файла. Ка ксделать используя библиотеку fstream знаю, но надо сделать без неё то есть простые fread, fwrite и т.д.)....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
09.03.2012, 19:34 #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
48
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <vector>
#include <algorithm>
 
template <typename T, unsigned int n>
class transfor :
    public std::unary_function<T, void>
{
public:
    void operator() (T& value) const
    {
        if (value % n != 0)
            value %= n;
    }
};
 
int main()
{
    std::string fileName;
    std::fstream file;
    
    std::cout << "Введите имя файла: " << std::endl;
    std::cin >> fileName;
    
    file.open(fileName.c_str(), std::ios::in);
    if (file.fail())
    {
        std::cerr << "Файл " << fileName << " не найден" << std::endl;
        system("Pause");
        return EXIT_FAILURE;
    }
    
    std::vector<int> numbers;
    std::copy(std::istream_iterator<int>(file), std::istream_iterator<int>(), std::back_inserter(numbers));
    
    file.close();
    
    std::for_each(numbers.begin(), numbers.begin(), transfor<int, 2u>());
    std::sort(numbers.begin(), numbers.end());
    
    std::copy(numbers.begin(), numbers.end(), std::ostream_iterator<int>(std::cout, " "));
 
    system("Pause");
    return 0;
}
0
Yanou
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 7
09.03.2012, 19:44  [ТС] #3
Что это? о_О
Мне так тяжело не надо, мне бы просто объяснить в чем моя ошибка, вот и все За ответ спасибо конечно!
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
09.03.2012, 19:46 #4
Yanou, у тебя написано сортировка по возр, а в коде наоборот
исправь меньше на больше

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void sort(int* array, unsigned int n)
{
    unsigned int iter = 0;
    bool next = true;
    while (next)
    {
        next = false;
        for (unsigned int i = 0; i < n - iter - 1; ++i)
            if (array[i] > array[i + 1])
            {
                std::swap(array[i], array[i + 1]);
                next = true;
            }
        iter++;
    }
}
0
Yanou
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 7
09.03.2012, 19:52  [ТС] #5
Пробовал, он вообще выдает массив в каком то левом порядке, например для чисел 1 2 6 5 4 3 10 5 3 8, после деления на два получается так - 1 1 3 5 2 3 5 5 3 4. потом считай должен отсортировать, а получается тоже самое - 1 1 3 5 2 3 5 5 3 4. т.е. он вообще не сортирует...
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
09.03.2012, 21:46 #6
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
#include <cstdlib>
#include <iostream>
 
void sort(int* array, unsigned int n)
{
    unsigned int iter = 0;
    bool next = true;
    while (next)
    {
        next = false;
        for (unsigned int i = 0; i < n - iter - 1; ++i)
            if (array[i] > array[i + 1])
            {
                std::swap(array[i], array[i + 1]);
                next = true;
            }
        iter++;
    }
}
 
int main()
{
    srand(static_cast<unsigned int>(time(NULL)));
    setlocale(LC_ALL, "Russian");
    static const unsigned short int size = 10;
    std::cout << "Массив: " << std::endl;
    int vector[size];
    for (unsigned int i = 0; i < size; ++i)
    {
        vector[i] = rand() % 100;
        std::cout << vector[i] << " ";
    }
    std::cout << std::endl << "Сортированный массив" << std::endl;
    sort(vector, static_cast<unsigned int>(size));
    for (unsigned short int i = 0 ; i < size; ++i)
        std::cout << vector[i] << " ";
    std::cout << std::endl;
    system("Pause");
    return EXIT_SUCCESS;
}
вывод:
Код
Массив: 
32 84 18 90 21 11 83 97 14 83 
Сортированный массив
11 14 18 21 32 83 83 84 90 97
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2012, 21:46
Привет! Вот еще темы с ответами:

Работа с файлами - C++
Хотелось бы разобраться как работать с файлами. Придумал программу самую простенькую, хочу загнать ее в файл. #include &lt;stdio.h&gt; ...

Работа с файлами - C++
#include&lt;iostream&gt; using namespace std; void main() { FILE *f,*g; int a,kol=0; fopen_s(&amp;f,&quot;D:\\1.txt&quot;,&quot;r&quot;); ...

Работа с файлами - C++
Программа полностью рабочая. Кроме одного момента. #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;clocale&gt;...

работа с файлами - C++
в программе не работает удаление... что делать?? #include &quot;stdafx.h&quot; #include &lt;string.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.03.2012, 21:46
Ответ Создать тему
Опции темы

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