Exemple #1
0
/*
 * Main du programme filtre
 *@param argv  : tableau pointant les paramères du programme
 *@param argc  : nombre de paramètres du programme
 */
int main(int argc, char * const argv[])
{
    
    FILE * fichier = NULL;
    int *vecteur=NULL;
    int *ControlL = NULL;
    int *ControlC = NULL;
    int n = 0;
    int m = 0;
    
    verificationOptions(argv);
    
    int nbFichiers = get_nbre_domaines(argv, 1);
    
    stab2d *tableauStructures = malloc(nbFichiers*sizeof(stab2d));
    stab2d unTableau;
    for (int i=0; i<nbFichiers; i++) {
        fichier = fopen(argv[(i+2)], "r");
        if(fichier == NULL) {
            signaler_erreur(OUVERTURE_FICHIER_ERREUR);
            exit(1);
        }
        
        n = nbre_lignes_fichier(fichier);
        vecteur = creerVecteur(fichier, &n);
        m = taille_max_lignes(vecteur, n);
        if(!m)  {
            signaler_erreur(FICHIER_SANS_DONNEE_ERREUR);
            exit(1);
        }

        unTableau.ptr = charger(fichier, vecteur, n, m);
        unTableau.lignes = n;
        unTableau.colonnes = m;
        
        tableauStructures[i] = unTableau; // fait une copie
        fclose(fichier);

    }
    

    stab2d tabFusion = fusionMatrices(tableauStructures, nbFichiers, argv[1][1]);
    n = tabFusion.lignes;
    m = tabFusion.colonnes;
    ControlL = control(argv, n, 'L');
    ControlC = control(argv, m, 'C');
    
    tabFusion.ptr = filter(tabFusion.ptr, &tabFusion.lignes, &tabFusion.colonnes, ControlC, ControlL);
    
    affiche_Tab2D(tabFusion);
    
    

    free(vecteur);
    free(tableauStructures);
    free(ControlC);
    free(ControlL);
       
    return 0;
}
Exemple #2
0
int main ( int argc, char *argv[] )
{
	int x=2;
	int ligne=0;
	int colonne=0;
	int compteur=0;
	int compteur2=0;
	char option=' ';
	struct tab2D matrice1;
	struct tab2D matrice2;
	
	// argc doit etre  1 pour que le programme s'execute//
    if ( argc <= 1 ) 
    {
		signaler_erreur(0);
		return EXIT_SUCCESS;
    }

	if (!strcmp(argv[1], "-H"))
	{
		option='h';
	}
	else if (!strcmp(argv[1], "-V"))
	{
		option='v';
	}
    	
	while (argv[x]!=NULL)
	{
		// argv[1] , c est le nom du fichier 
		FILE *file = fopen( argv[x], "r" );
		
		if ( file == NULL)
		{
			if (!strcmp(argv[x], "-L")  || !strcmp(argv[x], "-C" )) 
			{
				break;
			}
			
			signaler_erreur(0);
			return EXIT_SUCCESS;		
		}

		fseek(file, 0L, SEEK_END);
		// si le fichier est vide, tableau vide
		if ( ftell(file) == 0 )
		{
			if (!strcmp(argv[x], "-L")  || !strcmp(argv[x], "-C" )) 
			{
				break;
			}
			
			signaler_erreur(1);
			return EXIT_SUCCESS;
		}

		rewind(file);
		// nombre de ligne dans le fichier
		ligne=nbre_lignes_fichier(file);
		//un tableau pour contenir le nombre de colonne dans chaque linge
		int tableau[ligne] ;
		compteur2=nbre_colonnes_fichier(file, tableau,ligne);
		// max du colonne
		colonne=taille_max_lignes(tableau , ligne);
		// ligne sans les zeros
		ligne=ligneAjuster (tableau, ligne);
		
		int tab2[ligne*compteur2] ;
		valeurTab(file,tab2);
		
		if(compteur==0)
		{
			matrice1=charger(file,tableau,ligne,colonne,tab2);
			matrice1.lignes=ligne;
			matrice1.colonnes=colonne;
		}
		else
		{
			matrice2=charger(file,tableau,ligne,colonne,tab2);
			matrice2.lignes=ligne;
			matrice2.colonnes=colonne;
			matrice1=fusion(matrice1,matrice2,option);
		}
			
		fclose( file );		
		compteur++;
		x++;
	}
	
	if (argc == (x))
	{
		affiche_Tab2D(matrice1);
		return EXIT_SUCCESS;
	}
	
 	if (!strcmp(argv[x], "-L")  || !strcmp(argv[x], "-C" )) 
	{
	    if (erreurOption(argv,x) == 1)
		{
			return EXIT_SUCCESS;
		}
		
 		matrice1 = filter(matrice1, control(argv, matrice1.colonnes, 'C'), control(argv, matrice1.lignes, 'L'));			
		affiche_Tab2D(matrice1);
		
		return EXIT_SUCCESS;
 	}

}