Problem ze zrozumieniem części programu

0

Czy mógłby mi ktoś wytłumaczyć co robi i co daje ta część programu:

char konwersja(int ilosc){
	int ile=ilosc;					
	stringstream ss;				//konwersja int-->string
	string wokol;
	ss << ile;		
	ss >> wokol;
	std::string str(wokol);			//konwersja string-->char
	char znak = str[0];		
    return znak;
}

w grze saper:

#include<iostream>
#include<stdio.h>
#include<sstream>
#include<time.h>
using namespace std;

char konwersja(int ilosc){
	int ile=ilosc;					
	stringstream ss;				//konwersja int-->string
	string wokol;
	ss << ile;		
	ss >> wokol;
	std::string str(wokol);			//konwersja string-->char
	char znak = str[0];		
    return znak;
}
void wyswietl2(int x, int y, char zakryj[11][11]){
	for (int i=1;i<=10;i++){
		cout<<endl;
		for(int j=1;j<=10;j++){
			zakryj[y][x]='B';
			cout<<zakryj[i][j]<<"  ";
		}
	}
}
void wyswietl(int x, int y, char zakryj[11][11], int ilosc){
	cout<<endl;
	for (int i=1;i<=10;i++){
		cout<<endl;
		for(int j=1;j<=10;j++){
			zakryj[y][x]=konwersja(ilosc);
			cout<<zakryj[i][j]<<"  ";
		}
	}
}
void gra(){
	int n,x,y,s,d,puste;
	while(1){
		cout<<"Podaj ilosc bomb max[99]: ";			//podajemy ilosc bomb
		cin>>n;
		if (n>=100)continue;
		else break;
	}

	srand(time(0));
	int tab[11][11];					//generowanie pustych pól
	for (int i=1;i<=10;i++){
		for(int j=1;j<=10;j++){
			tab[i][j]=0;			
		}
	}
		for(int k=0;k<n;k++){
				s=1+rand()%10;			//losowanie bomb na planszy
				d=1+rand()%10;
				tab[s][d]=1;   
		}

	puste=100-n;
	cout<<"Ilosc bomb na planszy: "<<n<<endl;
		char zakryj[11][11];
	for (int i=1;i<=10;i++){
		cout<<endl;
		for(int j=1;j<=10;j++){
			zakryj[i][j]='-';			//zakrywanie bomb znakiem '-'
			cout<<zakryj[i][j]<<"  ";
		}
	}
	while(1){
		cout<<endl<<endl;
		int ilosc=0;
	cout<<"Podaj wspolrzedne punktu: "<<endl;
	cout<<"x= ";
	cin>>x;
	cout<<"y= ";
	cin>>y;
	if(zakryj[y][x]!='-')continue;
		if(tab[y][x]==1){
			wyswietl2(x,y,zakryj);
			cout<<endl<<endl;
			cout<<"Bomba!!! Przegrales!"<<endl<<endl;
			break;
		}
		if (x<=10 && y<=10){
			if(tab[y][x]==0){
				if(tab[y][x-1]==1)ilosc++;
				if(tab[y-1][x]==1)ilosc++;
				if(tab[y-1][x-1]==1)ilosc++;			//sprawdzanie
				if(tab[y+1][x-1]==1)ilosc++;			//czy wokół punktu
				if(tab[y+1][x]==1)ilosc++;			//znajdujš się bomby
				if(tab[y-1][x+1]==1)ilosc++;
				if(tab[y][x+1]==1)ilosc++;
				if(tab[y+1][x+1]==1)ilosc++;
				
				wyswietl(x,y,zakryj,ilosc);
				puste--;
				if(puste==0){cout<<endl<<"Brawo!!! Wygrales"<<endl<<endl;break;}
				cout<<endl<<endl;
				cout<<"Pozostalo "<<puste<<" pol do odkrycia";
				continue;
			}
		}
	}
}
int main()
{
	char kont;
cout<<"             ******     *      *******   *******  *******"<<endl;
cout<<"             *         * *     *      *  *        *      *"<<endl;
cout<<"             ******   *   *    *******   ******   *******"<<endl;
cout<<"                  *  *******   *         *        *     *"<<endl;
cout<<"             ****** *       *  *         *******  *      *"<<endl<<endl<<endl;
	while(1){
		gra();
		cout<<"Grasz jeszcze raz?"<<endl<<"t - aby grac dalej..."<<endl<<"n - aby zakonczyc..."<<endl;
		cin>>kont;
		if (kont=='t' || kont=='T'){system("cls");continue;}
		else break;
	}
	cout<<endl;
	system("pause");
	return 0;
}
```c

```



**Z góry dziękuję.**
0
Majkel0001 napisał(a):

Czy mógłby mi ktoś wytłumaczyć co robi i co daje ta część programu:

char konwersja(int ilosc){
	int ile=ilosc;					
	stringstream ss;				//konwersja int-->string
	string wokol;
	ss << ile;		
	ss >> wokol;
	std::string str(wokol);			//konwersja string-->char
	char znak = str[0];		
    return znak;
}

Niepotrzebnie przepisuje ilosc do ile :P.
Tak poważniej to w dziwny sposób zamienia int na string, a z tego pobiera pierwszy znak i go zwraca.

1

Ja bym konwersję zapisał tak:

char konwersja(int ilosc) { return '0'+ilosc; }

W twojej wersji jeszcze zapomniałeś po drodze skonwertować na xml, wysłać przez soap do google documents, odebrać jako plik excela i przez dde pobrać ten znak z komórki A1.

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