Ich weiß nicht viel über Modularität, außer es teilt im Grunde Ihren Code in kleinere Gruppen von Funktionen (diese Frage ist für die C-Sprache).Wie kann ich Modularität in meinen Code in C integrieren?
Ich mache eine Aufgabe, wo ich nur sehen kann, dass mein Quellcode mit einer riesigen verschachtelten Schleife in "main" arbeitet (keine if-Anweisungen sind für die Zuweisung erlaubt). Mit anderen Worten, wenn ich versuche, Funktionen zu verwenden, um den Code zu schneiden, sehe ich nicht, wie die notwendige verschachtelte Schleife funktioniert. Aber die Aufgabe erfordert einen Modularitätsversuch.
Kann mir also jemand sagen, wie ich den folgenden Code in kleinere Module zerlegen könnte, ohne seine tatsächliche Ausführung zu verpfuschen?
#include <stdio.h>
int main(void)
{
int counter = 0;
int marknum = 0;
int sectioncode, studentnumber;
int dummyvariable = 0;
int index;
int marks;
int total = 0;
do
{
printf("Enter a Section Code: ");
scanf("%d", §ioncode);
while(sectioncode > 4 || sectioncode < 1)
{
printf("Invalid value entered. Must be 1 to 4, please re-enter: ");
scanf("%d", §ioncode);
}
do
{
printf("Enter the Student's ID: ");
scanf("%d", &studentnumber);
while (studentnumber < 1 || studentnumber > 999999999)
{
printf("Invalid value entered. Must be 1 to 999999999. Please re-enter: ");
scanf("%d", &studentnumber);
}
while (sectioncode != 0)
{
while (counter < 5)
{
counter++;
marknum++;
printf("Enter mark%d: ", marknum);
scanf("%d", &marks);
total = total + marks;
}
printf("%09d's total mark is %d\n", studentnumber, total);
counter = 0;
marknum = 0;
sectioncode = 0;
}
dummyvariable = 1;
} while (dummyvariable = 0);
} while (sectioncode != 0);
return 0;
}
Auch, wie ich Modularität für diese eine (gleiche Frage im Grunde) übernehmen würde:
#include <stdio.h>
int main(void)
{
int num; //User inputted number
int i; //Increment variable
char ch; //Check for characters variable
do //Begin "do while" loop
{
printf("\nEnter a number:"); //User prompt
scanf ("%d", &num); //Scan for user inputted integer
while ((ch = getchar()) != '\n') //Scan for character, check for non-numeric input
{
printf("Invalid number entered. Please re-enter: "); //Error message and prompt for invalid user input
scanf ("%d", &num); //Scan for user inputted integer
} //Repeat loop if condition becomes true again
for (i=0; i<num; i++) //Begin "for" loop; condition prints asterisks equal to user number; increment i by 1
{
printf("*"); //Prints a single asterisk each loop until i is less than num
}
} while (num!=0); //Stop "do while" loop if user enters 0
return 0;
}
Ehrlich gesagt, versuche ich, Ihre vorhandenen Schleifen in erster Linie sinnvoll zu machen. Insbesondere das Fehlen der Schleife in Bezug auf die Schleife while (sectioncode! = 0) und die Bedingung while (dummyvariable = 0); Unabhängig davon, klar einen richtigen Abschnitt Code und ebenso richtige Studenten ID sammeln, konnte isoliert werden, um ihre eigenen Funktionen. Ehrlich, wenn Ihr Code * funktioniert *, gehört er zu [codereview.stackexchange.com] (http: // codereview.stackexchange.com), um Fragen wie Ihre zu beantworten. – WhozCraig
Das zweite Fragment kann in zwei untergeordnete Funktionen plus main aufgeteilt werden. Die erste untergeordnete Funktion würde eine Zahl lesen und zurückgeben. Es sollte einige Vorsichtsmaßnahmen mehr treffen (EOF zum Beispiel). Die zweite untergeordnete Funktion wäre die Druckschleife. Das sind einfach. Sie sollten die Vorzüge von 'putchar ('*') überprüfen:' vs 'printf (" * ");'. –
Beachten Sie, dass Ihre Zeile '} while (dummyvariable = 0)' am Ende einer 'do {...} while-Schleife bewirkt, dass die Schleife jedes Mal beendet wird, da dies eine Zuweisung und kein Vergleich ist. Die Zuweisung "dummyvariable = 1;" unmittelbar bevor sie irrelevant ist. –