Wątek przeniesiony 2018-01-17 22:25 z C/C++ przez kq.

Prośba o wytłumaczenie programu.

0

Witam Potrzebuje kogoś kto mi napisze komentarze i objaśni o co chodzi tutaj.
Ponadto muszę wiedzieć jaki to rodzaj sortowania i jak on działa.
Dziękuję z góry :)

// program zal.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <string>
#include <iostream>
#include <conio.h>
#include <fstream>

using namespace std;

const int A = 35;

string wczytajTytulPliku()
{
	string nazwa;
	cout << "Podaj nazwe pliku: ";
	cin >> nazwa;

	return nazwa;
}

string wczytajImie()
{
	string imie;

	cout << "Podaj imie:";
	cin >> imie;

	return imie;
}

string wczytajNazwisko()
{
	string nazwisko;

	cout << "Podaj nazwisko:";
	cin >> nazwisko;

	return nazwisko;
}

double wczytajWzrost()
{
	double wzrost;

	cout << "Podaj wzrost:";
	cin >> wzrost;

	return wzrost;
}

double wczytajWage()
{
	double waga;

	cout << "Podaj wage:";
	cin >> waga;

	return waga;
}

int main()
{
	int index[A];
	string imiona[A];
	string nazwiska[A];
	double wzrosty[A];
	double wagi[A];

	int wzrostPosortowany[A];
	int wagaPosortowana[A];

	for (int i = 0; i < A; i++)
	{
		cout << "Uczen nr." << i + 1 << endl;

		index[i] = i;
		wagaPosortowana[i] = i;
		wzrostPosortowany[i] = i;

		imiona[i] = wczytajImie();
		nazwiska[i] = wczytajNazwisko();
		wzrosty[i] = wczytajWzrost();
		wagi[i] = wczytajWage();
	}

	//sortowanie po wadze
	for (int a = 0; a < A; a++)
	{
		for (int i = 1; i < A; i++)
		{
			if (wagi[wagaPosortowana[i]] > wagi[wagaPosortowana[i - 1]])
			{
				int bufor = wagaPosortowana[i];
				wagaPosortowana[i] = wagaPosortowana[i - 1];
				wagaPosortowana[i - 1] = bufor;
			}
		}
	}

	//sortowanie po wzroscie
	for (int a = 0; a < A; a++)
	{
		for (int i = 1; i <A; i++)
		{
			if (wzrosty[wzrostPosortowany[i]] > wzrosty[wzrostPosortowany[i - 1]])
			{
				int bufor = wzrostPosortowany[i];
				wzrostPosortowany[i] = wzrostPosortowany[i - 1];
				wzrostPosortowany[i - 1] = bufor;
				//}
			}
		}
	}

	cout << "Sortowanie po wadze:\n";
	for (int i = 0; i < A; i++)
	{
		cout << imiona[wagaPosortowana[i]] << " "
			<< nazwiska[wagaPosortowana[i]] << " "
			<< wagi[wagaPosortowana[i]] << endl;
	}

	cout << endl << endl;

	cout << "Sortowanie po wzroscie:\n";
	for (int i = 0; i < A; i++)
	{
		cout << imiona[wzrostPosortowany[i]] << " "
			<< nazwiska[wzrostPosortowany[i]] << " "
			<< wzrosty[wzrostPosortowany[i]] << " "
			<< endl;
	}

	bool doPliku = false;

	cout << "Wcisnij 1 jesli chcesz wczytac do pliku\n";

	if (_getch() == '1')
	{
		doPliku = true;
	}

	if (doPliku)
	{
		fstream plik;
		plik.open(wczytajTytulPliku(), ios::app | ios::out);

		if (!plik.good())
		{
			cout << "Blad podczas wczytywania\nWcisnij enter by wyjsc";
			_getch();
			exit(0);
		}


		plik << "Sortowanie po wadze:\n";
		for (int i = 0; i < A; i++)
		{
			plik << imiona[wagaPosortowana[i]] << " "
				<< nazwiska[wagaPosortowana[i]] << " "
				<< wagi[wagaPosortowana[i]] << endl;
		}

		cout << endl << endl;

		plik << "Sortowanie po wzroscie:\n";
		for (int i = 0; i < A; i++)
		{
			plik << imiona[wzrostPosortowany[i]] << " "
				<< nazwiska[wzrostPosortowany[i]] << " "
				<< wzrosty[wzrostPosortowany[i]] << " "
				<< endl;
		}
	}

	return 0;
}
0

Jest to odmiana sortowania bąbelkowego (porównywanie sąsiednich elementów tablicy. Sortowanie bąbelkowe w wersji standardowej miałoby pętlę wewnętrzną o zmiejszającej się liczbie przebiegów ( for (int i = 1; i <A-a; i++)).
Tablice wagaPosortowana, wzrostPosortowany służą do przechowywania indeksów (kolejności) sortowanych elementów.
Zaś do pisania komentarzy i objaśnienia - szukaj dalej, albo się poucz podstaw

1 użytkowników online, w tym zalogowanych: 0, gości: 1