Alternative løsninger til dette program i C

Tags:    c programmering

Hej

Jeg har lavet dette program i C, som skal simulere et ligende program på en PLC. Men da jeg er relativt ny i C programmering, er jeg nysgerrig på hvordan andre måske ville lave programmet, da jeg tænker at der må være mere optimale måder at lave det på. Jeg håber at i vil hjælpe, så jeg kan blive klogere :)

Programmet simulerer sortering af dåser, på basis af om de er magnetiske eller ej. Til dette lader jeg programmet lave tilfældige tal og værdien af disse afgøre om dåsen er magnetisk.



#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hejsa mit navn er Eddie, jeg sorterer dåser\n");
int u;
for (u=1; u<600000000; u++);
{
}
printf("Jeg vil nu demonsterer sorteringen af 10 dåser for jer\n");
for (u=1; u<600000000; u++);
{
}
printf("Sorteringen er på basis af hvorvidt dåserne er magnetiske eller ej\n\n");
for (u=1; u<1000000000; u++);
int c,n;
for (c=1;c<=10;c++)
{
n=rand()%2+1;
if
(n>=2)
printf("%s%d\n", "\n Dåsen er magnetisk og består derfor af meteallerne Al og Fe. \n Værdien af det indsamlede data er ", n);
else
printf("%s%d\n", "\n Dåsen er ikke magnetisk og består derfor af metallet Al. \n Værdien af det indsamlede data er ", n);
}
for (u=1; u<600000000; u++);
{
}
printf("\n\n Tak fordi du benyttede programmet\n");
return 0;
}




Dit kode ser meget rodet ud.
Du kan bruge sleep funktionen istedet for at bruge for-loekker naar du blot vil lave smaa tids pauser. Det vil faa koden til at se paenere ud og nemmere at overskue.
Programmet i sig selv laver jo stort set ikke andet end at tjekke vaerdien af en integer, saa det er meget begraenset, hvad man kan foreslaa af andre metoder.



Hej Søren

Mange tak for svaret, jeg tænkte netop at løkkerne, var en dårlig løsning, da jeg bare ønsker en lille pause. Hvordan bruger man sleep funktionen? :)



Har du slået advarsler til når du kompilerer? (-Wall og -Wextra). De store tal er meget mistænksomme ud. C standarden garanterer kun et maksimum på 32767 for ints, men det afhænger af platformen (det må godt være højere).

Hvis du ved at du er garanteret ints som er 32/64 bits (du er meget tæt på at overskride 32) så er du selvfølgelig dækket ind. Men ellers kan det volde problemer pga. af overflow.

Interessant historie der relaterer (http://thedailywtf.com/Articles/Classic-WTF-The-Speedup-Loop.aspx ).



Indlæg senest redigeret d. 11.06.2014 19:45 af Bruger #14645




Indlæg senest redigeret d. 11.06.2014 21:37 af Bruger #18836
t