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

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

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

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

09.03.2012, 19:20. Просмотров 415. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2012, 19:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с файлами (C++):

Работа с файлами в C/C++ - C++
Всем добрый вечер. Ваш форум часто помогал мне, я находил ответы на многие свои вопросы. На сей раз я затупил конкретно. Задание -...

Работа с файлами в C++ - C++
Пишу программу, где предполагается работа с файлами, но при попытке объявления входного потока (istream filein), я получаю ошибку...

Работа с файлами - C++
1.Сведения об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы), в котором он учится. Дан файл F, содержащий...

Работа с файлами - C++
Задание было такое: Создать телефонный справочник для осуществления следующих операций: Добавление абонентов в базу. Удаление...

Работа с файлами - C++
Сведения об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы), в котором он учится. Дан файл F, содержащий...

Работа с файлами - C++
Помогите пожалуйста, что не правильно,,,не выводит результат в файл #include&lt;iostream.h&gt;; #include&lt;fstream.h&gt;; #include&lt;iomanip&gt;; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sandye51
программист С++
682 / 584 / 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;
}
Yanou
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 7
09.03.2012, 19:44  [ТС] #3
Что это? о_О
Мне так тяжело не надо, мне бы просто объяснить в чем моя ошибка, вот и все За ответ спасибо конечно!
sandye51
программист С++
682 / 584 / 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++;
    }
}
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. т.е. он вообще не сортирует...
sandye51
программист С++
682 / 584 / 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2012, 21:46
Привет! Вот еще темы с ответами:

Работа с файлами - C++
Привести пример создания, просмотра и дополнения числового файла на языке С++

Работа с файлами - C++
Доброе время суток. Работа с файлами 1. Вывести на экран текст программы. 2. Вывести на экран текст программы, но...

Работа с файлами - C++
Здравствуйте, делаю задачку &quot;Выборочная сортировка&quot;, но застрял на работе с файлами, понять не могу никак... нужно считать числа из...

работа с файлами - C++
лет 5 назад изучал с++ консольный еще в технаре. Щас php считаю более востребован да и проще. Для интереса подскажите какои оператор...


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

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

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