» »

C++ Vaje

C++ Vaje

MC Rozica ::

Hey vsi

Tukaj so 3 naloge iz C++ ki jih jst ne znam in bi zato rabu mal pomoči. Ce pa boste ze resil pa tut ni problema.

1. Imaš matriko znakov 10*10, v katero vnesi naključno le dva različna znaka in sicer ''-presledek in '0'-črko O. Napiši funkcijo, ki izpise elemente z vrednostjo '0'- črke O, ki imajo 4 ali več sosedov, ki vsebujejo črko 'O'.
Napiši še glavni program, ki bo preveril tvoji funkciji, tako da izpišeš matriko in potem pokličeš svojo funkcijo, ki izpiše elemente, ki imajo 2 ali več soseda.


2. Napiši program, ki bo prebral besedo s tipkovnice in izpisal vzorec, kot je podan na primeru. Na primer, za podano besedo ABCD bi izpisal sledeč vzorec.

DCBA
DCBB
DCCC
DDDD

3. Napiši program, ki prebere vrstico znakov s tipkovnice. Nato pa napiši funkcijo, ki bo prejelo to vrstico in izbrisala vse presledke iz dane vrstice.





hvala

Tutankhamun ::

Se pozna, da se začnejo zdej izpiti :D.

Najprej 3. nalogo ker je najlažja, pa ti jo kr iz glave napišem
int main (int argc, char* argv[])
{

	string vrstica;
	string popravljena_vrstica;

	getline (cin, vrstica);

	for (int i = 0; i < vrstica.size (); i++)
	{
		if (vrstica[i] != ' ')
			popravljena_vrstica += vrstica[i]; 
	}

	cout << vrstica << endl << popravljena_vrstica << endl;

	return 0;
}
AMD Phenom QUAD 9950 Black Edition, 8GB

BigWhale ::

Namesto, da podpiras lenobo studentov in faks, ki bo na koncu sproduciral neposobne racunalnicarje, jim raje napisi resitev v MODULA-2, pa naj si sami prevedejo v C++! Se bodo vsaj nekaj naucili. :>

Tutankhamun ::

Sej velikikit ma prov po svoje. Ampak tko al tko se naute naučil, tko pa dam še gor, da mogoče kdo, ki se uči, mal poškil v kodo pa pogleda, kako drugi rešijo naloge. Bedast razlog :D.
In prihaja 2. naloga :P

int main (int argc, char* argv[])
{
	bool crke [27]= {false};

	// PAZI, DA VPISES SAMO VELIKE TISKANE CRKE 
	string beseda;
	cin >> beseda;

	int max_crka = 0;

	for (int x = 0; x < beseda.size (); x++)
	{
		int xxx = beseda[x] - 'A';
		crke[xxx] = true;
		
		if (xxx > max_crka) max_crka = xxx;
	}
	
	int i = 0;
	char iz_crke;
	char v_crko;
	while (true)
	{
		iz_crke = 0;
		v_crko = 0;

		while (i <= max_crka)
		{
			if (crke[i])
			{
				if (iz_crke == 0)
					iz_crke = i + 'A';
				else
				{
					v_crko = i + 'A';
					break;
				}
			}
			i++;
		}

		if (v_crko == 0) break;

		for (int i = 0; i < beseda.size (); i++)
		{
			if (beseda[i] == iz_crke)
				beseda[i] = v_crko;
		}

		cout << beseda << endl;
	}

	return 0;
}
AMD Phenom QUAD 9950 Black Edition, 8GB

MC Rozica ::

hmmm

ti tele naolge resis kr tko za hec


no vseen hvala

hexor ::

tutankhamun si ti študent al programer po poklicu?

Tutankhamun ::

Ne eno ne drugo. Sm štromar, programiram pa, ker me to še zanima in sm že s prvim letnikom srednje šole začel :). Najprej v excelu VB, pol Visual VB pol assembler (ATMEL, pa PIC mikrokontrolerji, na faxu smo mel pa MOTOROLE) pol pa C in C++. Zdej pa še mal fušam c#.
V službi pa res programiram. :D
Sam neki, da nauš mislu da so naloge težke, so kr enostavne. Ne glede na to kok časa se že ukvarjam s programiranjem. Po 3 tednih, če bereš knjigo pa greš po vseh primerčkih skos, to že use znaš napisat. Pa sploh ne rabš kšne ful zajebane šolske knjige. Js sm začel s knjigo C++ programiranje za velike in male :). V knjižnici sm jo najdu :P. Pa mi je bla kr ušeč.

KAr se pa prve naloge tiče: se mi pa zdej ne da več pisat.
Če boste že sami pisal.
Za ispis je funkcija enaka funkciji za izpis želvic v hexorjevem programčku tuki. Funkcijo sm tm poimenoval DisplayField()!
Za vpis črk v tabelo, je neki najlažiga, to za šalo naredite.
Za pogledat sosednja polja je pa mal "teži".
Recimo najprej pogledaš lokacijo x-1 in y-1, in povečaš en števec za 1, će je vsebina te celice 'O'
Potem pogledaš na isti način polja
x in y-1
x+1 in y-1
x-1 in y
x+1 in y
x-1 in y+1
x in y+1
x+1 in y+1
Seveda moreš pa prevert, da ne gledaš kam izven tabele [10][10]!!!
To delaš za vsa polja.
To je to!!!
AMD Phenom QUAD 9950 Black Edition, 8GB

Tutankhamun ::

Ok, skor nič mi ni blo treba napisat :). Sm najdu eno kodo pr seb, pa sm sam mal popravu.
Sm pa tko naredu takole:
Podatke programček dobi preko fajla, ker komu se da 100x odtipkavat ene znake?
Moja datoteka se imenuje slo-tech.txt, dal sem pa sledečo vsebino
...OO...O.
.O.O.OOO..
..O.OO.OOO
OOOO.OOO..
....O..O..
OO...O..O.
..O.O.OOO.
OOO.......
O..O..O...
...O.O..OO

Namesto presledkov sem vpisal pikice, da sem laži štel, ker je sranje delat s presledki... Ti lahk komot to popravš, sam da ti kšn presledek na konc vrstice ne bo falil.

Potem pa še koda:
void DisplayField (const char *pField, const int width, const int height)
{
	int size = width * height;

	for (int i = 0; i < size; i++)
	{
		if (i % width == 0)
			cout << endl;

		char val = *(pField + i);
		if (val == 0)
			cout << ".";
		else
			cout << val;
	}

	cout << endl << endl;
}

bool PreveriSosedo (const char *pField, const int width, const int height, const int x, const int y)
{
	if (x < 0 || x >= width) return false;
	if (y < 0 || y >= height) return false;

	if (*(pField + y * height + x) == 'O')
		return true;

	return false;
}


int Prestej_O_Sosede (const char *pField, const int width, const int height, const int curX, const int curY)
{
	int count = 0;

	if (PreveriSosedo (pField, width, height, curX-1, curY-1)) count++;
	if (PreveriSosedo (pField, width, height, curX, curY-1)) count++;
	if (PreveriSosedo (pField, width, height, curX+1, curY-1)) count++;

	if (PreveriSosedo (pField, width, height, curX-1, curY)) count++;
	if (PreveriSosedo (pField, width, height, curX+1, curY)) count++;

	if (PreveriSosedo (pField, width, height, curX-1, curY+1)) count++;
	if (PreveriSosedo (pField, width, height, curX, curY+1)) count++;
	if (PreveriSosedo (pField, width, height, curX+1, curY+1)) count++;

	return count;
}



int main (int argc, char* argv[])
{
	const int WIDTH = 10;
	const int HEIGHT = 10;
	char tabela[HEIGHT][WIDTH];
	char *pTabela = &tabela[0][0];

	ifstream is;
	is.open ("e:\\slo-tech.txt");
	if (!is.is_open ())
		return -1;

	for (int vrstica = 0; vrstica < HEIGHT; vrstica++)
	{
		string strPodatki;
		getline (is, strPodatki);

		for (int znak = 0; znak < WIDTH; znak++)
			tabela [vrstica][znak] = strPodatki[znak];
	}

	DisplayField (&tabela[0][0], WIDTH, HEIGHT);

	for (int h = 0; h < HEIGHT; h++)
	{
		for (int w = 0; w < WIDTH; w++)
		{
			if (w == 2 && h == 1)
				h = h;
			int count;
			count = Prestej_O_Sosede (pTabela, WIDTH, HEIGHT, w, h);
			if (count > 3)
				cout << "Polje (" << w << ", " << h << ") ima dovolj sosed" << endl;
		}
	}

	return 0;
}


Pa še izhod iz programa za moj primer:

...OO...O.
.O.O.OOO..
..O.OO.OOO
OOOO.OOO..
....O..O..
OO...O..O.
..O.O.OOO.
OOO.......
O..O..O...
...O.O..OO

Polje (2, 1) ima dovolj sosed
Polje (3, 1) ima dovolj sosed
Polje (4, 1) ima dovolj sosed
Polje (5, 1) ima dovolj sosed
Polje (6, 1) ima dovolj sosed
Polje (7, 1) ima dovolj sosed
Polje (8, 1) ima dovolj sosed
Polje (1, 2) ima dovolj sosed
Polje (2, 2) ima dovolj sosed
Polje (3, 2) ima dovolj sosed
Polje (4, 2) ima dovolj sosed
Polje (5, 2) ima dovolj sosed
Polje (6, 2) ima dovolj sosed
Polje (7, 2) ima dovolj sosed
Polje (8, 2) ima dovolj sosed
Polje (3, 3) ima dovolj sosed
Polje (4, 3) ima dovolj sosed
Polje (5, 3) ima dovolj sosed
Polje (6, 3) ima dovolj sosed
Polje (7, 3) ima dovolj sosed
Polje (8, 3) ima dovolj sosed
Polje (0, 4) ima dovolj sosed
Polje (1, 4) ima dovolj sosed
Polje (2, 4) ima dovolj sosed
Polje (5, 4) ima dovolj sosed
Polje (6, 4) ima dovolj sosed
Polje (6, 5) ima dovolj sosed
Polje (7, 5) ima dovolj sosed
Polje (0, 6) ima dovolj sosed
Polje (1, 6) ima dovolj sosed
Polje (1, 7) ima dovolj sosed
Polje (3, 7) ima dovolj sosed
Polje (7, 7) ima dovolj sosed
Polje (1, 8) ima dovolj sosed
Polje (2, 8) ima dovolj sosed
AMD Phenom QUAD 9950 Black Edition, 8GB

HairyFotr ::

Podatke lahko daš na standardni vhod(program to vidi popolnoma enako kot branje s tipkovnice), če datoteko podaš kot vhodni tok pri zagonu programa:
program.exe < slo-tech.txt

Prednost je, da če hočeš ročno vpisovat podatke ni treba programa nič spreminjat.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] Naloge

Oddelek: Programiranje
274099 (2430) LordiBoy
»

Pomoč pri programiranju z javo

Oddelek: Programiranje
203592 (2519) milc
»

C# (strani: 1 2 )

Oddelek: Programiranje
9712214 (9049) Ericssony
»

Nujna Pomoč ! C++

Oddelek: Programiranje
121239 (1038) BigWhale
»

osnove v Javi - zvezdice

Oddelek: Programiranje
403599 (2821) Tutankhamun

Več podobnih tem