Difference between revisions of "Talk:Esercizi a caso del Prof."

From Sistemi Operativi
Jump to navigation Jump to search
(esercizio codice sorgente)
 
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<syntaxhighlight lang="c">
+
Personalmente ci ho messo un po' a vedere quale fosse il punto del quine; stampare una stringa con tutto il codice mi sembrava  di primo acchito un'idea stupida o troppo facile, invece non è banale.
//questo e' un tentativo che funziona
 
//Stefano Bernagozzi
 
#include <stdio.h>
 
  
void main(void){
+
Dopo diverse ore (e qualche suggerimento sulle format string e printf) sono riuscita ad arrivare a un programma funzionante anch'io:
  char c[] = __FILE__;
+
<syntaxhighlight lang="C">
  FILE *f;
+
#include<stdio.h>
  if (f=fopen(c, "r")){
+
main(){ char *a="#include<stdio.h>%cmain(){ char *a=%c%s%c;char *b=%c%s%c;printf(%c%s%c%s%c";char *b=",10,34,s,34,34,b,34,34,s,34,b,10);}";printf("#include<stdio.h>%cmain(){ char *a=%c%s%c;char *b=%c%s%c;printf(%c%s%c%s%c",10,34,a,34,34,b,34,34,a,34,b,10);}
    while ((c[0]=getc(f))!=EOF)
+
</syntaxhighlight>
      printf("%c", c[0]);
+
(salvo poi scoprire, guardando meglio il codice di F. e A., che è possibile scrivere una cosa del genere: char *s="%cciao%c";  printf(s,34); che stampa a video <i>ciao</i> tra virgolette.)
    fclose(f);
+
 
  }
+
 
}
+
 
 +
Alla fine mi resta circa quello che è già stato postato.
 +
<syntaxhighlight lang="C">
 +
#include<stdio.h>
 +
main(){char *a="#include<stdio.h>%cmain(){char *a=%c%s%c;printf(a,10,34,a,34,10);}%c";printf(a,10,34,a,34,10);}
 
</syntaxhighlight>
 
</syntaxhighlight>

Latest revision as of 20:17, 2 November 2013

Personalmente ci ho messo un po' a vedere quale fosse il punto del quine; stampare una stringa con tutto il codice mi sembrava di primo acchito un'idea stupida o troppo facile, invece non è banale.

Dopo diverse ore (e qualche suggerimento sulle format string e printf) sono riuscita ad arrivare a un programma funzionante anch'io:

#include<stdio.h>
main(){ char *a="#include<stdio.h>%cmain(){ char *a=%c%s%c;char *b=%c%s%c;printf(%c%s%c%s%c";char *b=",10,34,s,34,34,b,34,34,s,34,b,10);}";printf("#include<stdio.h>%cmain(){ char *a=%c%s%c;char *b=%c%s%c;printf(%c%s%c%s%c",10,34,a,34,34,b,34,34,a,34,b,10);}

(salvo poi scoprire, guardando meglio il codice di F. e A., che è possibile scrivere una cosa del genere: char *s="%cciao%c"; printf(s,34); che stampa a video ciao tra virgolette.)


Alla fine mi resta circa quello che è già stato postato.

#include<stdio.h>
main(){char *a="#include<stdio.h>%cmain(){char *a=%c%s%c;printf(a,10,34,a,34,10);}%c";printf(a,10,34,a,34,10);}