kostenloser Webspace werbefrei: lima-city


C# 1-10 und dann 10-1 in einer eintigen for-Schleife - wie?

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    limabone

    Kostenloser Webspace von limabone

    limabone hat kostenlosen Webspace.

    Hallo,
    ich bin gerade dabei zusammen mit meiner Klasse C# zu lernen. Ich bin begeistert was für lustige Sachen man machen kann. Nun haben wir eine Aufgabe, einen Zähler, der bei 1 Anfängt und bei 10 aufhört mithilfe einer for()-Schleife zu machen, allerdings soll der dann auch noch, wenn er bei 10 angelangt ist wieder zurück auf 1 Zählen und dann das Programm anhalten.
    Ich dachte mir zuerst, dass es unmöglich sei, aber er bestand darauf, dass es möglich wäre. Kennt ihr eine Seite, bei der das steht bzw. wisst ihr wie man das anstellt?
    Ich hatte es mit
    for(i=1;i<10;-i=i++)
    probiert aber das führte zu nichts...

    edit by bladehunter: Falls hier nochmal jemand eine Lösung mit 2 for-schleifen postet, wird der Eintrag kommentarlos gelöscht, da dies nicht der Aufgabenstellung entspricht!

    Beitrag zuletzt geändert: 12.11.2010 19:33:37 von bladehunter
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. C# hat nix mit C/C++ und D zu tun. Verschoben nach Sonstige Programmiersprachen.
    edit: Verschoben in unser funkelnagelneues .NET Forum.

    Folgender D Code sollte dir weiterhelfen:
    #!/usr/bin/dmd -run
    
    import std.stdio;
    
    int main( char[][] args ) {
    	int inc = 1;
    	for( int i = 1; i > 0 ; i+= inc ) {
    		writeln( i );
    
    		if( i == 9 ) {
    			inc = -1;
    		}
    	}
    
    
    	return 0;
    }

    C# kann ich nicht :tongue:

    Beitrag zuletzt geändert: 8.11.2010 20:36:10 von bladehunter
  4. Naja du könntest einfach einen Zähler machen der intern in der For-Schleife zählt, und die For-Schleife entsprechend öfters laufen lassen.

    Also in etwa so:
    zaehler = 1;
    for(i=1; i<20; i++)
    {
        if(zaehler == 10){
        zaehler--;
        }
        else{
        zaehler++;
        }
    }


    Der Code soll nur zu Veranschaulichung dienen, ich kenn mich null mit C# aus :D

    Beitrag zuletzt geändert: 8.11.2010 18:34:58 von alfr3d
  5. Dein Code ist schwachsinn, alfred... und würde in einer Endlosschleife enden.

    Immer wenn zaehler 10 wird dekrementierst du um 1 um im nächsten Schritt wieder um eins zu inkrementieren, wodurch der Wert wieder 10 wird und so weiter...

    Grüße,
    Adrians



    PS: Mit einem boolean, den man toggled würde es funktionieren. Ich finde allerdings bladehunters Variante ungemein eleganter und würde das ganze genauso lösen. Das umschreiben auf C# dürfte das kleinste Übel sein.

    Beitrag zuletzt geändert: 9.11.2010 22:46:41 von adrians
  6. Bitfrickelei (funktioniert so in PHP und diversen Scriptsprachen). Dürfte auch in C klappen. Wenn C# Bitshifting hat, gehts da auch:

    // $x ist 32 bit (signed|unsigned ist egal)
    for ($x = 0x1ff, $i = 1; $i; $i += $x & 1 ? 1 : -1, $x >>= 1) {
        printf(' %s ', $i);
    }


    Elegant ist aber was anderes ...

    alfr3d schrieb:
    zaehler = 1;
    for(i=1; i<20; i++)
    {
        if(zaehler == 10){
        zaehler--;
        }
        else{
        zaehler++;
        }
    }


    Meintest du "if (i == 10) ..." ?

    Beitrag zuletzt geändert: 11.11.2010 0:51:15 von alopex
  7. for ($i = 1; $i < 19; ++$i) {
        echo $i > 10 ? 20 - $i : $i, "\n";
    }
  8. Autor dieses Themas

    limabone

    Kostenloser Webspace von limabone

    limabone hat kostenlosen Webspace.

    Ich hatte es geschafft mit 2 Variablen. Ging recht einfach schauts euch an:
    #include "stdafx.h"
    
    int main(void) {
     int max = 10;
     int i;
     int c = max;
     int limit = 2*max;
    
     for(i=1;i<limit;i++) {
      if(i>max) {
       c--;
       printf("%d\n",c);
      }else{
       printf("%d\n",i);
      }
     }
     return 0;
    }

    In diesem Fall ist dieser Zähler sogar noch beliebig wählbar, bis wohin der Zähler zählen muss.
  9. Hey! Das ist C und kein C#! Und du hast mehr als 2 Variablen verwendet.

    Viel kürzer:
    #include <stdio.h>
    
    int main( int argc, char ** args ) {
    	int i, inc = 1;
    	for( i = 1; i > 0 ; i+= inc ) {
    		printf( "%i\n", i );
    
    		if( i == 9 ) {
    			inc = -1;
    		}
    	}
    
    	return 0;
    }
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!