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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
Bi-2
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 17
#1

Записать результаты проги в файл - C++

11.04.2010, 12:34. Просмотров 2575. Ответов 1
Метки нет (Все метки)

есть пр-ма выполняющая перемножение эл-ов под четными номерами, подсчет суммы элементов между 1-м и последним нулевыми элементами и преобразования массива (сначала отрицательные потом положительные)
программа выполняется...работает.....собственно нужно вывести результаты ее(программы) выполнения в файл...т.е. все как в 'черном окне'...записать в текстовый файл!....help!
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include <iostream.h>                          //Подключаем библиотеку функций ввода-вывода
  
const int nmax = 100;                          //Задаем постоянную - максимальное кол-во элементов в массиве
//Объявляем процедуры и функции
float chetnproizv(int, float[]);               //функция подсчета произведения четных элементов
int vvod(float[]);                             //функция ввода массива
void summezdu0(int, float[]);                  //процедура подсчета суммы элементов между 1-м и последним нулевыми элементами
void preobrmas(int, float[], float[]);         //процедура преобразования массива (сначала отрицательные потом положительные)
 
//главная функция программы
void main()
{
    //Объявление переменных
    int i;                                     //счетчик цикла
    int n;                                     //Количество элементов в массиве
    float V[nmax];                             //исходный массив вещественных чисел
    float V1[nmax];                            //преобразованный массив вещественных чисел
    float p;                                   //Произведение четных элементов массива
    n = vvod(V);                               //вызов функции ввода массива
    p = chetnproizv(n, V);                     //вызов функции подсчета произведения четных элементов
    cout<<"Proizvedenie chetnih elementov = "<<p<<endl;  //вывод произведения четных элементов
    summezdu0(n, V);                           //вызов функции подсчета суммы эл-тов между крайними нулями
    cout<<"Ishodnii massiv:"<<endl;            //вывод "Исходный массив"
    for (i=0; i<n; i++)                        //с помощью цикла
        cout<<V[i]<<"  ";                      //выводим все элементы исходного массива
    cout<<endl;                                //переход на следующую строку
    preobrmas(n, V, V1);                       //вызов функции преобразования массива (сначала отрицательные, затем положительные)
    cout<<"Preobrazovannii massiv:"<<endl;     //вывод "Преобразованный массив"
    for (i=0; i<n; i++)                        //с помощью цикла
        cout<<V1[i]<<"  ";                     //выводим все элементы преобразованного массива
    cout<<endl;                                //переход на следующую строку
 
}
 
//функция ввода элементов массива
//выходные параметры:
//n - число элементов массива
//V - массив вещественных чисел
int vvod(float V[nmax])
{
    int i;                                     //переменная цикла
    int n;                                     //число элементов массива
    do                                         //выполнить (начало цикла)
    {
        cout<<"Vvedite chislo elementov"<<endl;  //вывод "Введите число элементов"
        cin>>n;                                //ввод n (считать с клавиатуры)
        if (n<=0 || n>nmax)                    //если n меньше или равно 0 или больше nmax
                                               //вывести "Число элементов должно быть между 1 и nmax" 
            cout<<"Chislo elementov dolzno bit' mezdu 1 i "<<nmax<<endl;
    } while (n<1 || n>nmax);                   //пока n не будет в пределах от 1 до nmax
    for (i=0; i<n; i++)                        //цикл от 0 до n-1
    {
        cout<<"Vvedite element "<<i+1<<": ";   //вывод "Введите элемент i+1"
        cin>>V[i];                             //ввод i-го элемента массива
    }
    return n;                                  //функция возвращает n - число элементов массива
}
 
//функция подсчета произведения четных элементов массива
//входные параметры:
//n - число элементов массива
//V - массив элементов
//выходной параметр:
//произведение четных элементов массива
float chetnproizv(int n, float V[nmax])
{
    int i;                                     //счетчик цикла
    float p = 1;                               //начальное значение произведения
    for (i=0; i<n; i++)                        //цикл по всем элементам массива
        if ((i+1) % 2 == 0)                    //если номер четный (делится на 2 без остатка)
            p = p*V[i];                        //умножаем p на этот на элемент
    return p;                                  //возвращаем полученное произведение
}
 
//процедура подсчета суммы элементов между крайним левым и крайним правым нулевыми элементами
//входные параметры:
//n - число элементов массива
//V - массив элементов
void summezdu0(int n, float V[nmax])
{
    int i = 0;                                 //счетчик цикла (задаем ему 1-й элемент массива)
    int k1 = -1, k2 = n;                       //k1 - номер первого нулевого элемента, пока не найден k1=-1
                                               //k2 - номер последнего нулевого элемента, пока не найден k2=n
    float sum = 0;                             //сумма элементов между k1 и k2
    while (i<n && k1==-1)                      //цикл (пока не перебраны все элементы массива с начала
    {                                          //или не найден крайний левый 0)
        if (V[i]==0)                           //если i-й элемент равен 0
            k1=i;                              //запоминаем его номер в k1
        i++;                                   //увеличиваем i на 1
    }                                          //конец цикла
    i = n;                                     //задаем i последний элемент массива
    while (i>=0 && k2==n)                      //цикл (пока не перебраны все элементы массива с конца
    {                                          //или не найден крайний правый ноль)
        if (V[i]==0)                           //если i-й элемент равен 0
            k2=i;                              //запоминаем его номер в k2
        i--;                                   //уменьшаем i на 1
    }                                          //конец цикла
    if (k1==-1 || k2==n || k1==k2)             //если не найдены k1 или k2 или k1=k2
        cout<<"Nedostatochno nuley v massive!"<<endl;  //вывод "Недостаточно нудей в массиве"
    else                                       //иначе
    {
        for (i=k1; i<=k2; i++)                 //цикл от k1 до k2
            sum=sum+V[i];                      //считаем сумму
                                               //вывод "Сумма между первый и последним нулями равна sum"
        cout<<"Summa elementov mezdu pervim i poslednim nulevimi elementami = "<<sum<<endl;
    }
}
 
//процедура преобразования массива (сначала все отрицательные, затем положительные элементы)
//входные параметры:
//n - число элементов массива
//V - исходный массив
//выходные параметры
//Vpr - преобразованный массив
void preobrmas(int n, float V[nmax], float Vpr[nmax])
{
    int i;                                     //счетчик цикла
    int k = 0;                                 //номер текущего элемента преобразованного массива
    for (i=0; i<n; i++)                        //цикл по всем элементам исходного массива
        if (V[i]<0)                            //если i-й элемент V меньше нуля
        {
            Vpr[k]=V[i];                       //k-му элементу Vpr присвоить i-й элемент V
            k++;                               //увеличить k на 1
        }
    for (i=0; i<n; i++)                        //цикл по всем элементам исходного массива
        if (V[i]>=0)                           //если i-й элемент V больше или равен нулю
        {
            Vpr[k]=V[i];                       //k-му элементу Vpr присвоить i-й элемент V
            k++;                               //увеличить k на 1
        }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2010, 12:34     Записать результаты проги в файл
Посмотрите здесь:
Записать результаты работы в файл C++
C++ Считать массив из файла, записать результаты в другой файл
C++ Обработать по формуле значения из двух файлов и записать результаты в файл
Куда записать результаты хеширования? C++
Записать результаты протабулированой функции в массив C++
C++ Как записать результаты работы цикла в переменную?
C++ Нужно записать результаты программы в два файла, а компилятор ругается
Помогите с записью проги в файл C++ Builder
C++ Механизм помещения результатов проги в файл
Записывать в файл результаты C++
C++ Linux Как отследить из проги на Си завершение другой проги
C++ WinAPI Почему результаты не записываются в файл?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
667 / 529 / 45
Регистрация: 05.03.2010
Сообщений: 1,273
12.04.2010, 13:16     Записать результаты проги в файл #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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream.h>
#include <fstream.h>
 
float summezdu0(int, float[]);
 
int main()
{
          int i;
          int n;
          float V[nmax];
          float V1[nmax];
          float p;
          char filename[100];
 
          cout << "Enter file path to write data:\n";
          cin >> filename;
          ofstream fout(filename);
          
                  if(!fout){
                  cout << "Impossible to open file\n";
              return 1;
          }
 
          n = vvod(V);
          p = chetnproizv(n, V);
          cout<<"Proizvedenie chetnih elementov = "<<p<<endl;
          fout<<"Proizvedenie chetnih elementov = "<<p<<endl;
 
          cout<<"Summa elementov mezdu pervim i poslednim nulevimi elementami = "<<summezdu0(n,V)<<endl;
          fout<<"Summa elementov mezdu pervim i poslednim nulevimi elementami = "<<summezdu0(n,V)<<endl;
          cout<<"Ishodnii massiv:"<<endl;
          fout<<"Ishodnii massiv:"<<endl;
          for (i=0; i<n; i++){
                  cout<<V[i]<<"  ";
              fout<<V[i]<<"  ";
          }
          cout<<endl;
          fout<<endl;
          preobrmas(n, V, V1);
          cout<<"Preobrazovannii massiv:"<<endl;
          fout<<"Preobrazovannii massiv:"<<endl;
          for (i=0; i<n; i++){
                      cout<<V1[i]<<"  ";
              fout<<V1[i]<<"  ";
          }
          cout<<endl;
          fout<<endl;
 
          fout.close();
          return 0;
}
 
float summezdu0(int n, float V[nmax])
{
          int i = 0;
          int k1 = -1, k2 = n;
 
 
          float sum = 0;
          while (i<n && k1==-1)
          {
                  if (V[i]==0)
                      k1=i;
              i++;
          }
          i = n;
          while (i>=0 && k2==n)
          {
                  if (V[i]==0)
              k2=i;
              i--;
          }
          if (k1==-1 || k2==n || k1==k2)
                  cout<<"Nedostatochno nuley v massive!"<<endl;
          else
          {
              for (i=k1; i<=k2; i++)
                      sum+=V[i];
          }
          return sum;
}
преобразовал чуть ф-ции: main() и summezdu0()
вводить путь к файлу типа C:\test.txt
содержимое файла:
Proizvedenie chetnih elementov = 0
Summa elementov mezdu pervim i poslednim nulevimi elementami = -4
Ishodnii massiv:
5 9 -2 0 -10 4 2 0 8 12
Preobrazovannii massiv:
-2 -10 5 9 0 4 2 0 8 12
Yandex
Объявления
12.04.2010, 13:16     Записать результаты проги в файл
Ответ Создать тему
Опции темы

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