0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
1

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

18.04.2012, 16:06. Показов 4651. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан файл вещественных чисел. Поменять в нём местами минимальный и максимальный элементы. На ум приходит только перенести все числа в массив, поменять в нём местами мин. и макс. элементы, внести полученный результат в файл. Но как это реализовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2012, 16:06
Ответы с готовыми решениями:

Поменять местами максимальный и минимальный элементы
А вот ету задачку поможете решить????? Поменять местами максимальный и минимальный элементы.

Поменять местами максимальный и минимальный элементы
Помогите написать программу : Дан массив из восьми элементов. Поменять местами максимальный и...

Поменять местами минимальный и максимальный элементы вектора
ребят как написать код, чтобы в векторе V менялись местами минимальный и максимальный элементы

Поменять местами минимальный и максимальный элементы массива
Привет всем, помогите составить программку для этой задачи. Поменять местами минимальный и...

11
32 / 29 / 1
Регистрация: 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();
 
}
Вот держи!
0
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
18.04.2012, 17:57  [ТС] 3
Это не то
0
2554 / 1319 / 178
Регистрация: 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;
}
0
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
18.04.2012, 20:09  [ТС] 5
а можно без вектора обойтись?
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.04.2012, 20:19 6
Tewe, можно.
0
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
18.04.2012, 22:10  [ТС] 7
Можете написать, как будет выглядеть программа если не использовать вектор?
0
19 / 3 / 1
Регистрация: 17.11.2009
Сообщений: 139
18.04.2012, 22:37 8
Откуда ты знаешь, сколько чисел у тебя в файле? Может их там миллион будет. Не будешь же ты выделять столько памяти под массив. Поэтому используется вектор, чтобы постепенно память увеличивать, а не сразу занимать огромный кусок.
0
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 22
18.04.2012, 23:35  [ТС] 9
А если, допустим в файле будет 10 чисел?
0
14 / 14 / 6
Регистрация: 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;
}
Как-то так.
0
873 / 771 / 173
Регистрация: 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; 
}

________________________________________________________________________________
0
14 / 14 / 6
Регистрация: 26.11.2010
Сообщений: 235
19.04.2012, 13:52 12
Цитата Сообщение от Tewe Посмотреть сообщение
Дан файл вещественных чисел.
Цитата Сообщение от Sick2 Посмотреть сообщение
int *a
Ну тогда вместо int, double.
0
19.04.2012, 13:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2012, 13:52
Помогаю со студенческими работами здесь

Поменять местами минимальный и максимальный элементы файла
Дан файл вещественных чисел, в нём требуется поменять местами минимальный и максимальный элементы....

Поменять местами минимальный и максимальный элементы массива
Добрый день! Проблема заключается в следующем: Дан массив a из 10 элементов,нужно найти...

Поменять местами минимальный и максимальный элементы массива
#include &lt;iostream&gt; using namespace std; void main () { int a; int i,k=0,g,n,min,max; ...

Поменять местами минимальный и максимальный элементы массива
Необходимо написпть программу, которая меняет местами минимальный и максимальный елемент массива...

Поменять местами минимальный и максимальный элементы массива
68. Поменять местами минимальный и максимальный элементы массива размера 10. 81. Дан массив...

Поменять местами максимальный и минимальный элементы массива
3. Поменяйте местами максимальный и минимальный элементы


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru