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

Помогите с задачкой, пожалуйста. (С++)

15.02.2012, 20:18. Показов 1136. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вообщем, программирование только началось, а вопросов куча :\
Помогите, если есть у кого-нибудь желание.
Ближе к задаче: нам дан обычный текстовый файл.. в нём написана информация о номерах телефона.. ну и получается так, что в каждой строке находится информация об одном абоненте: номер телефона, фио, адрес. Нужно написать программу, которая для каждой АТС выводит процент заполненности телефонных номеров. (!)с использованием процедур и функций(!)

Ну как я понял, к каждой АТС может быть подключено 10 000 абонентов, т.е. изменяются 4 последние цифры, поэтому нужно как-то оттолкнуться от первых трех чисел строки..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2012, 20:18
Ответы с готовыми решениями:

Помогите с задачкой.
Поместить элементы массива X в начало массива Y в обратном порядке, исключив элементы, превосходящие по абсолютной величине вводимое...

Помогите с задачкой на С++
Посоветывали обратиться тут....задали в УНивере такую задачу, а я даже не имею представления как ее решать:eek: :( :( Дано...

Помогите с Задачкой
1. Реализовать функцию нахождения всех простых чисел в диапазоне от 1 до 101. Сгенерированные числа сохранить в массиве. Элементы массива...

4
 Аватар для lemegeton
4898 / 2692 / 919
Регистрация: 29.11.2010
Сообщений: 5,780
15.02.2012, 22:34
Попробуем.
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
#include <cstdlib>
#include <ctime>
#include <string>
#include <sstream>
#include <fstream>
#include <iterator>
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <set>
 
class Serializable {
 public:
  virtual std::ostream &serialize(std::ostream &stream) const = 0;
};
 
class Deserializable {
 public:
  virtual std::istream &deserialize(std::istream &stream) = 0;
};
 
std::ostream &operator<<(std::ostream &stream, const Serializable &object) {
  return object.serialize(stream);
}
 
std::istream &operator>>(std::istream &stream, Deserializable &object) {
  return object.deserialize(stream);
}
 
class Record : public Serializable, public Deserializable {
 public:
  Record() : name_(), address_(), phone_() {}
  explicit Record(std::istream &stream) { deserialize(stream); }
  Record(const std::string &name, const std::string &address, size_t phone)
    : name_(name), address_(address), phone_(phone) {}
  const std::string getName() const { return name_; }
  const std::string getAddress() const { return address_; }
  const size_t getPhone() const { return phone_; }
  virtual std::ostream &serialize(std::ostream &stream) const {
    return stream << getName() << ';' << getAddress() << ';' <<
      getPhone() << ';';
  }
  virtual std::istream &deserialize(std::istream &stream) {
    getline(stream, name_, ';');
    getline(stream, address_, ';');
    std::string buffer;
    getline(stream, buffer, ';');
    std::stringstream sstream(buffer);
    sstream >> phone_;
    return stream;
  }
 private:
  std::string name_;
  std::string address_;
  size_t phone_;
};
 
void createSomeRecords(const std::string &filename) {
  std::vector<Record> records;
 
  for (int i = 0; i < 10000; ++i)
    records.push_back(Record("Name", "Address",
      (rand() % 4 + 1) * 1000000 + rand() % 10000));
 
  std::ofstream outfile(filename.c_str());
  std::copy(records.begin(), records.end(),
    std::ostream_iterator<Record>(outfile));
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  const std::string filename = "tutor0090.txt";
 
  // создадим несколько случайных записей
  createSomeRecords(filename);
  
  std::vector<Record> records;
  std::ifstream infile(filename.c_str());
 
  // прочитаем записи из файла
  std::copy(std::istream_iterator<Record>(infile), 
    std::istream_iterator<Record>(), std::back_inserter(records));
 
  // составим карту телефонов по "атс".
  std::map<size_t, std::set<size_t> > phoneNumbers;
  for (std::vector<Record>::iterator i = records.begin();
    i != records.end(); ++i)
    phoneNumbers[i->getPhone() / 10000].insert(i->getPhone() % 10000);
 
  // посчитаем количество номеров для каждой "атс" и процент занятых
  for (std::map<size_t, std::set<size_t> >::iterator i = phoneNumbers.begin();
    i != phoneNumbers.end(); ++i)
    std::cout << "ATS " << i->first << ". " << i->second.size() <<
      " numbers, " << i->second.size() / 100 << "%" << std::endl;
}
1
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 7
16.02.2012, 02:12  [ТС]
Большое спасибо за проделанную работу.. Но всё же у меня огромные трудности с восприятием данной программы, ибо классы не изучал, да и изучить, боюсь, без объяснения лектора, не смогу в скором времени. Собственно, верхняя часть программы мне и вовсе не понятна( Можно ли, хоть как-нибудь, реализовать данную задачу в самом простом и понятном виде?


Не по теме:

ибо нуб

0
 Аватар для lemegeton
4898 / 2692 / 919
Регистрация: 29.11.2010
Сообщений: 5,780
16.02.2012, 09:46
Цитата Сообщение от nameplov Посмотреть сообщение
Можно ли, хоть как-нибудь, реализовать данную задачу в самом простом и понятном виде?
Вам нужно не проще и понятнее, а как можно примитивнее. Называйте вещи своими именами.

Введем ограничение -- в списке нет повторяющихся номеров. В таком случае, можно обойтись без сета. Мап заменит просто массив из тысячи интеджеров. Жертвуем килобайтами ради примитивности. Так же уберем чтение в память, будем считать прямо при чтении из файла. В жертву универсальность, пишем для сферического коня в вакууме, зато без структур и динамической памяти.

Ну и для вящей примитивности, совместимость с чистым С.

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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
 
int main(int argc, char *argv[]) {
  srand(time(0));
  const char filename[] = "tutor2101.txt";
  int i;
 
  // создание файла
  FILE *outfile = fopen(filename, "w");
  if (!outfile) {
    perror("Could not open file.");
    return 1;
  }
  for (i = 0; i < 60000; ++i)
    fprintf(outfile, "%s;%s;%d;\n", "Name", "Address", 
      (rand() % 3 + 1) * 1000000 + i);
  fclose(outfile);
  
  // атс
  int atses[1000];
  for (i = 0; i < 1000; ++i)
    atses[i] = 0;
 
  // чтение/подсчет
  FILE *file = fopen(filename, "r");
  if (!file) {
    perror("Could not open file.");
    return 1;
  }
  char name[512];
  char address[512];
  size_t phone;
  while (!feof(file))
    if (fscanf(file, "%[^;];%[^;];%d;\n", name, address, &phone) == 3)
      ++atses[phone / 10000];
  fclose(file);
 
  // результат
  for (i = 0; i < 1000; ++i)
    if (atses[i] > 0)
      printf("ATS %d has %d phone(s), it is at %.2f%% of capacity.\n",
        i, atses[i], atses[i] / 100.);
 
  return 0;
};
1
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 7
16.02.2012, 10:54  [ТС]
Да, именно то, что я и хотел. Спасибо огромное за проделанную работу!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.02.2012, 10:54
Помогаю со студенческими работами здесь

помогите с задачкой((
в программирование 0, а задачу позарез решить надо в cи++. Народ, помогите! :'( даны n ( n max = 100) разных чисел.Найти среди них 2...

Помогите с олимпиадной задачкой (
Дали мне на написание отчета олимпиадную задачку.. Решение на пару строк.. Пару раз уже код переписывал ниче не получаетсо.. Максимум...

Помогите с простой задачкой.
Есть код: #include &lt;stdio.h&gt; int main() { int x=2; int y; int z; x*=3+2; printf(&quot;x=%d\n&quot;, x); // x = 10

Помогите с действительно простой задачкой.
Дан код: /* Conditional expressions */ #include &lt;stdio.h&gt; #include &lt;iostream&gt; int main() { int x=1; int y=1; int...

не могу справиться задачкой в С++. У кого светлая голова напишите пожалуйста
Задан массив, состоящий из 10 элементов. Из положительных элементов извлечь квадратный корень, отрицательные возвести в квадрат, нулевые...


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

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

Новые блоги и статьи
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Полностью асинхронный счётчик на логике (сумматорах) трёх состояний и асинхронных регистрах трёх состояний. Структура "электронный Buttom Up"
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru