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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2013, 18:14   #1
LizZzaveta
Новичок
Джуниор
 
Регистрация: 04.05.2013
Сообщений: 1
Сообщение классы в Си

помогите пожалуйста.
необходимо создать класс на основе структры.

не выполняется сортировка. подскажите в чем проблема?
Код:
#include <conio.h>
#include <stdio.h>
#include <locale.h>
#include <math.h>
#include <iostream>

using namespace std;
const int N = 3;

class COMMYNAL
{
	// char FIO[30],char Place[30],int r,float Tarif,float Total
	private://закрытые ДАННЫЕ
	char FIO[30];// ФИО коммунальщика
    char Place[30];// адрес
	int r;// количество прописанных человек
	float Tarif;// тариф на человека (руб.)
	float Total; // итого (руб.)
	//МЕТОДЫ
	public://открытые
		COMMYNAL()
		{};// конструктор по умолчанию
		void klava(class COMMYNAL pole[],int n)// функция для ввода с клавиатуры
{
	int i;
	for (i=0; i<n; i++)
	{
	printf("Введите Ф.И.О: ");
	scanf("%s", &pole[i].FIO);
	printf("Введите адрес: ");
	scanf("%s", &pole[i].Place);
    printf("Введите количество прописанных человек: ");
    scanf("%d", &pole[i].r);
	printf("Введите тариф на человека (руб.): ");
    scanf("%f", &pole[i].Tarif);
	printf("\n");
	pole[i].Total = pole[i].r * pole[i].Tarif;
	}
}

		void print(class COMMYNAL pole[],int n)// печать
{
	printf("Ф.И.О		Адрес		кол-во чел.		Тариф		Итого\t\n");
	int i;
	for (i=0; i<n; i++)
	{
	printf("%s		", pole[i].FIO);
	printf("%s		", pole[i].Place);
    printf("%d		", pole[i].r);
	printf("%.2f		", pole[i].Tarif);
	printf("%.2f		", pole[i].Total);
	printf("\n");
	}
}
		void file(class COMMYNAL pole[],int n)
{
	FILE *fp;
	if((fp=fopen("D:\\Red\\schet.txt","r"))==NULL)
	{
		printf("No open file\n");
	}
	int i;
	for(i=0; i<n; i++)
	{
	fscanf(fp, "%s", &pole[i].FIO);
	fscanf(fp, "%s", &pole[i].Place);
	fscanf(fp, "%d", &pole[i].r);
	fscanf(fp, "%f", &pole[i].Tarif);
	pole[i].Total = pole[i].r * pole[i].Tarif;
	}
	fclose(fp);
}
		void selectSort(class COMMYNAL pole[], int n)//сортировка выбором
{
int i,k=0,num_min;
struct COMMYNAL  min,tmp;

while (k<n)
{
	min = pole[k];
	num_min = k;
	//нашли min
	i=k;
	while (i<n)
	{
		if (min.Total > pole[i].Total) 
		{
			min = pole[i];
			num_min = i;
		}
		i++;
	}
	//переставим на позицию k
	tmp = pole[k];
	pole[k] = pole[num_min];
	pole[num_min] = tmp;
	//
	k++;
}
}
		~COMMYNAL()
		{};//деструктор

};		


void main()
{
	setlocale(LC_ALL,"Russian");
		int Z; 
		int n;
		

	class COMMYNAL Base[N];
	printf("Введите 1 или 2: ");
	scanf("%d", &Z);
	COMMYNAL chel;

	/*chel.klava (Base,N);
	chel.file (Base,N);
	chel.print (Base,N);
	chel.selectSort (Base,N);*/
	
	if(Z==1)  
	{
		chel.file (Base,N);
		chel.print (Base,N);
		chel.selectSort (Base,N);
	}
	if (Z==2)
	{
		chel.klava (Base,N);
		chel.print (Base,N);
		chel.selectSort (Base,N);
	}
	



	getch();
}

Последний раз редактировалось Stilet; 05.05.2013 в 17:37.
LizZzaveta вне форума Ответить с цитированием
Старый 05.05.2013, 17:05   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Может проблема в том что ты выводишь данные до сортировки? )
Son Of Pain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы . Zalik Помощь студентам 1 21.02.2011 07:04
СИ++ классы!!! XOKS Помощь студентам 1 27.01.2011 21:08
классы денис николюк Помощь студентам 1 21.01.2011 00:08