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

Файл: Поменять местами минимальный и максимальный элементы. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Tewe
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
18.04.2012, 16:06     Файл: Поменять местами минимальный и максимальный элементы. #1
Дан файл вещественных чисел. Поменять в нём местами минимальный и максимальный элементы. На ум приходит только перенести все числа в массив, поменять в нём местами мин. и макс. элементы, внести полученный результат в файл. Но как это реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2012, 16:06     Файл: Поменять местами минимальный и максимальный элементы.
Посмотрите здесь:

Поменять местами минимальный и максимальный элементы файла C++
C++ Поменять местами максимальный и минимальный элементы
Поменять местами минимальный и максимальный элементы массива C++
C++ Найти минимальный и максимальный элементы контейнера и поменять их местами.
Поменять местами максимальный и минимальный элементы матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Betokuha
 Аватар для Betokuha
32 / 29 / 9
Регистрация: 05.03.2012
Сообщений: 114
18.04.2012, 16:36     Файл: Поменять местами минимальный и максимальный элементы. #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
49
#include <vcl.h>
#include <stdlib.h>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
  const int count = 10;
  float arr[count];
  float a;
 
 
  for (int i = 0; i < count; i++)
  {
      cout<<i+1<<"/"<<count<<": ";
      cin>>a;
       arr[i] = a;
    cout<<arr[i]<<" ";
  }
 
   cout<<endl;
 
int min = 0, max = 0;
 
for (int i = 0; i < count; i++)
{
     if (arr[i] < arr[min])
         min = i;
 
    if (arr[i] > arr[max])
        max = i;
}
 
    int tmp = arr[max];
    arr[max] = arr[min];
    arr[min]  = tmp;
 
 
  for (int i = 0; i < count; i++)
  {
    cout<<arr[i]<<" ";
  }
 
   cout<<endl;
getch();
 
}
Вот держи!
Tewe
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
18.04.2012, 17:57  [ТС]     Файл: Поменять местами минимальный и максимальный элементы. #3
Это не то
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.04.2012, 19:16     Файл: Поменять местами минимальный и максимальный элементы. #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
#include <fstream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <iostream>
 
int main()
{
    std::ifstream fin("in.txt");
    std::vector<double> v
    (
        std::move(std::istream_iterator<double>(fin)),
        std::istream_iterator<double>()
    );
    fin.close();
    if(v.size() > 1)
        std::iter_swap
        (
            std::min_element(v.begin(), v.end()),
            std::max_element(v.begin(), v.end())
        );
    std::ofstream fout("out.txt");
    std::copy(v.begin(), v.end(), std::ostream_iterator<double>(fout, " "));
    fout.close();
    return 0;
}
Tewe
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
18.04.2012, 20:09  [ТС]     Файл: Поменять местами минимальный и максимальный элементы. #5
а можно без вектора обойтись?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.04.2012, 20:19     Файл: Поменять местами минимальный и максимальный элементы. #6
Tewe, можно.
Tewe
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
18.04.2012, 22:10  [ТС]     Файл: Поменять местами минимальный и максимальный элементы. #7
Можете написать, как будет выглядеть программа если не использовать вектор?
m9yt
17 / 1 / 1
Регистрация: 17.11.2009
Сообщений: 108
18.04.2012, 22:37     Файл: Поменять местами минимальный и максимальный элементы. #8
Откуда ты знаешь, сколько чисел у тебя в файле? Может их там миллион будет. Не будешь же ты выделять столько памяти под массив. Поэтому используется вектор, чтобы постепенно память увеличивать, а не сразу занимать огромный кусок.
Tewe
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
18.04.2012, 23:35  [ТС]     Файл: Поменять местами минимальный и максимальный элементы. #9
А если, допустим в файле будет 10 чисел?
Sick2
14 / 14 / 1
Регистрация: 26.11.2010
Сообщений: 235
19.04.2012, 02:37     Файл: Поменять местами минимальный и максимальный элементы. #10
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
#include <iostream>
#include <fstream>
 
int main()
{
    int *a, count = 0, max, min, ind_max = 0, ind_min = 0, count2 = 0, temp = 0, i = 0;
    std::ifstream out("1.txt");
    while(!out.eof())
    {
        out.get();
        count++;
    }
    a = new int [ count / 2 ];
    count = 0;
    out.close();
    std::ifstream out2("1.txt");
    while(out2>>a[count])
    {
        count++;
    }
    out2.close();
    max = a[0];
    min = a[0];
        
    for(int i = 0; i < count ; i++)
    {
        if(max < a[i])
        {
            max = a[i];
            ind_max = i;
        }
        if(min > a[i])
        {
            min = a[i];
            ind_min = i;
        }
    }
    temp = a[ind_max];
    a[ind_max] = a[ind_min];
    a[ind_min] = temp;
 
    
    std::ofstream in("1.txt", std::ios_base::trunc);
    while(i != count)
    {
        in<<a[i]<<" ";
        i++;
    }
    in.close();
    return 0;
}
Как-то так.
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
19.04.2012, 08:48     Файл: Поменять местами минимальный и максимальный элементы. #11
Цитата Сообщение от Tewe Посмотреть сообщение
Дан файл вещественных чисел
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 <cctype> 
 
int main()
{     
    size_t j = 0,i = 0, posmin = 0, posmax = 0;
    double maxdouble = 0,
          mindouble = 3;
    char text [256],
        *token = NULL,
        tmp[30] = "",
        values[20][256];
 
        std::fstream file("file.txt",std::ios::in|std::ios::out);
        if (!file) std::cerr << "Error in opening file !!!" << std::endl;
 
        else   {
 
                while (file.get(text[i]))  i++;  
                           text[i] = '\0'; i = 0;
 
                          token = strtok(text," \t\r\n");
               while(token){
                          
                          strcpy(values[i],token);
                     if(atof(values[i]) > maxdouble) 
                     {
                           maxdouble = atof(values[i]) ;posmin = i;}
                     if(atof(values[i]) < mindouble) 
                     {
                          mindouble = (atof(values[i])) ;posmax = i;}
                
                          token = strtok(NULL," \t\r\n");
                          i++;
                     }
                         strcpy(tmp ,values[posmin]) ;
                         strcpy(values[posmin], values[posmax]);
                         strcpy(values[posmax], tmp);
     
        
                         file.clear();      
    
                         file.seekp(std::ios::beg);
         
                         for(j = 0;j < i; j++){
                         file <<  values[j] << ' ';
                         std::cout << values[j] << ' '; }
                         file.close();
 
                     }
        
                  system("pause");
                  return 0; 
}

________________________________________________________________________________
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2012, 13:52     Файл: Поменять местами минимальный и максимальный элементы.
Еще ссылки по теме:

Поменять местами максимальный и минимальный элементы в массиве C++
C++ Поменять местами минимальный и максимальный элементы массива
Как поменять местами максимальный и минимальный элементы в дереве? C++

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

Или воспользуйтесь поиском по форуму:
Sick2
14 / 14 / 1
Регистрация: 26.11.2010
Сообщений: 235
19.04.2012, 13:52     Файл: Поменять местами минимальный и максимальный элементы. #12
Цитата Сообщение от Tewe Посмотреть сообщение
Дан файл вещественных чисел.
Цитата Сообщение от Sick2 Посмотреть сообщение
int *a
Ну тогда вместо int, double.
Yandex
Объявления
19.04.2012, 13:52     Файл: Поменять местами минимальный и максимальный элементы.
Ответ Создать тему
Опции темы

Текущее время: 14:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru