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

Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год - C++

Восстановить пароль Регистрация
 
Rio5
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 86
05.09.2012, 18:33     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #1
Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год.Структура записи файла:
-номер лицевого счета
-фамилия
-номер квартиры
-номер месяца
-сумма платежа
Написать программу выдающую:
-список номеров квартир с фамилиями жильцов ,от которых поступили платежи за указанный месяц.
-суммарное значение поступивших с начала года платежей по заданному номеру лицевого счета или номеру квартиры.
Вложения
Тип файла: txt KURSOVIK.txt (2.0 Кб, 33 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2012, 18:33     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год
Посмотрите здесь:

Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и исходный файл, но в обратном порядке C++
C++ Создать файл, содержащий информацию о студентах
Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла C++
Дан файл , содержащий сведения о книгах. Сведения о каждой из книг – это фамилия автора, название и год издания. а) Найти названия книг данного автор C++
C++ Дан файл , содержащий различные даты. Каждая дата – это число, месяц и год
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rio5
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 86
05.09.2012, 18:46  [ТС]     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #2
Пожалуйста исправьте недочеты
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
05.09.2012, 19:08     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #3
а если платежей за месяц несколько,то всё равно опять пишем номер счёта,квартиры и фамилию?
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
05.09.2012, 19:21     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #4
что означает месяц в структуре? Количество месяцев за которое оплачено или последней месяц за который оплачено? И у тебя в текстовом файле странная строчка цитирую \nxт пациентов, поступивших в заданный день".Это что вообще такое?
Rio5
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 86
05.09.2012, 20:04  [ТС]     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #5
там опечатка: "нет жильцов, поступивших в заданный день"
месяц за который оплачено, если платежей за месяц несколько,то опять пишем номер счёта,квартиры и фамилию

Добавлено через 14 минут
нет жильцов, заплативших за этот месяц
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
05.09.2012, 20:08     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #6
Тебе именно надо исправить твой вариант? Я попробовал его запустить, там много ошибок и стиль написания не совсем современный. Может лучше заново?
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
05.09.2012, 20:12     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #7
разве не разумнее написать номер квартиры,фамилию,номер счёта и потом все платежи для этого абонента
можно даже для каждого абонента свой файл сделать
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
05.09.2012, 20:20     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #8
alexey31415 очень разумное предложение. Можно в файле сделать 12 цифр по количеству месяцев и если допустим стоит число 0, значит за этот месяц не оплачено.

Добавлено через 2 минуты
Например такой файл, у всех не оплачено за декабрь
1 Широков 35 11 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 0
2 Кокорин 36 12 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 0
3 Акинфееф 37 1 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 0
4 Быстров 38 2 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 0
5 Сычёв 39 3 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 0
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
05.09.2012, 20:30     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #9
именно,так можно,кстати,задолженность считать,если вам это понадобится в будущем
а чтобы открывать файл с данными абонента,можно создать файл с названиями тех самых файлов с данными абонента и тогда можно легко определять сколько абонентов,в каких файлах хранится информация
Rio5
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 86
05.09.2012, 20:36  [ТС]     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #10
можно и другой вариант, не обязательно мой переделывать. Просто обязательно нужно с меню это все сделать
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
05.09.2012, 21:34     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #11
Черновой вариант

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
#include <fstream> 
#include <string>
#include <iostream> 
using namespace std; 
 
struct STRUCT 
{ 
    int number;  
    string name; 
    int flat_number;  
    int summa[12];
}; 
 
int main() 
{   
    setlocale(0, "rus");
    unsigned int i, j;
    STRUCT str[5];
    ifstream infile; 
    infile.open("Text.txt");  
    int var, n, x, m; 
    int sum = 0; 
    int count = 0;
 
    while(!infile.eof()) 
    {   
        for ( i = 0; i < 5; i++)
        infile >> str[i].number >> str[i].name >> str[i].flat_number >> str[i].summa[0] 
        >> str[i].summa[1] >> str[i].summa[2] >> str[i].summa[3] >> str[i].summa[4] >>  
            str[i].summa[5] >> str[i].summa[6] >> str[i].summa[7] >> str[i].summa[8] >> str[i].summa[9] >> 
            str[i].summa[10] >> str[i].summa[11]; 
    } 
 
    
    cout << "1) Показать полный список жильцов " << endl; 
    cout << "2) Узнать сумму жильца за весь год (ввод номера квартиры) " << endl; 
    cout << "3) Узнать сумму жильца за весь год (ввод личного номера) " << endl; 
    cout << "4) Узнать фамилии и квартиры жильцов неоплативших за конкретный месяц " << endl; 
    cout << "5) Выход из меню " << endl; 
    cout << endl << endl; 
    cout << "Введите ваш вариант ( 1-5) " << endl; 
    cin >> var; 
 
    switch(var)  
    {
        case 1: 
            for ( i = 0; i < 5; i++) 
            { 
                cout << str[i].name << " "<< str[i].number << " "<< str[i].flat_number << endl; 
                
                for ( j = 0; j < 12; j++) 
                    cout << "Номер Месяца " << j + 1 << "  " << str[i].summa[j] << endl; 
            } 
            break;  
 
        case 2:  
            cout << "Введите номер искомой квартиры " << endl; 
            cin >> n; 
 
            for ( i = 0; i < 5; i++) 
            { 
                if(str[i].flat_number == n)  
                { 
                    x = i;
                    for ( j = 0; j < 12; j++) 
                        sum += str[i].summa[j];  
                }
            } 
            cout << "Сумма за год жильца " << str[x].name << " равна " << sum << endl;  
            break;
 
    case 3:  
        cout << "Введите личный номер жильца " << endl; 
        cin >> n; 
 
        for ( i = 0; i < 5; i++) 
        { 
            if(str[i].number == n) 
            { 
                x = i; 
                for ( j = 0; j < 12; j++) 
                    sum += str[x].summa[j]; 
            } 
        } 
        cout << "Сумма жильца  " << str[x].name << " равна " << sum << endl; 
        break; 
 
    case 4: 
        cout << "Введите номер месяца " << endl; 
        cin >> m; 
 
        for ( i = 0; i < 5; i++) 
            if(str[i].summa[m] == 0)  
            { 
                cout <<"Жильцом " << str[i].name << " за данный месяц не оплачено " << endl;
                  count++;   
            } 
            if( count == 0) 
                cout << "Всеми жильцами данный месяц оплачен " << endl; 
            break; 
    case 5: 
        cout << "До свидания " << endl; 
        exit(1); 
    default: 
        cout << "Вами введено не правильное число " << endl; 
 
} 
 
}
Посмотри что не так, что переделать. Номера квартир с 35 по 39, вот файл

1 Широков 35 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 0
2 Кокорин 36 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 0
3 Акинфееф 37 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 0
4 Быстров 38 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 0
5 Сычёв 39 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 0
Rio5
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 86
06.09.2012, 17:46  [ТС]     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #12
спасибо, что то для себя взять смогу
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2012, 15:52     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год
Еще ссылки по теме:

Массив данных. Дан файл f, содержащий информацию о багаже нескольких пассажиров. Найти: C++
Сформировать файл, содержащий информацию о результатах сдачи сессии C++
Описать класс Cat, содержащий информацию об одном коте (кличка и год рождения) C++

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

Или воспользуйтесь поиском по форуму:
Rio5
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 86
09.09.2012, 15:52  [ТС]     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год #13
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
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
 
#define  DL_FIO 25
#define  DL_LC  10
#define  DL_KV 3
#define  DL_MS 2
#define  DL_PL 5
 
struct man
{  char  nom [DL_LC];
   char fio [DL_FIO];
   char  kvar [DL_KV];
   char  mon [DL_MS];
   char sum [DL_PL+2];
};
 
void plat(FILE *f);
void sumzn(FILE *f);
 
 
 
int main()
{
    FILE *f;
    char n;
    clrscr();
    f= fopen("kv.txt", "r");
    if (f==NULL)
    {  puts ("Файл  kv.txt не найден");
         getch();
       return 1;
    }
    do
    {  puts ("\n========================================================");
       puts ("Выберите номер пункта меню:");
       puts ("1 - вывод списка номеров квартир с фамилими жильцов, от которых поступили платежи за указанный месц");
       puts ("2 - суммарное значение поступивших с начала года платежей по заданному номеру лицевого счета или номеру квартиры");
       puts ("3 - выход");
       puts ("------------------------------------------------------");
       n = getche();
       switch(n)
       {
          case '1': plat(f); break;
          case '2': sumzn(f);break;
          case '3': break;
          default: puts("\nНужно вводить номер пункта от 1 до 3");
       }
       if (n!='3')
       {  puts("\nДл продолжени нажмите любую клавишу");
          getch();
       }
    }
    while (n != '3');
    fclose(f);
    return 0;
}
void plat (FILE *f)
{
    char mon[DL_MS];
    int n=0;
    struct man tz;
 
    puts ("\nВведите месц");
    gets  (mon);
    rewind(f);
    while (fgets((char *)&tz,sizeof(struct man),f)!= NULL)
        if (strncmp(tz.mon,mon, DL_MS-1) == 0 )
        {  if (n==0)
           { puts("№   Фамили И.О.  Квартира№");
             puts("----------------------------");
           }
           tz.kvar[DL_MS-1]='\0';
           printf ("%d. %s\n", ++n, tz.fio);
 
        }
    if (n==0)  puts ("\nнет жильцов, заплативших за указанный месц");
}
 
void sumzn(FILE *f)
{ char nom[DL_LC];
  int s=0,n,x;
  unsigned int i,j;
  struct man tz[3];
  puts("\nvvedite nomer");
  gets(nom);
  rewind(f);
  while(fgets((char *)&tz,sizeof(struct man),f)!=NULL)
  { for(i=0; i<3;i++)
  { if(tz[i].nom==nom)
  { x=i;
  for(j=0;j<1;j++)
  s+=tz[x].sum[j];    }
  }
  }
  printf("\nplat=%d",s);
 
 
}
где ошибка? можете подсказать?
0022001231 Valiev I.I                 49 11 3000
0022001232 Sidorov A.D.             51 10 3400
0022013451 Ivanov P.A.              12 12 4800
 
[size="1"][color="grey"][I]Добавлено через 23 минуты[/I][/color][/size]
void sumzn(FILE *f)
{ char nom[DL_LC];
  int s=0,n,x;
  unsigned int i,j;
  struct man tz;
  puts("\nvvedite nomer");
  gets(nom);
  rewind(f);
  while(fgets((char *)&tz,sizeof(struct man),f)!=NULL)
  { for(i=0; i<5;i++)
  {
 
  s+=tz.sum[i]-'0';    }
 
   tz.sum[6]='\0'; }
  printf("\nplat=%d",s);
 
 
}
в функции где ошибка?
Yandex
Объявления
09.09.2012, 15:52     Дан файл,содержащий информацию о поступлении платежей по квартплате в текущий год
Ответ Создать тему
Опции темы

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