begin process at 2008 08 21 19:18:01
1 229 576 membres
391 nouveaux aujourd'hui
14 263 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PGCD + ECRITURE FICHIER + ALIGNEMENT


Description

Un de plus... un p'tit prog de pgcd avec les divsions Euclidiennes.

C'qui est un peu tricky c'est l'affichage en trois colonnes : comment faire pour les avoir bien alignées ? ben j'vous laisse découvrir :) En même temps il enregistre dans PGCD.txt, dans le même rep que le prog, toutes les colonnes, avec les bordures, tout aligné... pret pour etre imprimé pour vos exos de 3eme quoi :)

pour info, c'est un prog fait avec visual C++

Source

  • // PGCD.cpp : Defines the entry point for the console application.
  • #include "StdAfx.h"
  • #include <stdio.h>
  • int GetPow(int x) {
  • if (x>=1000000000) return 10;
  • else if (x>=100000000 ) return 9;
  • else if (x>=10000000 ) return 8;
  • else if (x>=1000000 ) return 7;
  • else if (x>=100000 ) return 6;
  • else if (x>=10000 ) return 5;
  • else if (x>=1000 ) return 4;
  • else if (x>=100 ) return 3;
  • else if (x>=10 ) return 2;
  • else if (x>=0 ) return 1;
  • }
  • void WriteSpace(FILE* fp, int maxPow, int x) {
  • switch (maxPow-GetPow(x)) {
  • case 9: {
  • fwrite(" ", 1, 9, fp);
  • printf(" ");
  • break;
  • }
  • case 8: {
  • fwrite(" ", 1, 8, fp);
  • printf(" ");
  • break;
  • }
  • case 7: {
  • fwrite(" ", 1, 7, fp);
  • printf(" ");
  • break;
  • }
  • case 6: {
  • fwrite(" ", 1, 6, fp);
  • printf(" ");
  • break;
  • }
  • case 5: {
  • fwrite(" ", 1, 5, fp);
  • printf(" ");
  • break;
  • }
  • case 4: {
  • fwrite(" ", 1, 4, fp);
  • printf(" ");
  • break;
  • }
  • case 3: {
  • fwrite(" ", 1, 3, fp);
  • printf(" ");
  • break;
  • }
  • case 2: {
  • fwrite(" ", 1, 2, fp);
  • printf(" ");
  • break;
  • }
  • case 1: {
  • fwrite(" ", 1, 1, fp);
  • printf(" ");
  • break;
  • }
  • }
  • }
  • void WriteFile(FILE* fp, int maxPow, int PGCD, int tag) {
  • switch (tag) {
  • case 1: {
  • //write "*---*---*---*" in the file
  • fwrite("*", 1, 1, fp);
  • for (int i=1; i<maxPow+3; i++) fwrite("-", 1, 1, fp);
  • fwrite("*", 1, 1, fp);
  • for (i=1; i<maxPow+3; i++) fwrite("-", 1, 1, fp);
  • fwrite("*", 1, 1, fp);
  • for (i=1; i<maxPow+3; i++) fwrite("-", 1, 1, fp);
  • fwrite("*\n", 1, 2, fp);
  • break;
  • }
  • case 2: {
  • //write "| PGCD: xx |" in the file
  • fprintf(fp, "| PGCD: %d", PGCD);
  • for (int i=1; i<maxPow*3-GetPow(PGCD)+2; i++) fwrite(" ", 1, 1, fp);
  • fwrite("|\n", 1, 2, fp);
  • break;
  • }
  • case 3: {
  • //write "*-----------*" in the file
  • fwrite("*", 1, 1, fp);
  • for (int i=1; i<maxPow*3+3*3; i++) fwrite("-", 1, 1, fp);
  • fwrite("*\n", 1, 2, fp);
  • break;
  • }
  • }
  • }
  • int main(int argc, char* argv[])
  • {
  • int a, b, r, Ans;
  • printf("===== PGCD =====");
  • do {
  • r = 1; //mustn't be initialized on 0 (see the while...)
  • printf("\n\n\n");
  • printf("Enter Number 1: ");
  • scanf("%d", &a);
  • printf("Enter Number 2: ");
  • scanf("%d", &b);
  • printf("\n");
  • if (b>a) {
  • int c = a;
  • a = b;
  • b = c;
  • }
  • int maxPow = GetPow(a);
  • FILE* fp = fopen("PGCD.txt", "w");
  • WriteFile(fp, maxPow, 0, 1);
  • while (r!=0) {
  • r = a%b;
  • fwrite("| ", 1, 2, fp);
  • WriteSpace(fp, maxPow, a);
  • fprintf(fp, "%d | ", a);
  • printf( "%d | ", a);
  • WriteSpace(fp, maxPow, b);
  • fprintf(fp, "%d | ", b);
  • printf( "%d | ", b);
  • WriteSpace(fp, maxPow, r);
  • fprintf(fp, "%d |\n", r);
  • printf( "%d\n", r);
  • a = b;
  • b = r;
  • }
  • WriteFile(fp, maxPow, 0, 1);
  • WriteFile(fp, maxPow, a, 2);
  • WriteFile(fp, maxPow, 0, 3);
  • fclose(fp);
  • printf("\nPGCD: %d\n\n1: Quit\n2: Restart\nYour Choice: ", a);
  • scanf("%d", &Ans);
  • } while (Ans!=1);
  • return 0;
  • }
// PGCD.cpp : Defines the entry point for the console application.

#include "StdAfx.h"
#include <stdio.h>

int GetPow(int x) {
	if      (x>=1000000000) return 10;
	else if (x>=100000000 ) return 9;
	else if (x>=10000000  ) return 8;
	else if (x>=1000000   ) return 7;
	else if (x>=100000    ) return 6;
	else if (x>=10000     ) return 5;
	else if (x>=1000      ) return 4;
	else if (x>=100       ) return 3;
	else if (x>=10        ) return 2;
	else if (x>=0         ) return 1;
}

void WriteSpace(FILE* fp, int maxPow, int x) {
	switch (maxPow-GetPow(x)) {
		case 9: {
			fwrite("         ", 1, 9, fp);
			printf("         ");
			break;
		}
		case 8: {
			fwrite("        ", 1, 8, fp);
			printf("        ");
			break;
		}
		case 7: {
			fwrite("       ", 1, 7, fp);
			printf("       ");
			break;
		}
		case 6: {
			fwrite("      ", 1, 6, fp);
			printf("      ");
			break;
		}
		case 5: {
			fwrite("     ", 1, 5, fp);
			printf("     ");
			break;
		}
		case 4: {
			fwrite("    ", 1, 4, fp);
			printf("    ");
			break;
		}
		case 3: {
			fwrite("   ", 1, 3, fp);
			printf("   ");
			break;
		}
		case 2: {
			fwrite("  ", 1, 2, fp);
			printf("  ");
			break;
		}
		case 1: {
			fwrite(" ", 1, 1, fp);
			printf(" ");
			break;
		}

	}

}


void WriteFile(FILE* fp, int maxPow, int PGCD, int tag) {
	switch (tag) {
		case 1: {
			//write "*---*---*---*" in the file
			fwrite("*", 1, 1, fp);
			for (int i=1; i<maxPow+3; i++) fwrite("-", 1, 1, fp);
			fwrite("*", 1, 1, fp);
			for (i=1; i<maxPow+3; i++) fwrite("-", 1, 1, fp);
			fwrite("*", 1, 1, fp);
			for (i=1; i<maxPow+3; i++) fwrite("-", 1, 1, fp);
			fwrite("*\n", 1, 2, fp);
			break;
		}
		case 2: {
			//write "| PGCD: xx   |" in the file
			fprintf(fp, "| PGCD: %d", PGCD);
			for (int i=1; i<maxPow*3-GetPow(PGCD)+2; i++) fwrite(" ", 1, 1, fp);
			fwrite("|\n", 1, 2, fp);
			break;
		}
		case 3: {
			//write "*-----------*" in the file
			fwrite("*", 1, 1, fp);
			for (int i=1; i<maxPow*3+3*3; i++) fwrite("-", 1, 1, fp);
			fwrite("*\n", 1, 2, fp);
			break;
		}
	}
}


int main(int argc, char* argv[])
{
	int a, b, r, Ans;
	printf("===== PGCD =====");
	do {
		r = 1; //mustn't be initialized on 0 (see the while...)
		printf("\n\n\n");
		printf("Enter Number 1: ");
		scanf("%d", &a);
		printf("Enter Number 2: ");
		scanf("%d", &b);
		printf("\n");
		if (b>a) {
			int c = a;
			a = b;
			b = c;
		}
		int maxPow = GetPow(a);
		FILE* fp = fopen("PGCD.txt", "w");
		WriteFile(fp, maxPow, 0, 1);
		while (r!=0) {
			r = a%b;

			  fwrite("| ", 1, 2, fp); 
			  WriteSpace(fp, maxPow, a); 
			  fprintf(fp, "%d | ", a);
			  printf(     "%d | ", a); 
				WriteSpace(fp, maxPow, b);
				fprintf(fp, "%d | ", b);
				printf(     "%d | ", b); 
				  WriteSpace(fp, maxPow, r); 
				  fprintf(fp, "%d |\n", r);
				  printf(     "%d\n", r);

			a = b;
			b = r;
		}
		WriteFile(fp, maxPow, 0, 1);
		WriteFile(fp, maxPow, a, 2);
		WriteFile(fp, maxPow, 0, 3);
		fclose(fp);
		printf("\nPGCD: %d\n\n1: Quit\n2: Restart\nYour Choice: ", a);
		scanf("%d", &Ans);
	} while (Ans!=1);
	return 0;
}

Conclusion

^^
  • signaler à un administrateur
    Commentaire de ymca2003 le 09/10/2003 14:41:02

    en utilisant : fprintf(fp, "%8d", a), le nombre sera écrit sur 8 caractères en remplissant avec des espaces au début. D'autres exemples :
    fprintf(fp, "%-8d ", a); les espaces sont ajoutés après
    fprintf(fp, "%08d", a); des 0 sont ajoutés devant

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS