logo

Podział aplikacji na kilka plików. Tablice dwuwymiarowe.


Aplikację z poprzedniego wykładu podzielimy na trzy pliki:

  1. plik główny,
  2. plik nagłówkowy,
  3. plik implementacyjny.

Plik główny

#include<cstdlib>
#include<iostream>

#include "moje_fun.h" // informuję kompilator, że w tym miejscu należy 
                      // załączyć plik nagłówkowy: moje_fun.h
using namespace std;


int main(int argc, char *argv[])
{
	srand(20);
	const int n = 10;
	Punkt p[n];
	LosujTab2(p, n);
	DrukujTab(p, n);

	system("pause");

	return 0;
};

Plik nagłówkowy: moje_fun.h

#pragma once


struct Punkt
{
	int x, y;
};

int LosujInt(int iMin, int iMax);
void LosujTab(Punkt p[], int n);
void LosujTab2(Punkt p[], int n);
void DrukujTab(Punkt p[], int n);

Plik implementacyjny: moje_fun.cpp

#include<cstdlib>
#include<iostream>

#include "moje_fun.h"

int LosujInt(int iMin, int iMax)
{
	return iMin+(int) (iMax*rand()/(RAND_MAX+1.0));
}

void LosujTab(Punkt p[], int n)
{
	for (int i=0; i<n; ++i)
	{
		p[i].x = LosujInt(0, 100);
		p[i].y = LosujInt(0, 100);
	}
}

void LosujTab2(Punkt p[], int n)
{
	Punkt * wskP = p;
	for (int i=0; i<n; ++i, ++wskP)
	{
		wskP->x = LosujInt(0, 100);
		wskP->y = LosujInt(0, 100);
	}
}

void DrukujTab(Punkt p[], int n)
{
	for (int i=0; i<n; ++i)
		std::cout << p[i].x << ",    " << p[i].y  << std::endl;
}

Tablice dwuwymiarowe

Temat ten ilustruje poniższy przykład

#include<cstdlib>
#include<iostream>
#include<iomanip>


using namespace std;

void SumaMat(double c[][2], double a[][2], double b[][2]);
void DrukujMat(double a[][2]);


int main(int argc, char *argv[])
{
	double A[2][2] = { {1, 0}, {0, 1} };
	double B[2][2] = { {0, -1}, {1, 0} };
	double C[2][2];
	SumaMat(C, A, B);
	DrukujMat(C);

	system("pause");
	return 0;
};


void SumaMat(double c[][2], double a[][2], double b[][2])
{
	for (int i=0; i<2; ++i)
	for (int j=0; j<2; ++j)
		c[i][j] = a[i][j] + b[i][j];
}

void DrukujMat(double a[][2])
{
	for (int i=0; i<2; ++i)
	{
		for (int j=0; j<2; ++j)
			cout <<setw(10)<< a[i][j] << "  ";
		cout << endl;
	}
}

Więcej można znaleźć na stronach:

  1. http://icis.pcz.pl/~roman/mat_dyd/prog/c.html#struk
  2. http://pl.wikibooks.org/wiki/C/Typy_z%C5%82o%C5%BCone
  3. http://kondel.ko.funpic.de/?pid=17
  4. http://www.java2s.com/Tutorial/Cpp/0160__Structure/Catalog0160__Structure.htm

logo