WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

do while aus c --> wie in matlab ?

 

Studentenwerk
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 14.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2014, 18:47     Titel: do while aus c --> wie in matlab ?
  Antworten mit Zitat      
Hey Leute,

ich habe ein C-Skript zur Ausgabe von Primzahlen nach Erastosthenes vorliegen.
Dabei ist n die obere Grenze zu welcher die Primzahlen ausgegeben werden sollen.
Dieses lautet wie folgt:
Code:

int main() {
    unsigned int n;
    scanf("%u", &n);
    int prim[n+1];
    int i;
    for (i = 0; i <= n; i++)
   {
        prim[i] = 1;
    }
   int p = 2;
   
   do {
        int j;
        for (j = p*2; j <= n; j += p)
       {
            prim[j] = 0;
        }
       
        do {
            p++;
        } while (prim[p] == 0);
   
   } while (p*p <= n);
   
    printf("Primzahlen bis %i: \n", n);
    for (i = 2; i <= n; i++)
    {
        if (prim[i] == 1)
       {
            printf("%i ",i);
        }      
    }
return 0; }
 


Ich möchte dieses nun in Matlab Code umwandeln (ich weiß, es geht auch deutlich einfacher mit dem Modulus Operator) um für mich etwas Matlab und Programmieren zu lernen.

Nun kann ich leider nicht Zeile für Zeile übersetzen, da es die do-while-Schleife nicht gibt.
Meine Frage ist nun: wie mache ich es nun am elegantesten? Hat jemand einen guten Vorschlag?

Vielen Dank und schöne Grüße
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 27.03.2014, 17:20     Titel:
  Antworten mit Zitat      
Hallo

Was ist Unterschied zwischen WHILE und DO-WHILE.
Da DO-WHILE auf jeden Fall einmal ausgeführt wird, muss du in Matlab den Code was in Do-While-Schleife eingebettet ist, einmal vor der WHILE-Schleife setzen und dann WHILE mit der gleicher Bedingung implementieren

Andere Möglichkeit wäre WHILE-Schleife auf unendlich setzen und dann die Bedingungs-Überprüfung(Achtung hier auf ungültigkeit prüfen) durch IF zusammen mit BREAK implementieren
z.B:
Code:

p =2
while true
 
   while true
      p = p+1
      if prim(p)~=0
         break;
      end
   end
 
  if p*p >n
     break;
  end

end

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Studentenwerk
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 14.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2014, 17:31     Titel:
  Antworten mit Zitat      
okay, vielen dank für die antwort. habe mir die break/continue sache mal näher angeschaut, damit wirds auf alle fälle klappen.
besten dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.