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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2014, 09:20   #1
Ligeros905
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 33
По умолчанию Работа с классами в C++

Здравствуйте, помогите пожалуйста дописать код. В функции main надо после ввода данных запустить функцию поиска фамилии с оценкой 2 и предложением пользователю удалить ее. Никак не могу врубиться как это написать
Код:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <stdio.h>
#include <conio.h>
#include <string.h>

using namespace std;

//Стуктура динамического однонаправленного списка
struct node{
	string name;
	int rate;
	node *next;
};


//Отдельно функции
/*
//Добавление записи
void add(node **head, string name, int rate){
	node *_new = new node;
	_new->name = name;
	_new->rate = rate;
	_new->next = (*head);
	(*head) = _new;
}

//Вывод
void show(node **head){
	cout << "Журнал:" << endl;
	node *cur = (*head);
	while (cur != NULL){
		cout << "Имя: " << cur->name << "  Оценка: " << cur->rate << endl;
		cur = cur->next;
	}
}

//Удаляет двоичника с фамилией - name
void del(node **head,string name){
	if ((*head) == NULL)cout << "Список пуст";
	else{
		if ((*head)->name == name)(*head) = (*head)->next;
		else{
			node *cur = (*head);
			node *prev = NULL;
			while (cur != NULL){
				if (cur->name == name){
					prev->next = cur->next;
				}
				prev = cur;
				cur = cur->next;
			}
		}
	}
}


*/


class journal{
private:
	node *head;
public:
	journal(){
		head = NULL;		
	}
	//Добавление записи в журнал
	void add(string name, int rate){
		node *_new = new node;
		_new->name = name;
		_new->rate = rate;
		_new->next = head;
		head = _new;
	}

	//Добавление массива записей в журнал
	void add(int n,string names[], int rates[]){
		for (int i = 0; i < n; i++)add(names[i], rates[i]);
	}

	//Вывод
	void show(){
		cout << "Журнал:" << endl;
		node *cur = head;
		while (cur != NULL){
			cout << "Имя: " << cur->name << "  Оценка: " << cur->rate << endl;
			cur = cur->next;
		}
	}

	//Поиск двоичников. возвращает список фамилий, параметр К - количество 
	vector<string> count_2(int *k){
		vector<string>names;
		node *cur = head;		
		while (cur != NULL){
			if (cur->rate == 2)names.push_back(cur->name);
			cur = cur->next;
		}
		*k = names.size();
		return names;
	}
	

	//Удаляет двоичника с фамилией - name
	void del(string name){
		if (head == NULL)cout << "Список пуст";
		else{
			if (head->name == name)head = head->next;
			else{
				node *cur = head;
				node *prev=NULL;
				while (cur!= NULL){
					if (cur->name == name){
						prev->next = cur->next;
					}
					prev = cur;
					cur = cur->next;
				}
			}	
		}		
	}

	//Удаляет двоичников с фамилиями взятыми из списка names
	void del(vector<string>names){
		for (int i = 0; i < names.size(); i++)del(names[i]);
	}
};


int main(){
	setlocale(LC_ALL, "Russian");
	
	cout << "Введите количество Журналов" << endl;
	int n;
	cin >> n;
	char ch;
	//Работа класса
	journal *j=new journal[n];
	for (int i = 0; i < n; i++){
		cout << "Заполнение " << i + 1 << "-го журнала:" << endl;
		do{
			cout << "\n Фамилия:";
			string s;
			cin >> s;
			cout << "\n Оценка:";
			int rate;
			cin >> rate;
			j[i].add(s, rate);
			cout << "\n Закончить? y/n " << endl;;
			ch = _getch();
		} while (ch != 'y');
	}
	

	vector<string>names;
	int count,max = 0;
	for (int i = 0; i < n; i++){
		j[i].show();
		int k = 0;
		j[i].count_2(&k);
		if (max <= k){
			names = j[i].count_2(&k);
			max = k;
			count = i;
		}
	}
	j[count].del(names);
	cout << "Измененный список" << endl;
	j[count].show();

	system("PAUSE");
	return 0;
}
Ligeros905 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с классами cooper30 C# (си шарп) 9 05.11.2013 16:57
Работа с классами Император Помощь студентам 26 21.08.2013 19:36
Работа с классами АндрейBAN C# (си шарп) 4 17.12.2012 13:10
работа с классами JinZh C++ Builder 2 20.04.2011 23:17
работа с классами в си++ Zolotce Помощь студентам 4 01.04.2011 22:49