Comment retourner 2 valeurs dans une fonction

KiraX10A Messages postés 260 Statut Membre -  
KiraX10A Messages postés 260 Statut Membre -
Bonjour,

Je code en contents/c/cintro.php3 langage C/C++ et mon problème est le suivant:
J'ai une fonction et à l'intérieur j'ai deux compteurs (compteur et compteur2) que je dois retourner. J'arrive à retourner "compteur" mais comment faire pour retourner "compteur2" ?

Merci d'avance :)

Kira
A voir également:

6 réponses

serpan2 Messages postés 191 Statut Membre 6
 
essaye ceci à la fin de ta fonction au lieu du : return compteur2;
°°°°°°°°°°°°°
return array( compteur, compteur2 );

°°°°°°°°°°°°°
et aprés tu les récuperent de cette façon :

$retour = nom_fonction();

echo "$retour[0] - $retour[1]";

qui sont respectivement compteur et compteur2
1
serpan2 Messages postés 191 Statut Membre 6
 
normalement une fonction retourne une valeur, et en cas de plusieurs valeurs tu dois les retourner dans un tableau. si tu nous met le code de la fonction ça serais plus clair
0
KiraX10A Messages postés 260 Statut Membre 20
 
Ha oki.
Voilà le code (un peu lourd :s ):

int compare(vector < structure > Tab1, vector < structure > Tab2, vector <structure> Tab3, vector <structure> Tab4, ofstream &fichier)
{
	compteur = 0;
	num_ligne = 0;

	vector < structure >::iterator itCurrent1;				// Création d'un vector de type "Colonne_struct" qui est un iterator de nom "itCurrent1".
	vector < structure >::iterator itEnd1 = Tab1.end( );	// Création d'un vector de type "Colonne_struct" qui est un iterator de nom "itEnd1" initialisé à la fin d'un tableau.

	vector < structure >::iterator itCurrent2;				// Idem
	vector < structure >::iterator itEnd2 = Tab2.end( );	// Idem
	
	cout << endl;
	
	fichier << " ************** FICHIER No 1 ************** " << endl << endl;

	itCurrent1 = Tab1.begin( );					
	for ( ; itCurrent1 != itEnd1; ++itCurrent1)					// Deux boucles for imbriquées permettent la comparaison;
	{															// On compare chaque ligne du tableau1 à l'ensemble des 
		bool trouve = 0;										// lignes du tableau2.
		num_ligne = num_ligne++;
																// Pour une ligne du tableau1, on parcour l'ensemble du tableau2
		itCurrent2 = Tab2.begin( );								// Si la ligne est trouvée, on place "trouve" à true et on sort 
		for ( ; itCurrent2 != itEnd2; ++itCurrent2)				// de la seconde boucle for.
		{														// Si la ligne n'est pas trouvée, "trouve" est à "false", on incrémente un compteur
			//if ( *itCurrent2 == *itCurrent1 )					// (qui sera chargé de renseigner par la suite le nombre de lignes absentes)
			//{													// et on affiche la ligne qui ne se trouve pas dans le tableau2.
			//	trouve = true;									// Enfin, lorsque la comparaison est finie, on renvoi la valeur du compteur.
			//	break;
			//}

			for(int i = 0; i < 8; ++i)
			{
				if (*itCurrent2 == *itCurrent1 && itCurrent2->col[i] == itCurrent1->col[i])
				{
					trouve = true;
					break;
				}

				if( trouve == false )
				{
					compteur = compteur++;
					//cout << *itCurrent1;
					fichier << num_ligne << "\t" << "(Fichier 1)" << " "<< itCurrent2->col[i] << endl;
				}
			}
		}
	}


	fichier << endl << endl << endl << " ************** FICHIER No 2 ************** " << endl << endl;

	return compteur;




	compteur2 = 0;
	num_ligne = 0;

	vector < structure >::iterator itCurrent3;				// Création d'un vector de type "Colonne_struct" qui est un iterator de nom "itCurrent1".
	vector < structure >::iterator itEnd3 = Tab3.end( );	// Création d'un vector de type "Colonne_struct" qui est un iterator de nom "itEnd1" initialisé à la fin d'un tableau.

	vector < structure >::iterator itCurrent4;				// Idem
	vector < structure >::iterator itEnd4 = Tab4.end( );	// Idem
	
	cout << endl;
	

	itCurrent3 = Tab3.begin( );					
	for ( ; itCurrent3 != itEnd3; ++itCurrent3)					// Deux boucles for imbriquées permettent la comparaison;
	{															// On compare chaque ligne du tableau1 à l'ensemble des 
		bool trouve = 0;										// lignes du tableau2.	
		num_ligne = num_ligne++;
																// Pour une ligne du tableau1, on parcour l'ensemble du tableau2
		itCurrent4 = Tab4.begin( );								// Si la ligne est trouvée, on place "trouve" à true et on sort 
		for ( ; itCurrent4 != itEnd4; ++itCurrent4)				// de la seconde boucle for.
		{		
																// Si la ligne n'est pas trouvée, "trouve" est à "false", on incrémente un compteur	
			//if ( *itCurrent2 == *itCurrent1 )					// (qui sera chargé de renseigner par la suite le nombre de lignes absentes)
			//{													// et on affiche la ligne qui ne se trouve pas dans le tableau2.
			//	trouve = true;									// Enfin, lorsque la comparaison est finie, on renvoi la valeur du compteur.
			//	break;
			//}
			for(int i = 0; i < 8; ++i)
			{
				if (*itCurrent3 == *itCurrent4 && itCurrent3->col[i] == itCurrent4->col[i])
				{
					trouve = true;
					break;
				}

				if(trouve == false)
				{
					ofstream fichier( "C:\\Documents and Settings\\bastien\\Bureau\\Fichier log1.txt", ios::out | ios::app );
					if(fichier.is_open() == false)
					{
						cout << "ERREUR LORS DE L'OUVERTURE DE Fichier log1.txt" << endl;
						assert(false);
						return -1;
					}

					compteur2 = compteur2++;
					//cout << *itCurrent1;
					fichier << num_ligne << "\t" << "(Fichier 2)" << "  " << itCurrent3->col[i]  << "\t" << itCurrent4->col[i] << endl;
				}
			}
		}
	}
	return compteur2;
}
0
KiraX10A Messages postés 260 Statut Membre 20
 
Rebonjour.
Alors merci pr l'astuce, mais j'ai qques question :D.

En C/C++ on peut écrire $retour = nom_fonction();

echo "$retour[0] - $retour[1]";

?

Ca me dit rien. Comment ca fonctionne?

Merci d'avance :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KX Messages postés 19031 Statut Modérateur 3 020
 
Si c'est en C : Regarde les struct
Si c'est en C++ les struct marchent aussi mais une classe c'est plus joli...
0
KiraX10A Messages postés 260 Statut Membre 20
 
Merci :)
0