0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 33

Доработка операций над данными текстового файла

26.11.2009, 06:34. Показов 848. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем, вот написал прогу:
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
#include <string.h>
#include <stdio.h>
#include <conio.h>
 
struct TMenu{
  char Title [12];
  char Name [10];
  int Place;
  int Cost;
 // int y;
};
 
struct Page{
  TMenu nD;
  Page *next;
  };
 
class CGuest{
  TMenu *z;
  int n;
public:
  CGuest();
  ~CGuest();
  int Init (char *nmFile);
  void Print();
  void Sort();
};
 
CGuest::CGuest(){
  z=NULL;
  n=0;
}
 
CGuest::~CGuest(){
  if (z!=NULL) delete z;
  n=0;
}
 
int CGuest::Init(char *nmFile){
  FILE *f;
  int ok,i;
 
  if (z!=NULL) delete z;
  n=0;
 
  f=fopen(nmFile,"rt");
  if (f==NULL){
    printf ("\nFile ne otkryt");
    return 0;
  }
  ok=fscanf(f,"%d",&n);
  if (ok!=1 || 0>=n){
    printf("\nNet Vvoda N");
    fclose(f);
    return 0;
  }
 
  z=new TMenu[n];
  for (i=0; i<n; i++){
  ok=fscanf(f,"%s%s%d%d"
    ,z[i].Title
    ,z[i].Name
    ,&z[i].Place
    ,&z[i].Cost
    );
   // z[i].y=0;
 
  if (ok!=4){
    printf("\nPlohie dannye");
    fclose(f);
    return 0;
    }
  }
  fclose(f);
  return 1;
}
 
void CGuest::Print(){
  int i;
  printf("\n--------------------");
  for (i=0; i<n; i++){
  printf ("\n%11s%9s%5d%5d"
    ,z[i].Title
    ,z[i].Name
    ,z[i].Place
    ,z[i].Cost
    );
  }
}
/*
void CGuest::Middle(){
  int i,j;
  double s=0;
  for (i=0; i<n; i++) z[i].y=0;+
  for (i=0; i<n; i++){
 
    s=s+z[i].Cost;
  }
  s=s/n;
 
}
  */
int main(void){
  CGuest w;
  clrscr();
  w.Init("Dannye.cpp");
  w.Print();
 // w.Sort();
  //w.Print();
  getch();
  return 0;
}
Она берёт данные из файла Dannye.cpp, где указаны наименования гостиниц (1 столбец), фамилии проижвающих (2), кол-во мест в номере (3) и цена за день (4).
Code
1
2
3
4
5
6
7
6
Khabarovsk1  Trifonov   3 5000
Khabarovsk1  Samsonov   4 3000
Khabarovsk1  Panov      2 4000
Arzamas      Stepanov   3 5000
Arzamas      Fedorov    4 4000
Arzamas      Irhin      2 9000
Не понимаю, как посчитать среднюю стоимость проживания в КАЖДОЙ гостинке в день.
Также нужно сортировать список проживающих по КАЖДОЙ гостинке и выполнить сортировку всех записей по выбранным трём полям... Как это всё доделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.11.2009, 06:34
Ответы с готовыми решениями:

Организовать перевод чисел из 10 системы в 2,8,16,32 а также выполнение простых арифметических операций (+-/*) над данными числами
Прилагаю исходник программы (то что сделано). Не знаю только как организовать перевод чисел в эти СС. Выполнение арифметических...

Заполнить данными из текстового файла QTableWidget
Помогите плиз, натолкните на правильную мысль, не могу понять как заполнить таблицу из файла Добавлено через 37 минут ...

Сравнение текстового файла с данными edit
Доброго времени суток. Глобальная задача создать кроссворд. Локальная осуществить проверку слов. Имеется 1)файл где в каждой...

7
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
26.11.2009, 10:03
Цитата Сообщение от Alladin
Не понимаю, как посчитать среднюю стоимость проживания в КАЖДОЙ гостинке в день.
сложи тех, кто проживает, по суммам, которые они платят и раздели на количество

Цитата Сообщение от Alladin
Также нужно сортировать список проживающих по КАЖДОЙ гостинке
нужно переставлять сами структуры, но сравнивать второе поле (функция сравнения может быть, которая передаётся в функцию перестановки), был тут ещё способ - сразу всё в одной функции делать, и сравнивать, и переставлять

по трём полям - непонятно
0
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 33
26.11.2009, 10:59  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
сложи тех, кто проживает, по суммам, которые они платят и раздели на количество


нужно переставлять сами структуры, но сравнивать второе поле (функция сравнения может быть, которая передаётся в функцию перестановки), был тут ещё способ - сразу всё в одной функции делать, и сравнивать, и переставлять

по трём полям - непонятно
Нет... ну... естественно, что именно так находится! А как это в программе написать? Мы же должны посчитать отдельно по гостинкам, а не всех сразу.
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
27.11.2009, 03:24
сначала сортируешь по гостинкам (все записи) и потом, пока такая-то гостинка, складываешь её жителей
юзаешь cpp - переходи на string вместо символьных массивов, так как там для сравнения названий можно применить операцию ==
в C - функцию strcmp
массив приготовил для средних значений ?
0
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 33
27.11.2009, 04:19  [ТС]
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
/*
void CGuest::Middle(){
  int i,j;
  double s=0;
  for (i=0; i<n; i++) z[i].y=0;+
  for (i=0; i<n; i++){
 
    s=s+z[i].Cost;
  }
  s=s/n;
 
}
  */
Вот тут надо что-то нахимичить для подсчёта средней стоимости...
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
27.11.2009, 10:28
предположим, это было бы правильно, куда сохранять тогда среднее значение для каждой гостиницы
s остаётся внутри метода, надо его где-то сохранять и так для каждой гостиницы
а у тебя даже массива гостиниц нету или массива их средних значений
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
27.11.2009, 11:13
Цитата Сообщение от Alladin Посмотреть сообщение
Вот тут надо что-то нахимичить для подсчёта средней стоимости...
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 <string.h>
#include <stdio.h>
#include <conio.h>
 
struct TMenu{
  char Title [12];
  char Name [10];
  int Place;
  int Cost;
 // int y;
};
 
struct Page{
  TMenu nD;
  Page *next;
  };
 
class CGuest{
  TMenu *z;
  int n;
public:
  CGuest();
  ~CGuest();
  int Init (char *nmFile);
  void Print();
  void Sort();
  void Middle();
};
 
CGuest::CGuest(){
  z=NULL;
  n=0;
}
 
CGuest::~CGuest(){
  if (z!=NULL) delete z;
  n=0;
}
 
int CGuest::Init(char *nmFile){
  FILE *f;
  int ok,i;
 
  if (z!=NULL) delete z;
  n=0;
 
  f=fopen(nmFile,"rt");
  if (f==NULL){
    printf ("\nFile ne otkryt");
    return 0;
  }
  ok=fscanf(f,"%d",&n);
  if (ok!=1 || 0>=n){
    printf("\nNet Vvoda N");
    fclose(f);
    return 0;
  }
 
  z=new TMenu[n];
  for (i=0; i<n; i++){
  ok=fscanf(f,"%s%s%d%d"
    ,z[i].Title
    ,z[i].Name
    ,&z[i].Place
    ,&z[i].Cost
    );
   // z[i].y=0;
 
  if (ok!=4){
    printf("\nPlohie dannye");
    fclose(f);
    return 0;
    }
  }
  fclose(f);
  return 1;
}
 
void CGuest::Print(){
  int i;
  printf("\n--------------------");
  for (i=0; i<n; i++){
  printf ("\n%11s%9s%5d%5d"
    ,z[i].Title
    ,z[i].Name
    ,z[i].Place
    ,z[i].Cost
    );
  }
}
 
void CGuest::Middle(){
  int i,j, fl, count;
  double s=0;
  for (i=0; i<n; i++)
  {
      fl=0;
      for (j=0; j<i; j++)
          if(!strcmp(z[i].Title,z[j].Title))
              fl=1;
      if(!fl)
      {
          s=z[i].Cost;
          count=1;
          for (j=i+1; j<n; j++)
              if(!strcmp(z[i].Title,z[j].Title))
              {
                  s+=z[j].Cost;
                  count++;
              }
          printf("\nSrednyy cena %s =%lf", z[i].Title, s/count);
      }
  } 
}
 
 
int main(void){
  CGuest w;
//  clrscr();
  w.Init("Dannye.cpp");
  w.Print();
  w.Middle();
 // w.Sort();
  //w.Print();
  getch();
  return 0;
}
1
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
27.11.2009, 13:54
Цитата Сообщение от Alladin Посмотреть сообщение
Также нужно сортировать список проживающих по КАЖДОЙ гостинке
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
#include <string.h>
#include <stdio.h>
#include <conio.h>
 
struct TMenu{
  char Title [12];
  char Name [10];
  int Place;
  int Cost;
 // int y;
};
 
struct Page{
  TMenu nD;
  Page *next;
  };
 
class CGuest{
  TMenu *z;
  int n;
public:
  CGuest();
  ~CGuest();
  int Init (char *nmFile);
  void Print();
  void Sort();
  void Middle();
};
 
CGuest::CGuest(){
  z=NULL;
  n=0;
}
 
CGuest::~CGuest(){
  if (z!=NULL) delete z;
  n=0;
}
 
int CGuest::Init(char *nmFile){
  FILE *f;
  int ok,i;
 
  if (z!=NULL) delete z;
  n=0;
 
  f=fopen(nmFile,"rt");
  if (f==NULL){
    printf ("\nFile ne otkryt");
    return 0;
  }
  ok=fscanf(f,"%d",&n);
  if (ok!=1 || 0>=n){
    printf("\nNet Vvoda N");
    fclose(f);
    return 0;
  }
 
  z=new TMenu[n];
  for (i=0; i<n; i++){
  ok=fscanf(f,"%s%s%d%d"
    ,z[i].Title
    ,z[i].Name
    ,&z[i].Place
    ,&z[i].Cost
    );
   // z[i].y=0;
 
  if (ok!=4){
    printf("\nPlohie dannye");
    fclose(f);
    return 0;
    }
  }
  fclose(f);
  return 1;
}
 
void CGuest::Print(){
  int i;
  printf("\n--------------------");
  for (i=0; i<n; i++){
  printf ("\n%11s%9s%5d%5d"
    ,z[i].Title
    ,z[i].Name
    ,z[i].Place
    ,z[i].Cost
    );
  }
}
 
void CGuest::Middle(){
  int i,j, fl, count;
  double s=0;
  for (i=0; i<n; i++)
  {
          fl=0;
          for (j=0; j<i; j++)
                  if(!strcmp(z[i].Title,z[j].Title))
                          fl=1;
          if(!fl)
          {
                  s=z[i].Cost;
                  count=1;
                  for (j=i+1; j<n; j++)
                          if(!strcmp(z[i].Title,z[j].Title))
                          {
                                  s+=z[j].Cost;
                                  count++;
                          }
                  printf("\nSrednyy cena %s =%lf", z[i].Title, s/count);
          }
  } 
}
 
void CGuest::Sort(){
  int i,j, fl;
  printf("\n");
  for (i=0; i<n; i++)
  {
          fl=0;
          for (j=0; j<i; j++)
                  if(!strcmp(z[i].Title,z[j].Title))
                          fl=1;
          if(!fl)
          {
              printf("%s:::\n", z[i].Title);
                 for (j=i; j<n; j++)
                          if(!strcmp(z[i].Title,z[j].Title))
                              printf("%s\n", z[j].Name);
          }
  } 
}
 
 
int main(void){
  CGuest w;
//  clrscr();
  w.Init("Dannye.cpp");
  w.Print();
  w.Middle();
  w.Sort();
  //w.Print();
  getch();
  return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2009, 13:54
Помогаю со студенческими работами здесь

Чтение нескольких строк из файла, выполнение над ними операций и обратная запись в файл
В файле есть несколько строк, например: 1) 2+3; 2) 4/2; 3) 5*6. Программа должна считать эти строки из файла и посчитать эти значения....

Открытие текстового файла для работы с его данными
Доброго вечера. Задача такая: по нажатию на кнопку, должно открываться диалоговое окно с открытием директории выбора текстового файла для...

Доказать равенства, используя свойства операций над множествами и определения операций
Доказать равенства, используя свойства операций над множествами и определения операций. Дальше как не пробовал, не могу привести к...

Доказать равенства, используя свойства операций над множествами и определения операций
Доказать равенства, используя свойства операций над множествами и определения операций. A\subseteq C, B\subseteq D \Rightarrow A\times...

Доказать равенства, используя свойства операций над множествами и определения операций
Доказать равенства, используя свойства операций над множествами и определения операций. б) Ax(B\C)=(AxB)\(AxC). Почему график не...


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

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

Новые блоги и статьи
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru