Benötige dringend Hilfe



  • Hallo liebe Community benötige dringend Hilfe bei Folgenden Fall

    Mission : Write a program which fulfills the requirements below
    Description

    -We want to calculate a sum of squares of some integers, excepting negatives
    -The first line of the input will be an integer N (1 <= N <= 100)
    -Each of the following N test cases consists of one line containing an integer X (0 < X <= 100), followed by X integers (Yn, -100 <= Yn <= 100) space-separated on the next line
    -For each test case, calculate the sum of squares of the integers excepting negatives, and print the calculated sum to the output. No blank line between test cases
    -(Take input from standard input, and output to standard output)
    Rules

    Do not use loop statements like while/until/for/each/loop, and goto

    kann mir sagen wie das geht also ich denke mal mit rekursiven Funktionen aber wie kann ich z.b. ein array einlesen ohne schleifen zu benutzen?



  • ChengYang schrieb:

    kann mir sagen wie das geht also ich denke mal mit rekursiven Funktionen aber wie kann ich z.b. ein array einlesen ohne schleifen zu benutzen?

    Ich wills nicht sagen, weil ich bei dieser Anfrage das Gefühl habe, Du nimmst bloß jemandem den Studienplatz weg.
    Bau Code, der ahnen läßt, daß Du Dich mit dem Problem gut beschäftigt hast und der Lösung näher kommst. Oder kauf im Projekte-Forum eine fertige Lösung.



  • Do not use loop statements like while/until/for/each/loop, and goto

    Da es anscheinend erlaubt ist, setjmpund longjmp zu verwenden, sollte das doch gar nicht so schwer sein!



  • Danke für die tollen Antworten. Erstens hat das nichts mit dem Studium zu tun und zweitens scheinst du es ja auch nicht zu können



  • Danke SJLJ



  • ChengYang schrieb:

    Danke für die tollen Antworten. Erstens hat das nichts mit dem Studium zu tun und zweitens scheinst du es ja auch nicht zu können

    Doch, ich kann's, sogar ohne setjump und Rekursion. Momentchen, ich baue es gerade mal…



  • Habe dazu ein Programm gebaut, das Dein Programm schreibt. Mein Programm darf ja einfach Schleifen benutzen.

    Ich schick ich Dir nur mein Programm, weil es viel kleiner ist als das erstellte schleifenlose C-Programm. Einfach laufenlassen und das Ergebnis ausdrucken.

    So sieht der erstellte Code aus, hier als Beispiel mit X<=2 und N<=2:

    //Da X und N beschränkt sind, reicht auch ein beschränktes Programm.
    #include <stdio.h>
    int main(){
    	int n,x,y,s;
    	scanf("%d",&n);
    	if(n==2){
    		s=0;
    		scanf("%d",&x);
    		if(x==2){
    			scanf("%d",&y);
    			if(y>=0){
    				s=s+y*y;
    			}
    			scanf("%d",&y);
    			if(y>=0){
    				s=s+y*y;
    			}
    		}
    		if(x==1){
    			scanf("%d",&y);
    			if(y>=0){
    				s=s+y*y;
    			}
    		}
    		printf("%d\n",s);
    		s=0;
    		scanf("%d",&x);
    		if(x==2){
    			scanf("%d",&y);
    			if(y>=0){
    				s=s+y*y;
    			}
    			scanf("%d",&y);
    			if(y>=0){
    				s=s+y*y;
    			}
    		}
    		if(x==1){
    			scanf("%d",&y);
    			if(y>=0){
    				s=s+y*y;
    			}
    		}
    		printf("%d\n",s);
    	}
    	if(n==1){
    		s=0;
    		scanf("%d",&x);
    		if(x==2){
    			scanf("%d",&y);
    			if(y>=0){
    				s=s+y*y;
    			}
    			scanf("%d",&y);
    			if(y>=0){
    				s=s+y*y;
    			}
    		}
    		if(x==1){
    			scanf("%d",&y);
    			if(y>=0){
    				s=s+y*y;
    			}
    		}
    		printf("%d\n",s);
    	}
    	return 0;
    }
    

    Man kann sich natürlich gut vorstellen, daß das genauso bis 100 geht.

    #include <iostream>
    using namespace std;
    
    int main(){
    	cout<<"//Da X und N beschränkt sind, reicht auch ein beschränktes Programm.\n";
    	cout<<"#include <stdio.h>\n";
    	cout<<"int main(){\n";
    	cout<<"\tint n,x,y,s;\n";
    	cout<<"\tscanf(\"%d\",&n);\n";
    	for(int n=100;n>=1;--n){
    		cout<<"\tif(n=="<<n<<"){\n";
    		for(int nn=0;nn!=n;++nn){
    			cout<<"\t\ts=0;\n";
    			cout<<"\t\tscanf(\"%d\",&x);\n";
    			for(int x=100;x>=1;--x){
    				cout<<"\t\tif(x=="<<x<<"){\n";
    				for(int xx=0;xx!=x;++xx){
    					cout<<"\t\t\tscanf(\"%d\",&y);\n";
    					cout<<"\t\t\tif(y>=0){\n";
    					cout<<"\t\t\t\ts=s+y*y;\n";
    					cout<<"\t\t\t}\n";
    				}
    				cout<<"\t\t}\n";
    			}
    			cout<<"\t\tprintf(\"%d\\n\",s);\n";
    		}
    		cout<<"\t}\n";
    	}
    	cout<<"\treturn 0;\n";
    	cout<<"}\n";
    }
    

    Bitte ein Foto vom Prof machen, wenn Du den Ausdruck abgibst, der hat bestimmt nicht erwartet, daß es so viele Seiten werden und wird schwer begeistert sein.



  • lol...

    @ChengYang:

    Dieses Forum ist dazu da, Hilfe bei konkreten Problemen zu geben und nicht um deine Hausaufgaben zu machen.

    Wenn du nicht zeigst, dass du es wenigstens versucht hast, wird dir niemand helfen. Und wenn du es versucht hast, zeig es uns und was dabei dein Problem ist.


Anmelden zum Antworten