Drucken in C



  • Ich hab folgenden Quellcode:

    /*Zufallssitzordnungsgenerator*/
    /*Autor: MAURER Dietmar AMH02*/
    /*Programmversion: 1 Beta*/
    
    /*Einbinden der Headerdateien*/
    #include <time.h>
    #include <stdio.h>
    #include <conio.h>
    #include <process.h>
    #include <stdlib.h>
    
    /*Starten der Hauptfunktion*/
    void main (void)
    {
    	int f[27],i,j,k,l,auswahl;	/*Deklaration der Variablen*/
    	srand(time(NULL));				/*ZZG initialisieren*/
    	do{
    	for(l=0;l<100;l++)			/*Diese for-Schleife ist nur zur optischen Verschoenerung*/
    	{							/*Dadurch flimmern immer andere Zahlen über den Bildschirm,*/
    	for (i=0;i<27;i++)			/*und es entsteht der Eindruck wie bei einer Lottoziehung*/
    	{
    		f[i]=(rand()%27)+1;  /*Berechnen der Zufallszahl*/
    		for(j=0;j<i;j++)     /*Bereich der ZZ: zwischen 27 und 1*/
    		{
    			if(f[i]==f[j])   /*Wenn ein FE das gleiche ist, wie die*/
    			i--;			 /*gerade berechnete ZZ, wird i um 1 zurueckgesetzt*/
    		}
    	}
    	printf("\t\t=================================\n");  /*Ausgabe der Überschrift*/
    	printf("\t\t== Sitzplangenerator V. 1 Beta ==\n");
    	printf("\t\t=================================\n\n");
    	printf("\tFuer neue Zufallszahlen beliebige Taste druecken\n");
    	printf("\t\t     Zum Beenden X druecken\n\n\n\t");
    
    	/*Ausgabe im Tabellenformat*/
    	for(k=1;k<28;k++)
    	{
    		printf("%2.d    ",f[k-1]);	/*Ausgabe der Katalognummer*/
    		if(k%3==0)					/*Bei jeder 3. Nummer sollen 3 Leerzeichen ausgegeben werden*/
    		{	
    			printf("   ");
    		}
    		if(k%6==0)					/*Bei jeder 6. Zahl soll eine leere Zeile gemacht werden*/
    		{
    			printf("\n\n\t");
    		}
    	}
    	if(l<99)
    		system("cls");
    	}
    	auswahl=getche();						/*Warten auf Tastendruck*/
    	}while(auswahl!= 'x' && auswahl!='X');  /*Die Ausgabe soll so lange fortfahren, bis entweder X*/
    											/*oder x gedrueckt werden*/
    	if(auswahl=='x' || auswahl=='X')
    	{
    		system("cls");
    		printf("\n\n\n\n\n\n\n\n\n\n\t\tProgrammiert von Maurer Dietmar, AMH02");
    		getch();
    	}
    }
    

    Und jetzt brauch ich noch einen code, der das eindimensionale Feld zum Standartdrucker schickt und dort in Tabellenform ausdruckt.

    Bin noch Anfänger in C deswegen bitte nicht aufregen wenns einfacher Möglichkeiten gibt!

    PS: Kann auch in C++ sein der Quellcode 😃



  • Mir gefällt dein Code nicht, er ist nicht ANSI C und hat so böse Sachen wie system("cls");....



  • Wenns absoluter Standard ohne jeglichen Wunsch ist: Schau mal in die Konsolen-FAQ, dort findest du einen Beitrag dazu! Ansonsten wirst du uns Wohl oder Übel noch Informationen über dein Betriebssystem geben müssen, damit man dich verschieben kann.

    Achja: system("cls") ist tatsächlich böse, Kommentare hast du auch noch ein paar zuviel, aber wenn du erst Anfänger bist passt das schon 🙂

    Edit: Man wird dich zudem hier wegen "void main ()" lynchen weil es "int main ()" heißt, aber darüber kannst du getrost hinwegsehen 🙄

    @supertux: Wieder mal aussagekräftig unterwegs *g*

    MfG SideWinder



  • Warum ist system("cls"); böse ??
    Und warum int main () ??
    in c++ kann man das void in den klammern weglassen, aber am anfang gehörts doch trozdem hin oder??

    Naja betriebsystem ist win xp, und es wäre super wenn er die druckeranfrage immer zum standartdrucker schicken würde, denn es sollte auch über netzwerk gehen (falls das möglich ist). Ich habs bis jetzt schon zusammengebracht alles in dateien zu speichern:

    /*Zufallssitzordnungsgenerator*/
    /*Autor: MAURER Dietmar AMH02*/
    /*Programmversion: 1 Beta*/
    
    /*Einbinden der Headerdateien*/
    #include <time.h>
    #include <stdio.h>
    #include <conio.h>
    #include <process.h>
    #include <stdlib.h>
    
    int oeffneDatei (int f[])
    {
    	time_t result;
    	result = time(NULL);
    	int i;
    	FILE* datei;
    	datei=fopen("SitzplanGes.txt","a+");
    	FILE* datei2;
    	datei2=fopen("SitzplanAktuell.txt","w+");
    	if(datei==NULL)
    		return 0;
    	else
    	{
    	fprintf(datei,"%s\n\n",asctime(localtime(&result)));
    	for(i=1;i<28;i++)
    	{
    		fprintf(datei,"%4d",f[i-1]);
    		if(i%3==0 && i!=0)
    			fprintf(datei,"     ");
    		if(i%6==0 && i!=0)
    			fprintf(datei,"\n");
    	}
    	fprintf(datei,"\n\n\n");
    	fclose(datei);
    	}
    	if(datei2==NULL)
    		return 0;
    	else
    	{
    	fprintf(datei2,"%s\n\n",asctime(localtime(&result)));
    	for(i=1;i<28;i++)
    	{
    		fprintf(datei2,"%4d",f[i-1]);
    		if(i%3==0 && i!=0)
    			fprintf(datei2,"     ");
    		if(i%6==0 && i!=0)
    			fprintf(datei2,"\n");
    	}
    	fclose(datei2);
    		return 1;
    	}
    }
    /*Starten der Hauptfunktion*/
    void main (void)
    {
    	int f[27],i,j,k,l,auswahl;	/*Deklaration der Variablen*/
    	srand(time(NULL));				/*ZZG initialisieren*/
    	do{
    	/*Speichern der Daten in der Datei datei.txt*/
    	for(l=0;l<100;l++)			/*Diese for-Schleife ist nur zur optischen Verschoenerung*/
    	{							/*Dadurch flimmern immer andere Zahlen über den Bildschirm,*/
    	for (i=0;i<27;i++)			/*und es entsteht der Eindruck wie bei einer Lottoziehung*/
    	{
    		f[i]=(rand()%27)+1;  /*Berechnen der Zufallszahl*/
    		for(j=0;j<i;j++)     /*Bereich der ZZ: zwischen 27 und 1*/
    		{
    			if(f[i]==f[j])   /*Wenn ein FE das gleiche ist, wie die*/
    			i--;			 /*gerade berechnete ZZ, wird i um 1 zurueckgesetzt*/
    		}
    	}
    	printf("\t\t=================================\n");  /*Ausgabe der Überschrift*/
    	printf("\t\t== Sitzplangenerator V. 1 Beta ==\n");
    	printf("\t\t=================================\n\n");
    	printf("\tFuer neue Zufallszahlen beliebige Taste druecken\n");
    	printf("\t\t     Zum Beenden X druecken\n\n\n\t");
    	/*Ausgabe im Tabellenformat*/
    	for(k=1;k<28;k++)
    	{
    		printf("%2.d    ",f[k-1]);	/*Ausgabe der Katalognummer*/
    		if(k%3==0)					/*Bei jeder 3. Nummer sollen 3 Leerzeichen ausgegeben werden*/
    		{	
    			printf("   ");
    		}
    		if(k%6==0)					/*Bei jeder 6. Zahl soll eine leere Zeile gemacht werden*/
    		{
    			printf("\n\n\t");
    		}
    	}
    	if(l<99)
    		system("cls");
    	}
    	if(oeffneDatei(f)==0)
    		printf("FEHLER");
    	auswahl=getche();						/*Warten auf Tastendruck*/
    	}while(auswahl!= 'x' && auswahl!='X');  /*Die Ausgabe soll so lange fortfahren, bis entweder X*/
    											/*oder x gedrueckt werden*/
    	if(auswahl=='x' || auswahl=='X')
    	{
    		system("cls");
    		printf("\n\n\n\n\n\n\n\n\n\n\t\tProgrammiert von Maurer Dietmar, AMH02");
    		getch();
    	}
    }
    


  • 1. Weil es extrem plattformabhängig und langsam ist (Siehe dazu auch FAQ-Beitrag: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39453.html )

    2. Das void in den Klammern kannst du halten wie du möchtest, aber es heißt "int main ()" und nicht "void main ()"!

    @Moderator: Bitte ins WinAPI-Forum verschieben, für das Drucken unter WinXP benötigt er die WinAPI.

    MfG SideWinder


Anmelden zum Antworten