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

не могу разобраться с процедурой ввода и вывода программа рабочая подскажите плиз - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Извлечение корня, длинная арифметика http://www.cyberforum.ru/cpp-beginners/thread363033.html
По заданному натуральному числу А требуется найти наибольшее число В такое, что B^2 <= A. вот набросал, но прога работает медленно. как ее можно оптимизировать или подскажите более быстрый способ. #include <fstream> #include <string> #include <deque> using namespace std; int sravnenie(deque<int>& a,deque<int>& b) {
C++ Найти "средний" по величине делитель числа Надо найти "средний" по величине делитель числа х.Использовать прибавление 1 = + - х :-целочисленное деление и %-остаток от деления. 3.3 Запрещено создавать темы с бессмысленными названиями вроде "Помогите!", "Вопрос" и т.п http://www.cyberforum.ru/cpp-beginners/thread363028.html
странная последовательность C++
Во входном файле записана последовательность чисел в странном формате: у каждого числа сначала записано количество цифр в этом числе, а потом через пробел - сами цифры. Последовательность заканчивается числом 0. В выходной файл нужно вывести сначала количество чисел в последовательности, а потом - сами числа. Количество чисел в последовательности не превышает 1000. В числах - не более 4-х...
Линейные Односвязные Списки С++ C++
Разработать и реализовать программу создания и обработки линейного односвязного списка с одним информационным полем, которое содержит целое число. Программа должна содержать меню с перечнем возможностей работы со списком и выбора соответствующего пункта меню с обращением к функции, реализующей выбранное действие над списком: (меню сама сделаю..мне бы те программки которые ниже..а то я совсем...
C++ написать программу вычисляющие ИМЛ с помощью узлов Чебышева http://www.cyberforum.ru/cpp-beginners/thread363017.html
помоги кто чем может а...cout<<"Help me"<<endl;
C++ Задача с вычислениями по формулам Помогите пожалуйста написать программу для расчёта по двум формулам, результат первой должен совпадать со второй. формулы: {Z}_{1} = \frac{sin2\alpha+sin5\alpha-sin3\alpha}{cos\alpha+1-{2sin}^{2}2\alpha}; {Z}_{2} = 2sin\alpha то есть пользователь вводит величину угла (альфа) например: ввод: 0 вывод: 0.00 0.00 подробнее

Показать сообщение отдельно
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
08.10.2011, 14:44     не могу разобраться с процедурой ввода и вывода программа рабочая подскажите плиз
Разработать схему алгоритма и программу, используя функции с параметрами для ввода массива и его обработки.
В массиве хранятся данные об осадках за месяц. Найти
• Количество дней с осадками больше среднего
вот по этому заданию написали такой код мне, вот сам пытался его полностью понять но кое какие моменты не могу понять посмотрите плиз кто в языке лучше понимает и подскажите, я комменты писал в листинге так как понимаю что выполняет , если не правильно подскажите как на самом деле работает та или иная строка в листинге, вопросы только по основной программе и функции ввода, функцию вывода и ниже которая функция в самом низу пока не затрагиваю мне бы сначала те понять...
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <iostream>
#include <conio.h>
#include <locale>
 
using namespace std;
 
void pInput(int day, char* frame);//это так понимаю прототип функции
void pOutput(char* fname);//прототип
int NumberOfLines(char* fl);// прототип
 
void main()
{
system("color 7B");// цвет фона 
 
do // цикл с пост условием
{
int menu, day;
char filename[] = {"save.txt"};// считывает данные с файла в переменную 
 
cout << endl << "\t\t\t Glavnoe menu programmi" << endl;
cout << endl << " Dla vvoda dannih nagmite 1 :";
cout << endl << " Dla vibora resultatov nagmite 2:" << endl;
cout << endl << "\n Vah vibor: ";
cin >> menu;
 
if (menu == 1)
{
cout << endl << " Vvedite kolichestvo dney v mesace: ";
cin >> day;//количество дней
}
 
switch (menu) //пункт выбора меню при выборе вызов функции
{
case 1: pInput(day, filename); break;
case 2: pOutput(filename); break;
default: cout << endl << " Ошибка при выборе пункта меню!";
}
 
_getch();//задержка экрана
system("cls");// очищение экрана
}
while (true); // ВОТ ТУТ НЕ МОГУ ПОНЯТЬ Почему пишут труе? и как вообще он действует и может 
//применятся в цикле????
}
 
void pInput(int day, char* fname) // процедура ввода с формальными параметрами
{
system("cls");
 
double* Deposits = new double[day]; // вот тут точно не понимаю выделяется память для депозит, 
//и тип ее массив дробный?
FILE *f;
 
for (int n = 0; n < day; n++)
{
cout << endl << " Vvedite dannie za " << n + 1 << "-e hislo: ";
cin >> Deposits[n];// ввод по очереди данные осадков за каждый день
}
 
if ((f = fopen(fname, "w+")) == NULL) // создание текстового файла и если в нем имеются запись
//то стереть и записать новую вот только не пойму почему проверяют равен ли он нулю??
cout << endl << " Nevozmogno zapisat fail!";
else
{
for (int n = 0; n < day; n++)
{
fprintf(f, "%f \n", Deposits[n]);// вот тут что происходит в этой строке не пойму.... вероятно запись
//данных в файла точнее всех дней 
}
}
 
cout << endl << " Dannie uspehno zapisani v fail.";
 
fclose(f);
delete []Deposits; // вот это что за строчка что она выполняет и зачем это нужно?
}
 
void pOutput(char* fname)
{
system("cls");
 
int day = 0, n;
double quantity = 0, summa = 0, middle = 0;
FILE *p;
char* fl = fname;
 
day = NumberOfLines(fl);
 
if (day == -1) return;
 
p = fopen(fname, "r");
 
if (p == NULL) cout << endl << " Невозможно открыть файл!";
else
{
double* Deposits = new double[day];
 
for (n = 0; n < day; n++)
fscanf(p, "%f ", &Deposits[n]);
 
for (n = 0; n < day; n++)
{
if (Deposits[n] == 0) continue;
else
{
quantity++;
summa += Deposits[n];
}
}
 
middle = summa / quantity;
quantity = 0; summa = 0;
 
for (n = 0; n < day; n++)
{
if (Deposits[n] <= middle) continue;
else quantity++;
}
 
for (n = 0; n < day; n++)
{
if (n % 6 == 0) cout << endl;
cout << "\t" << Deposits[n];
}
 
cout << endl << " Srednee znahenie osadkov v dogdlivie dni ravno: " << middle;
cout << endl << " Kolichestvo dnei privihauhih srednee znachenie osadkov: " << quantity;
 
delete []Deposits;
}
 
fclose(p);
}
 
int NumberOfLines (char* fl)
{
int counter = 0;
FILE *ptr;
char temp[100];
 
ptr = fopen(fl, "r");
if (ptr == NULL)
{
cout << endl << " Невозможно открыть файл!";
return -1;
}
 
while (fgets(temp, 100, ptr) != NULL) counter++;
 
fclose(ptr);
return counter;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru