#include #include #include void convertPPMtoPGM(FILE *fpPPM, FILE *fpPGM); void convertPPMtoPGMbinary(FILE *fpPPM, FILE *fpPGM); #define fileName1 "D:\\YANA STUDY\\PROGRAMMING\\Homework Programming\\HW4\\snail.ppm" //ex alef #define fileName2 "D:\\YANA STUDY\\PROGRAMMING\\Homework Programming\\HW4\\snail.pgm" //ex alef #define fileName3 "D:\\YANA STUDY\\PROGRAMMING\\Homework Programming\\HW4\\party.ppm" //ex gimel for alf #define fileName4 "D:\\YANA STUDY\\PROGRAMMING\\Homework Programming\\HW4\\party.pgm"//ex gimel for alef #define SIZE_OF_FORMAT 2 #define SIZE_OF_COMMENTS 10 void checkIfExist(FILE *fp); void main(){ FILE *fpPPM; //pointer to file in PPM format in ASCII FILE *fpPGM; //pointer to file in PGM format in ASCII FILE *fpPPMbinary;//pointer to file in PPM format in binary FILE *fpPGMbinary;//pointer to file in PPM format in binary fpPPM=fopen(fileName1,"r"); fpPGM=fopen(fileName2,"w"); fpPPMbinary=fopen(fileName3,"rb"); fpPGMbinary=fopen(fileName4,"wb"); checkIfExist(fpPPM); checkIfExist(fpPPMbinary); convertPPMtoPGM(fpPPM,fpPGM);// color snail to grey snail (ASCII) convertPPMtoPGMbinary(fpPPMbinary, fpPGMbinary);//color party to grey party (binary) fclose(fpPPM); fclose(fpPGM); fclose(fpPPMbinary); fclose(fpPGMbinary); } void checkIfExist(FILE *fp){ if(fp==NULL){ printf("file doesn't exist\n"); exit(1); } } void convertPPMtoPGMbinary(FILE *fpPPM, FILE *fpPGM){ char format[SIZE_OF_FORMAT]; int length, height, depth; int red; int blue; int green; int greyColor; int i=1; int binaryDataStart; int totalSize; fscanf(fpPPM,"%s",format); fscanf(fpPPM,"%d",&length); fscanf(fpPPM,"%d",&height); fscanf(fpPPM,"%d",&depth); fprintf(fpPGM,"P5 "); fprintf(fpPGM,"%d ",length); fprintf(fpPGM,"%d ",height); fprintf(fpPGM,"%d ",depth); totalSize=height*3*length; //amount of numbers binaryDataStart=ftell(fpPPM); //current location of the sign (after reading the header) while(i