Помош: Кратки програмки

old_School_mk

Програмер, гејмер, psy-trance уживател
Член од
11 август 2009
Мислења
6.153
Поени од реакции
5.921
Da ve prasam dali nekoj znae da gi resi ovie zadaci :
1.Da se napise programa koja so funkcija presmetuva i vraka DDv(18%) na cena vnesena od tastatura.
2.Da se napise programa koja vo kvadratna funkcija ke gi promeni elemenite od glavnata dijagonala,taka sto dokolku vrednosta na elementot od glavnata dijagonala e pomala od 5 taa se zamenuva so vrednosta 0,a vo sprotivno so 0.Da se ispecati matricata posle promenata.
3.Da se napise programa vo koja deklarira struktura Agol,cii podatocni clenovi se stepeni,minuti,sekundi.Potoa da se ispecati goleminata na agolot,izrazena vo sekundi.Da se ilustrira rabota so struktura.
Odnapred fala :)
Не знам на кој факс си, ама во случај да си на електро и не знаеш да ја решиш барем првата, хммм...
Иначе, еве ти го решението
Код:
#include <iostream>
#include <cstdlib>
using namespace std;

float func_ddv (float cena)
{
	float ddv;
	ddv=cena+(cena*18/100);
	return ddv;
}
int main()
{
	float cena, ddv;
	cout << "Vnesi cena: " << endl;
	cin >> cena;
	func_ddv (cena);
	ddv=func_ddv (cena);
	cout << "Cenata so ddv e: " << ddv << endl;
	system("pause");
	return 0;
}
Код:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n, a[10][10], i, j;
    scanf("%d", &n);
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
            scanf("%d", &a[i][j]);
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
            printf("%d\t", a[i][j]);
        printf("\n");
    }
    printf("\n\n");
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
            if(i==j)
            {
                if(a[i][j]<5)
					a[i][j]=0;
                }
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
            printf("%d\t", a[i][j]);
        printf("\n");
    }
    system("pause");
    return 0;
}
Иначе првата е напишана во С++, втората во С. Се надевам сам ќе можеш да ги смениш по потреба. Третата не можам сеа да ја напишам. Ваљда ќе се најде некој друг.
 
Член од
6 јуни 2009
Мислења
3.094
Поени од реакции
445
Код:
...
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
            if(i==j)
            {
                if(a[i][j]<5)
					a[i][j]=0;
                }
...
Тука два for-а не се потребни. Одиме по главна дијагонала.
Код:
	for(i=0; i<n; i++)
	{
		if(a[i][i]<5)
			a[i][i]=0;
	}
-------------------------------------

3.Da se napise programa vo koja deklarira struktura Agol,cii podatocni clenovi se stepeni,minuti,sekundi.Potoa da se ispecati goleminata na agolot,izrazena vo sekundi.Da se ilustrira rabota so struktura.
Odnapred fala :)
Еве ја третата. Структурата уште на почеток и ставам typedef за после да не мора да пушувам struct agol туку само Аgol, и си дефинирам има за покажувачи за да не пишувам struct agol * туку само lpAgol.

После имам метод KonstruirajAgol. Тоа тие нешто Ц++ стил како класа (со конструктор), е овде структура со посебен метод како конструктор.
Напишав 3 опции за овај метод ете ги подолу. (2рата и 3тата се ставени како коментар) Има мали разлики.

Код:
#include <stdio.h>
#include <stdlib.h>

typedef struct agol
{
	int stepeni;
	int minuti;
	int sekundi;
} Agol, *lpAgol;

lpAgol KonstruirajAgol(int stepeni, int minuti, int sekundi)
{
	//опција1 - јави грешка (врати null) ако се внесуи повеќе од 60 за минути или секунди
	lpAgol ret = NULL;
	if (minuti < 60 && sekundi < 60)
	{
		ret = (lpAgol)malloc(sizeof(Agol));
		if (ret)
		{
			ret->stepeni = stepeni;
			ret->minuti = minuti;
			ret->sekundi = sekundi;
		}
	}
	return ret;
	
	//опција 2 - ако има 60 или повеќе кај минути и секунди префрли на лево.
	/*
	lpAgol ret = (lpAgol)malloc(sizeof(Agol));
	if (ret)
	{
		if(sekundi > 59)
		{
			minuti += sekundi/60;
			sekundi %= 60;
		}
		if (minuti > 59)
		{
			stepeni += minuti/60;
			minuti %= 60;
		}
		ret->stepeni = stepeni;
		ret->minuti = minuti;
		ret->sekundi = sekundi;
	}
	return ret;
	*/
	
	//опција 3 дирекно да се стават вредностите во структурата
	/*
	lpAgol ret = (lpAgol)malloc(sizeof(Agol));
	if (ret)
	{
		ret->stepeni = stepeni;
		ret->minuti = minuti;
		ret->sekundi = sekundi;
	}
	return ret;	
	*/
}

int PretvoriAgolVoSekundi(lpAgol a)
{
	int ret;
	if (a)
		ret = a->sekundi + a->minuti*60 + a->stepeni*3600;
	else
		ret = -1;
		
	return ret;
}

int main()
{
	int st1, m1, sec1;
	int sek;
	lpAgol ag1;
	scanf("%d %d %d", &st1, &m1, &sec1);
	ag1 = KonstruirajAgol(st1, m1, sec1);
	sek = PretvoriAgolVoSekundi(ag1);
	printf("%d\n", sek);
	free(ag1);
}
 

old_School_mk

Програмер, гејмер, psy-trance уживател
Член од
11 август 2009
Мислења
6.153
Поени од реакции
5.921
Тука два for-а не се потребни. Одиме по главна дијагонала.
Код:
	for(i=0; i<n; i++)
	{
		if(a[i][i]<5)
			a[i][i]=0;
	}
Па да, али тоа што јас го пишав е уствари кодот за минување низ матрицата. Главна, под главна, над главна... Вака само ќе го збуниш.
Код:
for(i=0; i<n; i++)
        for(j=0; j<n; j++)
           [B] if(i==j)[/B]   //со промена на ова можеш да се шеташ низ матрицата.

//if(i<j) е за под главна, а if(i>j) за над главна дијагонала
 
Член од
23 март 2010
Мислења
1
Поени од реакции
0
Union of rectangles

zdravo, bidejki gledam dobro vi odi so resavanjeto problemi, bi ve zamolila za eden problem. imeno za edna seminarska potrebno e da go resam algoritamot za unija na pravoagolnici:

There are multiple rectangles in a plane having their sides parallel to the X axis, defined by the coordinates of the left-down and right-top vertex.
Compute the union area of a given sequence of rectangles A_1, A_2, ... , A_N.
Example:
A_1 is given by [1;1],[4;3]
A_2 is given by [0;1],[6;2]
A_3 is given by [2;1],[3;3]
A_4 is given by [7;7],[9;9]

The area of the union is 13.

Mi rekoa deka go ima reseno na internet no ne mozev da go najdam. potrebno e da go koristam ovoj algoritam.

Using the example:

1 2 3 4 5 6

1 +---+---+
| |
2 + A +---+---+
| | B |
3 + + +---+---+
| | | | |
4 +---+---+---+---+ +
| |
5 + C +
| |
6 +---+---+
1) collect all the x coordinates (both left and right) into a list, then sort it and remove duplicates

1 3 4 5 6
2) collect all the y coordinates (both top and bottom) into a list, then sort it and remove duplicates
1 2 3 4 6
3) create a 2D array by number of gaps between the unique x coordinates * number of gaps between the unique y coordinates.
4 * 4
4) paint all the rectangles into this grid, incrementing the count of each cell it occurs over:
1 3 4 5 6

1 +---+
| 1 | 0 0 0
2 +---+---+---+
| 1 | 1 | 1 | 0
3 +---+---+---+---+
| 1 | 1 | 2 | 1 |
4 +---+---+---+---+
0 0 | 1 | 1 |
6 +---+---+

5) the sum total of the areas of the cells in the grid that have a count greater than one is the area of overlap. For better efficiency in sparse use-cases, you can actually keep a running total of the area as you paint the rectangles, each time you move a cell from 1 to 2.
 

old_School_mk

Програмер, гејмер, psy-trance уживател
Член од
11 август 2009
Мислења
6.153
Поени од реакции
5.921
Објект накит

Да се напише класа за опис на објекти накит. За секој накит како приватни податоци се чуваат: производител, име на накитот, година на производство, цена на наддавање и најдобар понудувач. За класата да се напише:
- Default конструктор, copy constructor и конструктор кој ги иницијализира вредностите
- Функции за читање на приватните вредности на објектот
- Функции за менување на приватните вредности на објектот
- Функции за печатење на приватните податоци на објектот
- Функција Naddavaj која е дел од класата и која прима нова цена и нов понудувач како влезни аргументи и доколку се подобри од постоечките ги внесува во објектот
- Во рамки на main функцијата да се креира еден објект од класата и да се почне бесконечен циклус во кој од тастатура се внесуваат нови понуди за накитот се додека не се внесе нула за крај. На крај се печати содржината на објектот на најдобрата понуда.


Задачава ми е скоро решена. Најголемиот проблем ми е болдираното.

Еве го мојот код, па ако може некој нека го поправи. Исто така, ако има некој совет за што би требало да променам во кодот, слободно нека го пише. Благодарам однапред.

Код:
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;

class nakit
{
private:
	string proizvoditel;
	string ime;
	int godina;
	float cena;
	string ponuduvac;
public:
	nakit () {};
	nakit (string pr, string i, int g, float c, string po)
	{ proizvoditel=pr; ime=i; godina=g; cena=c; ponuduvac=po; };
	~nakit () {};
	nakit (const nakit &n);
	string get_proizvoditel () { return proizvoditel; };
	string get_ime () { return ime; };
	int get_godina () { return godina; };
	float get_cena () { return cena; };
	string get_ponuduvac () { return ponuduvac; };
	void print ();
	void set_proizvoditel (string pr) { proizvoditel=pr; };
	void set_ime (string i) { ime=i; };
	void set_godina (int g) { godina=g; };
	void set_cena (float c) { cena=c; };
	void set_ponuduvac (string po) { ponuduvac=po; };
	void naddavaj (float const c, string const po);
};

void nakit::naddavaj (float const &c, string const &po)
{
	float p_cena=0;
	if (c>p_cena) { n.set_cena (c); n.set_ponuduvac (po); }
}

void nakit::print ()
{
	cout << "Proizvoditel: " << proizvoditel << endl;
	cout << "Ime na nakitot: " << ime << endl;
	cout << "Godina na proizvodstvo: " << godina << endl;
	cout << "Cena: " << cena << endl;
	cout << "Ponuduvac: " << ponuduvac << endl;
}

int main ()
{
	nakit n;
	string pr, i, po;
	int g;
	float c;
	cout << "Vnesi proizvoditel: " << endl; cin >> pr;
	cout << "Vnesi ime na nakitot: " << endl; cin >> i;
	cout << "Vnesi godina na proizvodstvo: " << endl; cin >> g;
	n.set_proizvoditel (pr);
	n.set_ime (i);
	n.set_godina (g);
	for(;;)
		if (c==0) break;
		else
		{
			int i=1;
			cout << "Ponuduvac " << i << endl;
			cout << "Ime na ponuduvacot: "; cin >> po;
			cout << "Ponuda: "; cin >> c;
			n.naddavaj (c, po);
			i++;
		}
	n.print ();
	system("pause");
	return 0;
}
 
Член од
26 јуни 2006
Мислења
288
Поени од реакции
24
Ми треба помош за една програмка

Да се напише структура куќа во која ќе се чува информации за адресата на куќата(низа од знаци), бројот на прозорци(цел број) и боја(низа од знаци).
Да се напише и др структура улица во која ќе се чуваат име, низа од куќи и број на куќи. Да се напише функција која ќе ги печати сите информации за куќа и функција која ќе ги испечати сите куќи од една улица според бројот на прозорците во растечки редослед.
 

диме

When Am I ?
Член од
14 февруари 2007
Мислења
806
Поени од реакции
21
Ми треба помош за една програмка

Да се напише структура куќа во која ќе се чува информации за адресата на куќата(низа од знаци), бројот на прозорци(цел број) и боја(низа од знаци).
Да се напише и др структура улица во која ќе се чуваат име, низа од куќи и број на куќи. Да се напише функција која ќе ги печати сите информации за куќа и функција која ќе ги испечати сите куќи од една улица според бројот на прозорците во растечки редослед.
Повелеле :) Добив желба во C да програмирам :D

Код:
#include <stdio.h>
#include <stdlib.h>

typedef struct kuka {
	char * adresa;
	int br_na_prozorci;
	char * boja;
} kuka_t;

typedef struct ulica {
	char * ime;
	kuka_t * niza_od_kuki;
	int broj_na_kuki;
} ulica_t;


void ispisi_podatoci_za_kuka(kuka_t* my_kuka);
void ispisi_kukite_od_ulicata(ulica_t my_ulica);
void sortiraj_kukite_po_prozorci(kuka_t * niza, int n);
void swap(kuka_t *x, kuka_t *y);


int main ( )
{
	// Definirame edna kuka
	kuka_t prva_kuka;
	prva_kuka.adresa = "Trebinjska";
	prva_kuka.br_na_prozorci = 4;
	prva_kuka.boja = "Zolta";
	
	// Gi ispisvame site podatoci za kukata
	ispisi_podatoci_za_kuka(&prva_kuka);

	
	// Definirame ULICA i nekolku KUKI koi ke se naogaat na taa ulica
	ulica_t my_ulica;
	my_ulica.ime = "Trebinjska";
	
	// Ja definirame vtorata kuka
	kuka_t vtora_kuka;
	vtora_kuka.adresa = "Trebinjska";
	vtora_kuka.br_na_prozorci = 10;
	vtora_kuka.boja = "Sina";


	// Ja definirame tretata kuka
	kuka_t treta_kuka;
	treta_kuka.adresa = "Trebinjska";
	treta_kuka.br_na_prozorci = 2;
	treta_kuka.boja = "Bela";

	// Gi stavame KUKITE na ULICATA :D
	my_ulica.broj_na_kuki = 3;
	my_ulica.niza_od_kuki = (kuka_t*) malloc( 3 * sizeof(kuka_t) );
	my_ulica.niza_od_kuki[0] = prva_kuka;
	my_ulica.niza_od_kuki[1] = vtora_kuka;
	my_ulica.niza_od_kuki[2] = treta_kuka;
	
	// Ispecati gi kukite na ulicata
	ispisi_kukite_od_ulicata(my_ulica);
	
	free (my_ulica.niza_od_kuki);
	return 0;
}

void ispisi_kukite_od_ulicata(ulica_t my_ulica)
{
	printf("Na ulicata %s se naogaat slednite kuki: \n\n", my_ulica.ime);	
	
	int n = my_ulica.broj_na_kuki;

	sortiraj_kukite_po_prozorci(my_ulica.niza_od_kuki, n);

	int i;
	for (i=0; i<n; i++)
	{
		ispisi_podatoci_za_kuka(&my_ulica.niza_od_kuki[i]);
	}

}

void sortiraj_kukite_po_prozorci(kuka_t * niza, int n)
{

	int i,j;
	
	for(i = 0; i < (n-1); i++)
	{
		for(j = 0; j < (n - (i + 1)); j++)
		{
			if(niza[j].br_na_prozorci > niza[j+1].br_na_prozorci)
			{
				swap(&niza[j], &niza[j+1]);
			}
		}
	}

}


void swap(kuka_t *x, kuka_t *y)
{
   kuka_t temp;
   temp = *x;
   *x = *y;
   *y = temp;
}

void ispisi_podatoci_za_kuka(kuka_t* my_kuka)
{
	printf ("Adresa: %s \n", my_kuka->adresa);
	printf ("Br. na prozorci: %d \n", my_kuka->br_na_prozorci);
	printf ("Boja: %s \n\n\n", my_kuka->boja);
}
 
A

apidrone

Гостин
Да се напише класа за опис на објекти накит. За секој накит како приватни податоци се чуваат: производител, име на накитот, година на производство, цена на наддавање и најдобар понудувач. За класата да се напише:
- Default конструктор, copy constructor и конструктор кој ги иницијализира вредностите
- Функции за читање на приватните вредности на објектот
- Функции за менување на приватните вредности на објектот
- Функции за печатење на приватните податоци на објектот
- Функција Naddavaj која е дел од класата и која прима нова цена и нов понудувач како влезни аргументи и доколку се подобри од постоечките ги внесува во објектот
- Во рамки на main функцијата да се креира еден објект од класата и да се почне бесконечен циклус во кој од тастатура се внесуваат нови понуди за накитот се додека не се внесе нула за крај. На крај се печати содржината на објектот на најдобрата понуда.


Задачава ми е скоро решена. Најголемиот проблем ми е болдираното.

Еве го мојот код, па ако може некој нека го поправи. Исто така, ако има некој совет за што би требало да променам во кодот, слободно нека го пише. Благодарам однапред.
Друже, од кај ти е на тебе кодов??? Ако си од електро (а мислам дека си, пошо задачава ја има у тие колоквиумските задачи купени од скриптара), и ако сам си го пишувал кодов, можам да ти кажам дека имаш сериозна почетничка грешка. Имено, не постои string податочен вид, туку за низа од знаци се користи резервираното зборче char.
Иначе еве го кодот:
Код:
#include<iostream>
#include<stdlib.h>
using namespace std;
class Nakit
{
      private:
              char proizvoditel[50];
              char ime[50];
              int god;
              float cena;
              char ponuduvac[50];
      public:
             Nakit() {};
             Nakit(char *p, char *i, int g, float c, char *po)
             {
                        strncpy(proizvoditel, p, 49); proizvoditel[49]=0;
                        strncpy(ime, i, 49); ime[49]=0;
                        god=g;
                        cena=c;
                        strncpy(ponuduvac, po, 49); ponuduvac[49]=0;
             }
             Nakit(const Nakit &n)
             {
                        strncpy(proizvoditel, n.proizvoditel, 49); proizvoditel[49]=0;
                        strncpy(ime, n.ime, 49); ime[49]=0;
                        god=n.god;
                        cena=n.cena;
                        strncpy(ponuduvac, n.ponuduvac, 49); ponuduvac[49]=0;
             }
             char *getproizvoditel() {return proizvoditel; }
             char *getime() {return ime; }
             int getdog() {return god; }
             float getcena() {return cena; }
             char *getponuduvac() {return ponuduvac; }
             
             char setproizvoditel(char *p) {strncpy(proizvoditel, p, 49); proizvoditel[49]=0; }
             char setime(char *i) {strncpy(ime, i, 49); ime[49]=0;}
             int setgod(int g) {god=g; }
             float setcena(float c) {cena=c; }
             char setponuduvac(char *po) {strncpy(ponuduvac, po, 49); ponuduvac[49]=0; }
             void print()
             {
             cout<<"Proizvoditel: "<<getproizvoditel()<<endl;
             cout<<"Ime na nakit: "<<getime()<<endl;
             cout<<"Godina na pr: "<<getdog()<<endl;
             cout<<"Cena:         "<<getcena()<<endl;
             cout<<"Ponuduvac:    "<<getponuduvac()<<endl;
             }
             void Naddavaj(float c, char *p)
             {
                  if(c>getcena())
                  {   setcena(c); setponuduvac(p); }
             }
};
int main()
{
    Nakit n;
    char proiz[50], ime[50],  ponud[50];
    int g;
    float c;
    cout<<"Proizvoditel: "; cin>>proiz;        n.setproizvoditel(proiz);
    cout<<"Ime na nakit: "; cin>>ime;          n.setime(ime);
    cout<<"Godina na pr: "; cin>>g;            n.setgod(g);
    cout<<"Cena:         "; cin>>c;            n.setcena(c);
    cout<<"Ponuduvac:    "; cin>>ponud;        n.setponuduvac(ponud);    
    for(;;)
    {
           cout<<"Vnesi nova cena: "; cin>>c;
           if(c==0) break;
           else
           n.Naddavaj(c,ponud);
    }
    n.print();
system("pause");
return 0;
}
 

old_School_mk

Програмер, гејмер, psy-trance уживател
Член од
11 август 2009
Мислења
6.153
Поени од реакции
5.921
Друже, од кај ти е на тебе кодов??? Ако си од електро (а мислам дека си, пошо задачава ја има у тие колоквиумските задачи купени од скриптара), и ако сам си го пишувал кодов, можам да ти кажам дека имаш сериозна почетничка грешка. Имено, не постои string податочен вид, туку за низа од знаци се користи резервираното зборче char.
Епа ако и ти си од електро, а мислам дека си, и ако беше заинтересиран малку екстра за програмирање (бидејќи ова го немаат кажано на предавања/вежби), ќе знаеше дека не постои string податочен тип сам за себе - туку дека е готова функција од библиотеката <string> и е многу корисна при вакви програми каде што нема динамичка алокација на меморија. Еве ти го истиот код што ми е пишан (со исправена функција за нов понудувач), копирај го во компајлер и види дали ќе работи :smir:
PS: постот ми е од 23ти Март. Фала за помошта, ама јас го средив тој код 2 дена подоцна.

Код:
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
float p_cena=0;
class nakit
{
private:
	string proizvoditel;
	string ime;
	int godina;
	float cena;
	string ponuduvac;
public:
	nakit () {};
	nakit (string pr, string i, int g, float c, string po)
	{ proizvoditel=pr; ime=i; godina=g; cena=c; ponuduvac=po; };
	~nakit () {};
	nakit (const nakit &n);
	string get_proizvoditel () { return proizvoditel; };
	string get_ime () { return ime; };
	int get_godina () { return godina; };
	float get_cena () { return cena; };
	string get_ponuduvac () { return ponuduvac; };
	void print ();
	void set_proizvoditel (string pr) { proizvoditel=pr; };
	void set_ime (string i) { ime=i; };
	void set_godina (int g) { godina=g; };
	void set_cena (float c) { cena=c; };
	void set_ponuduvac (string po) { ponuduvac=po; };
	void naddavaj (float const &c, string const &po);
};

void nakit::naddavaj (float const &c, string const &po)
{
	if(c>get_cena())
	{
		set_cena(c);
		set_ponuduvac(po);
	}
}

void nakit::print ()
{
	cout << "Proizvoditel: " << proizvoditel << endl;
	cout << "Ime na nakitot: " << ime << endl;
	cout << "Godina na proizvodstvo: " << godina << endl;
	cout << "Cena: " << cena << endl;
	cout << "Ponuduvac: " << ponuduvac << endl;
}

int main ()
{
	nakit n;
	string pr, i, po;
	int g;
	float c=1;
	cout << "Vnesi proizvoditel: " << endl; cin >> pr;
	cout << "Vnesi ime na nakitot: " << endl; cin >> i;
	cout << "Vnesi godina na proizvodstvo: " << endl; cin >> g;
	n.set_proizvoditel (pr);
	n.set_ime (i);
	n.set_godina (g);
	int j=1;
	for(;;)
		{
			cout << "Ponuduvac " << j << endl;
			cout << "Ime na ponuduvacot: "; cin >> po;
			cout << "Ponuda: "; cin >> c;
			n.naddavaj (c, po);
			j++;
			if (c==0) break;
		}
	n.print ();
	system("pause");
	return 0;
}
 
Член од
20 март 2009
Мислења
20
Поени од реакции
1
Здарво сакам да прашам некој ако знае да ми каже зошто на оваа програма кога ја компајлирам не ми се појавува компајлерот а инаку ми покажува дека програмата е точна.


#include <set>
#include <map>
#include <vector>
#include <string>
#include <string>
#include <iostream>
using std::set;
using std::map;
using std::vector;
using std::string;
using std::cout;
using std::endl;
typedef int string_pos;
typedef int state_num;
#define NUM_CHARS 256
// Maps the set of string positions a state represents to the state number
map< set<string_pos>, state_num > state_map;
// Maps a state number to its set of string positions
vector< set<string_pos> > states;
vector< vector<state_num> > transition_table;
vector<bool> final;
state_num get_state(set<string_pos>& s)
{
static int next_state_num = 0;
map< set<string_pos>, state_num >::iterator iter =
state_map.find(s);
if (iter == state_map.end())
{
state_map = next_state_num;
states.push_back(s);
vector<state_num> new_tt_row;
for (int i=0; i < NUM_CHARS; i++)
{
new_tt_row.push_back(0);
}
transition_table.push_back(new_tt_row);
final.push_back(false);
next_state_num++;
return next_state_num - 1;
}
else
{
return iter->second;
}
}
void fill_transition_table_entry(string pattern, int state, char c_next)
{
set<string_pos> new_state;
new_state.insert(0);
set<string_pos>::iterator iter = states[state].begin();
for( ; iter != states[state].end(); iter++)
{
if (pattern[*iter] == c_next)
{
new_state.insert(*iter + 1);
}
}
state_num temp = get_state(new_state); // fix concurrent modification bug
transition_table[state][c_next] = temp;
#if TRACE
cout << "Adding edge " << state << " -" << c_next << "-> "
<< transition_table[state][c_next] << endl;
#endif
}
void fill_transition_table(string pattern)
{
set<string_pos> initial_pos;
initial_pos.insert(0);
get_state(initial_pos);
for (unsigned int state=0; state < states.size(); state++)
{
repeat_inner_loop:
set<string_pos>::iterator iter = states[state].begin();
for( ; iter != states[state].end(); iter++)
{
if (*iter == (string_pos)pattern.length())
{
final[state] = true;
continue;
}
char c_next = pattern[*iter];
if (transition_table[state][c_next] == 0) {
fill_transition_table_entry(pattern, state, c_next);
goto repeat_inner_loop;
}
}
}
state_map.clear();
states.clear();
}
int dfa_string_search(string search_for, string search_in)
{
state_num cur_state = 0;
string_pos cur_pos = 0;
while (cur_pos < (string_pos)search_in.length() && !final[cur_state])
{
cur_state = transition_table[cur_state][search_in[cur_pos]];
cur_pos++;
}
if (final[cur_state])
return cur_pos - search_for.length();
else
return -1;
}
int main(int argc, char* argv[])
{
fill_transition_table(argv[1]);
int result = dfa_string_search(argv[1], argv[2]);
if (result == -1)
cout << "No match found." << endl;
else
cout << "Matched at position " << result << ":" << endl
<< string(argv[2]).substr(0, result) << "|"
<< string(argv[2]).substr(result) << endl;
system ("PAUSE");
return 0;
}
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Неможам да сватам, како мислиш не ти се појавува компајлерот ? :S

Претпоставувам дека мислиш... после компајлирање, кога ќе ја стартуваш програмата прозорот одма се гасне... ако мислиш за тоа, како ја стартуваш програмата, преку компајлер или преку команда ?

Ако ја стартуваш преку компајлер ќе ти се гасне програмот затоа што програмата има влезни параметри.
Значи ваква програма се стартува вака:
Код:
gcc imeNaPrograma.cpp vlez1 vlez2
...бар тоа го приметив вака од око, ако мислеше за нешто друго, кажи што точно правиш и што точно се дешава, дали ти вади ерор, ако вади кој ерор го вади... и ќе пробаме да ја наредиме. :)
 
Член од
2 октомври 2009
Мислења
100
Поени од реакции
2
Ако сака некој за семинарска ми е а не можам да се снајдам фала однапред



Да се креира класа Math, преку креирање на соодветни
header и implementation фајлови, која нема да содржи
податочни членови.
Да се дефинираат следните функции членови на класата:
• int abs(int a), ја враќа апсолутната вредност на
специфираниот цел број a.
• float ceil(float a), ја враќа најмалата float вредност
која е поголема или еднаква на специфираниот цел број a, и
е еднаква на некој цел број.
• int pow(int a, int b), се враќа вредноста на првиот
аргумент подигнат на степен од вториот аргумент, т.е. a^b.
• float max(float a, float b), се враќа поголемиот од
двете float вредности специфирани како аргументи.
Да се креира фајл koristi.cpp, во кој ќе се демонстрира
користењето на штотуку креираната класа Math и сите
нејзини функции членови. При креирањето на класата
забрането е да се користат готови библиотечни класи и
функции (освен iostream).
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Math.h
Код:
#pragma once

class Math
{
public:
	Math(void);
	~Math(void);

            // Тука ги дефинираш функциите
	int abs(int a);
	int pow(int a, int b);
	float max(float a, float b);

};
Math.cpp
Код:
#include "Math.h"

// Тука ги пишуваш функциите

Math::Math(void) {}

Math::~Math(void) {}

int Math::abs(int a) {
	return a<0?a-(a*2):a;
}

int Math::pow(int a, int b) {
	int sum = a;
	while(b > 1) {
		sum *= a;
		b--;
	}
	return sum;
}

float Math::max(float a, float b) {
	return a>=b?a:b;
}
main.cpp
Код:
#include <iostream>
#include "math.h" // Тука ја инклудираш класата

using namespace std;

int main()
{
	Math m; // Креираш објект од класата
           // Тука ги повиклуваш
	cout << "abs: " << m.abs(-5) << endl;
	cout << "pow: " << m.pow(4, 7) << endl;
	cout << "max: " << m.max(4.32f, 4.23f) << endl;
	cin.get();
}
 
Член од
2 октомври 2009
Мислења
100
Поени од реакции
2
Фала многу SkyDriver :smir: звер си :helou:поздрав
 

Kajgana Shop

На врв Bottom