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

Счет за электроэнергию - C++

Восстановить пароль Регистрация
Другие темы раздела
C (СИ) Табулирование функции. http://www.cyberforum.ru/cpp-beginners/thread255074.html
Только начал изучать с++, дали вот такое задание - протабулировать функцию в N - равностоящих точках Начальные условия: N=12 a=10 xn=2 xk=6 y= ln(abs(a-x))/(ln(a+2)+ln(x)) Текст программы:
C (СИ) Форматирование массива в Си Пусть дано 100 целых чисел. Напечатайте сначала все отрицательные из них, а потом все остальные. прошу код на Си http://www.cyberforum.ru/cpp-beginners/thread254787.html
превышен временной лимит C (СИ)
Есть задача: Дан массив из n элементов, упорядоченный в порядке неубывания и m запросов!: найти первое и последнее вхождение числа в массив. Под эту задачу у меня получилось.... #include <stdio.h> #include <conio.h> int main() { long n,m,i,x,a1=-1,a2=-1,first,last;
псевдомассивы си C (СИ)
из массива удалить все нечетные элементы с помощью перезаписи в другой массив, число заполняются рандомно.
C (СИ) Вычислить стоимость разговоров(TC) http://www.cyberforum.ru/cpp-beginners/thread254448.html
Написать программу вычисления стоимости междугородного тел. разговора (ТАБЛИЦА в 3 СТОЛБИКА 1-КОД ГОРОДА 2-цена за минуту 3-длительность ) Цена зависит от расстояния Исходные данные: код города длительность разговора вот мой недоделанный пример
C (СИ) Найти L-норму матрицы Всем привет, извините, что обращаюсь с такой глупостью, но никак не могу разобраться в чём ошибка в программе. для динамического массива программа всё считает правильно, а со статическим у меня беда, программа не запускается, никак не могу понять почему, подскажите пожалуйста, что нужно изменить в функции func1? #include <stdlib.h> #include <stdio.h> #include <math.h> #include <conio.h>... подробнее

Показать сообщение отдельно
tosha_prog
0 / 0 / 1
Регистрация: 28.01.2016
Сообщений: 11
28.01.2016, 22:40     Счет за электроэнергию
Для того, чтобы был бинарник финальный вариант такой (пусть модераторы выше 2 части кода удалят)+кинуть файл tarif.txt в папку с прогой:
Код не уместился. Разбил на части
ЧАСТЬ 1:
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
#include <iostream>
#include <istream> // для корректной работы getline cin.ignore
#include <cstdlib> // для exit() и для Rand-случайный номер лицевого счета
#include <string>
#include <conio.h> //Для того, чтобы сработал clrscr();
#include <fstream>
#include <windows.h>
#include <string.h>
#include <ctime>// для подключения системного времени
#include <graphics.h>
#include <stdio.h>
 
 
using namespace std;
 
/* создали структуру, включающую информацию о клиентах*/
struct klients{ char fio[200]; /* ФИО*/
                char street[200];  /* улица*/ 
                int home, flat; /* Дом, квартира*/
                int tm_mday0, tm_mday1; //день месяца, 1-31
                int tm_non0, tm_non1;   //месяц, начиная с января, 0-11
                int tm_year0, tm_year1; //год после 1900
                int S0  /* Нач показание счетчика*/;
                int S1 /* Конечное показание счетчика*/,S /* Общий расход эл энергии*/;
                float X1;// сумма оплаты
                int random_chet;// номер лицевого счета
                
                };
struct List// новая структура для списка, в которой хранятся массивы структур (dat) и указатель на этот элемент List
       {
           klients dat;
           List * next;
       };
klients klients1[100];//создали массив структур с именем массива структур klients1
FILE *f;//Имя потоковой переменной
 
void readfile(int &count)// создаем файл данных
{
     FILE *f = fopen("clients.dat","rb+");//открываем бинарный файл для чтения
     if (f)
     {
           count=0;
           while(fread(&klients1[count],sizeof(klients),1,f)) //процесс считывания из файла
                count++;
     }
     if (!f) printf("Нет файла данных!");getchar();//если файла данных не создан, сообщаем
}    
 
// Меню программы
int prompt_menu_item()
{
    // Выбранный вариант менюж
    int variant;
    cout << "Выберите вариант\n" << endl;
    cout << "1. Ввод данных и выписка счета в файле\n"
         << "2. Клиенты, не оплатившие счета вовремя\n"
         << "3. Вывод списка всех клиентов в порядке убывания общего расхода эл. энергии\n"
         << "4. Сортировка списка неплательщиков в алфавитном порядке\n"
         << "5. Создание связаного списка.Его просмотр\n"
         << "6. Сортировка списка\n"
         << "7. Поиск\n"
         << "8. Графика\n"
         << "9. выйти\n" << endl;
    cout << ">>> ";
    cin >> variant;
    return variant;
}
 
 
int input (klients klients1[], int t)
 
        {
        float pr;
        int i=0;
        //int t=0;// здесь заккоментировали, т.к. файл может существовать, тогда из функции readfile вернется количество записанных структур
        ofstream fout;
        fout.open("chet.txt");//создали файл счета
        if (!f) f=fopen("clients.dat","wb+");//Если бинарного файла не существует, то создаем и записываем информацию
        else f=fopen("clients.dat","ab+"); //fseek(f,0,2); Иначе если бинарный файл есть, открываем его для добавления
        do
        {cin.ignore();// игнорируем enter после выбора варианта для корректной работы getline                       
        cout << "Введите ФИО:";
        
        cin.getline(klients1[i].fio,sizeof(klients1[i].fio));
                                cout << "Введите улицу:";
                                cin.getline(klients1[i].street,sizeof(klients1[i].street));// ввод улицы
                                cout << "Введите дом:" ;
                                (cin >> klients1[i].home).get();// ввод дома
                                cout << "Введите квартиру:";
                                (cin >> klients1[i].flat).get();// ввод квартиры
                                cout << "Введите начальное показание счетчика:";
                                (cin >> klients1[i].S0).get();// ввод начального показания счетчика
                                cout << "Введите начальный день месяц дата:";
                                (cin >> klients1[i].tm_mday0).get();// ввод начального дня
                                (cin >> klients1[i].tm_non0).get();// ввод начального месяца
                                (cin >> klients1[i].tm_year0).get();;// ввод начального года
                                cout << "Введите конечное показание счетчика:";
                                (cin >> klients1[i].S1).get();// ввод конечного показания счетчика
                                cout << "Введите конечный день месяц дата:";
                                (cin >> klients1[i].tm_mday1).get();// ввод конечного дня
                                (cin >> klients1[i].tm_non1).get();// ввод конечного месяца
                                (cin >> klients1[i].tm_year1).get();// ввод начального года
                                cout << "Введите номер лицевого счета:";
                                srand(time(NULL)); //запуск счетчика РАНДОМ
                                klients1[i].random_chet=rand();// ввод номера лицевого счета рандом
                                //cout << "Номер лицевого счета:";
                                //(cin >> klients1[i].random_chet).get();
                                klients1[i].S=klients1[i].S1-klients1[i].S0;    //общий расход электроэнергии
                                t++; //Число элементов массива для сортировки                
            
        int c[4];// Обьявляем массив тарифов с переменными с1,с2,с3. Взял с запасом 5 значений емкости массива
        fstream F; 
        F.open("tarif.txt");//открываем файл tarif в режиме чтения
        if (F) //если открытие файла прошло корректно, то
            {//цикл для чтения из текстового файла. Выполнение цикла прервется, когда достигнем конца файла. EOF- будет истина
                while (!F.eof())
                                {//чтение в переменную а очередного значения из потока F
                                for(int k=0;k<3; k++)
                                                    {F>>c[k];
                                                    
                                                    }   
                                }
                                
            if ((klients1[i].S)<=100) // Проверка показаний и рассчет в соответствии с тарифами         
                        {
                        klients1[i].X1=c[0]*(klients1[i].S);
                        
                        }
            if (((klients1[i].S-100)<=150)&&((klients1[i].S-100)>0))
                        {
                        klients1[i].X1=c[1]*(klients1[i].S);
                        }
            if (((klients1[i].S)-100-150)>0)
                        {
                        klients1[i].X1=c[2]*(klients1[i].S);
                    
                        }
                                
                F.close();              //закрытие потока
            }
            
        else cout<<" Файла тарифов не существует"<<endl;
                 
        fout<<"Счет:"<<klients1[i].random_chet<<endl;
        fout<<klients1[i].fio<<endl;//Ввод информации о клиенте в файл
        fout<<"Адрес: "<<klients1[i].street<<",дом: "<<klients1[i].home<<",кв: "<<klients1[i].flat<<endl;
        fout<<"Начальное показание счетчика: "<<klients1[i].S0<<" Начальная дата: "<< klients1[i].tm_mday0<<"."<<klients1[i].tm_non0<<"."<<klients1[i].tm_year0<<endl;
        fout<<"Конечное показание счетчика:"<<klients1[i].S1<<" Конечная дата:"<< klients1[i].tm_mday1<<"."<<klients1[i].tm_non1<<"."<< klients1[i].tm_year1<<endl;
        fout<<"Общий расход (кВт/ч): "<<klients1[i].S<<endl;
        fout<<"Сумма оплаты: "<<klients1[i].X1<<endl;
        fout<<"_______________________________________________________________________________________________________ "<<endl;
        fwrite(&klients1[i],sizeof(klients),1,f);    
        i++;
        cout<<"Создать новую запись (y/n)--->"; scanf("%f",&pr);
        pr=getchar();
        system("CLS");  //ОЧИСТКА ЭКРАНА
    
        }
        while (pr=='y');
        
    return  t;// Возвращаем главной функции число элементов массива для сортировки
        }
 
void dolg (struct klients klients1[],int t) 
            {
            ofstream fout;
            fout.open("dolg.txt");//создали файл должников
            for (int i=0;i<t;i++)
                    {           
                    if ((klients1[i].tm_non1-klients1[i].tm_non0)>=2)
                        {   fout<<"Счет:"<<klients1[i].random_chet<<endl;
                            fout<<klients1[i].fio<<endl;//Ввод информации о клиенте в файл
                            fout<<"Адрес: "<<klients1[i].street<<",дом: "<<klients1[i].home<<",кв: "<<klients1[i].flat<<endl;
                            fout<<"Начальное показание счетчика: "<<klients1[i].S0<<" Начальная дата: "<< klients1[i].tm_mday0<<"."<<klients1[i].tm_non0<<"."<<klients1[i].tm_year0<<endl;
                            fout<<"Конечное показание счетчика:"<<klients1[i].S1<<" Конечная дата:"<< klients1[i].tm_mday1<<"."<<klients1[i].tm_non1<<"."<< klients1[i].tm_year1<<endl;
                            fout<<"Общий расход (кВт/ч): "<<klients1[i].S<<endl;
                            fout<<"Сумма оплаты: "<<klients1[i].X1<<endl;
                            fout<<"_______________________________________________________________________________________________________ "<<endl;
                        }
            
                    }
            }
 
/*------Сортировка Фон-Неймана--------*/
 
void Merge(struct klients klients1[], int first, int last) //подпрограмма слияния
{
  int middle, start, final, j;
  struct klients klients2[100];// ввели новую псевдоструктуру
 
  middle=(first+last)/2; //делим массив
  start=first;//начало левой части
  final=middle+1;//начало правой части
  for(j=first; j<=last; j++)// Цикл j=first до last выполнять //от начала до конца
  if ((start<=middle) && ((final>last) || (klients1[start].S>klients1[final].S)))
  {
    klients2[j]=klients1[start];//Начало условного оператора
    start++;//Увеличить start на 1
  }
  else
  {
    klients2[j]=klients1[final];
    final++; //Увеличить final на 1
  }
  for (j=first; j<=last; j++) klients1[j]=klients2[j]; //Цикл j=first до last выполнять // возвращение результата в основную структуру
 
}
 
void sort_neiman (struct klients klients1[], int first, int last) 
// Данная подпрограмма осуществляет разбивку массива структур на 2 части и вызов слияния (подпрограмма merge. см.выше)
//struct klients klients1[] – структура, first – номер первого элемента (передали 0), last – номер последнего элемента (передали k из ф-ии main)
{
  if (first<last)
                 {
                 sort_neiman(klients1, first, (first+last)/2);
                 sort_neiman(klients1, (first+last)/2+1, last);
                 Merge(klients1, first, last);
                 }
 
}
/*------------------------------------------------------------------------*/
 
/*-Сортировка списка неплательщиков в алфавитном порядке пузырьковая сортировка-*/ 
void bubbleSort (struct klients klients1[],int n)
{
 
struct klients klients2[100];//временная структура
    
for (int k=0; k<n; k++)// начинаем проверять должников
if ((klients1[k].tm_non1-klients1[k].tm_non0)>=2)
{
 
for (int i=1; i<n; i++)//сама сортировка с 1 элемента.Фискасция
{
 
    for ( int j=0; j<n-1; j++)//Начинаем сравнивать попарно фискированный элемент с другими
    {
    
    if ((strcmp(klients1[j].fio,klients1[j+1].fio)>0)) // функция сравнения строк.Упорядочивание по алфавиту
        {
        /*Процесс обмены элементов местами*/
        klients2[i] = klients1[j];
        klients1[j] = klients1[j+1];
        klients1[j+1] = klients2[i];
        }
    }
}
cout<<klients1[k].fio<<endl;//Вывод на экран должников. Структуры уже отсортированы по алфавиту
}
}
 
Текущее время: 22:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru