Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2011, 00:10   #1
MarksmaN-vip
 
Регистрация: 23.12.2010
Сообщений: 3
По умолчанию Реализация программы, с использованием классов C++.

Доброго времени суток.

Прошу помочь, реализовать программу указанную ниже, с использованием классов. Заранее благодарю.

Программа суммирует наибольшие значения её столбцов.

Код:
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <fstream.h>

//==========================================================
void generate_matrix(int a[10][10], int n, int m)
{
 srand((unsigned)time(NULL));
 for (int i = 0; i < n; i++)
  for (int j = 0; j < m; j++)
   a[i][j] = rand()%20;
}
//===========================================================
int max_col(int a[10][10],int n, int k)
{
 int max = -32600;
 for (int i = 0; i < n; i++)
  if (a[i][k] > max)
   max = a[i][k];
 return max;
}
//============================================================
int sum_max(int a[10][10],int n, int m)
{
 int sum = 0;
 for (int j = 0; j < m; j++)
  sum+=max_col(a,n,j);
 return sum;
}
//============================================================
void print_m()
{
 clrscr();
 char str;
 char name[20];
 cout<<"Введите имя файла: ";
 gets(name);
 cout<< endl <<"Содержимое файла: "<<endl<<endl;
 ifstream f1(name);
  while(f1.get(str))
  {
   cout << str;
  }
 cout<<endl<<endl;
}
//=============================================================
void write_to_file()
{
 clrscr();
 int n,m;
  char name[20];
  cout<< "Введите имя файла(на конце .txt): ";
  gets(name);
  cout << "Введите количество строк матрицы: ";
  cin >> n;
  cout << "Введите количество столбцов матрицы: ";
  cin >> m;
  int a[10][10];
  generate_matrix(a,n,m);
  FILE *f = fopen(name,"w");
  for (int i = 0; i < n; i++)
   {
    for (int j = 0; j < m; j++)
     fprintf(f,"%d ",a[i][j]);
    if(i != n-1)
     fprintf(f,"\n");
   }
  fclose(f);
}
//=============================================================
void menu()
{
 cout << "============MENU===========" << endl;
 cout << "1. Ввод элементов матрицы |" << endl;
 cout << "2. Обработка файлов       |" << endl;
 cout << "3. Просмотр файла         |" << endl;
 cout << "4. Выход                  |" << endl;
 cout << "===========================" << endl;
}
//==============================================================
void read_from_file()
{
  clrscr();
  char name[20];
  cout<<"Введите имя открываемого файла: ";
  gets(name);
  ifstream in(name);
  int cnt = 0;
  int d;
  while(!in.eof())
  {
	in >>d;
	cnt++;
  }

  char buf[256];
  int rows_cnt = 0;
  in.close();
  in.clear();
  in.open(name);

  while (!in.eof())
  {
	in.getline(buf,256);
	rows_cnt++;
  }

  in.close();
  in.clear();
  char fname[20];
  cout<<"Введите имя файла для записи результата(в конце .txt) ";
  gets(fname);
  ofstream out(fname);
  int cols_cnt = cnt/rows_cnt;
  int a[10][10];
  in.open(name);
  for (int i = 0; i < rows_cnt; i++)
  {
	for (int j = 0; j < cols_cnt; j++)
	{
	 in >> a[i][j];
	 out << setw(4) <<a[i][j];
	}
	 out << endl;
  }
    out <<endl << "Сумма максимальных элементов столбцов: " << sum_max(a,rows_cnt,cols_cnt);
  out.close();
}
//================================================================
void main()
{
 clrscr();
 char answer;
 do
 {

  menu();
  answer = getch();
  switch(answer)
  {
	case '1':
		{
		 write_to_file();
		 break;
		}
	case '2':
		{
		 read_from_file();
		 break;
		}
	case '3':
		{
		 print_m();
		 break;
		}
  }
 }
 while (answer!='4');
}

Последний раз редактировалось MarksmaN-vip; 10.06.2011 в 00:48.
MarksmaN-vip вне форума Ответить с цитированием
Старый 10.06.2011, 08:20   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от MarksmaN-vip Посмотреть сообщение
Доброго времени суток.

Прошу помочь, реализовать программу указанную ниже, с использованием классов. Заранее благодарю.

Программа суммирует наибольшие значения её столбцов.
Ну и пусть себе суммирует. Вам то что?
Если переделать под классы, это во-фриланс за денюжки.
А помочь, не значит "сделать за Вас".
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 10.06.2011, 10:55   #3
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Читаешь что такое классы, это вот что такое
Код:
class Matrix{
public:
  ...
private:
  ...
};
У классы длжны быть поля (данные, как в структуре). В твоем случае это, видимо, int a[10][10], int n, int m.
Потом у класса должны быть методы (функции, вызываемые как Object.Function()). Делаешь generate_matrix, max_col, sum_max и т.д. методами класса.
Вот и все)
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 10.06.2011, 13:07   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Granus Посмотреть сообщение
У классы длжны быть поля
Потом у класса должны быть методы
Ничего из этого у класса быть не должно
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 10.06.2011, 14:21   #5
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
Сообщение от Blade
Ничего из этого у класса быть не должно
Мм. Ну не так выразился, согласен)
Просто глупо создавать класс, а данные хранить где-нибудь в переменных и вместо методов делать функции. Поэтому должны с логической точки зрения)
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 10.06.2011, 15:50   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Granus Посмотреть сообщение
Мм. Ну не так выразился, согласен)
Просто глупо создавать класс, а данные хранить где-нибудь в переменных и вместо методов делать функции. Поэтому должны с логической точки зрения)
Даже с логической не должны. Почитайте хорошую книгу по ООП, поймите для чего нужны классы, и поймете что вполне логично делать некоторые классы без членов-данных или без методов
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 10.06.2011, 16:04   #7
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Ох, любите же Вы, Blade, придираться к словам)
Более точно: мне кажется, в данной задаче создавать пустой класс действительно глупо)
"с использованием классов" - имелся в виду класс матрицы, я полагаю)
Updated
С ООП работаю на так давно, но зачем нужны "классы без членов-данных или без методов" понимаю)
Форматируйте код, будьте людьми.

Последний раз редактировалось Granus; 10.06.2011 в 16:07.
Granus вне форума Ответить с цитированием
Старый 10.06.2011, 18:06   #8
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Granus Посмотреть сообщение
Ох, любите же Вы, Blade, придираться к словам)
Очень люблю!
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 10.06.2011, 18:14   #9
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
С ООП работаю на так давно, но зачем нужны "классы без членов-данных или без методов" понимаю)
Да? В таковом случае объясните, зачем они нужны. Ведь есть же структуры? Послушаем, покритикуем.

Последний раз редактировалось _-Re@l-_; 10.06.2011 в 19:06.
_-Re@l-_ вне форума Ответить с цитированием
Старый 10.06.2011, 20:19   #10
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Ох, господи, превратили тему в выяснение моих знаний)
Структуры, по определению (Страуструпа), это классы, в которых все поля и методы по умолчанию public.
Соответственно, классы нужны когда есть что скрывать (в смысле внутренне представление от программистов, которые могут с чем-нибудь накосячить).
А насчет "классов без членов-данных или без методов": я не сказал, что четко знаю, для чего они нужны. Просто понимаю, что могут быть ситуации, когда нужны классы без данных или без методов, просто четко не представляю себе таких ситуаций) Ну например некий класс, являющийся предком целой иерархии других классов, и у него есть некий метод, общий для всех классов-потомков, возможно, виртуальный.

PS
_-Re@l-_ - ава хороша)
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
АТД: Реализация списка с использованием указателей Suslik963 Помощь студентам 1 17.11.2010 10:06
Реализация классов. С++ Miito Фриланс 1 21.05.2010 20:04
Исправить программу с использованием классов Vikylik Общие вопросы C/C++ 3 18.01.2010 21:41
Создание классов с использованием конструкторов различного типа Катюшенька Помощь студентам 0 30.04.2009 20:21
Реализация объєктно-ориентированого подхода при разработке программы (с использованием нотации Буча) Vikk22 Помощь студентам 3 18.11.2007 19:53