#include <stdio.h>
#include <stdlib.h>
/* programma ipologismou elaxistou koinou pollaplasiou*/
main()
{
int a,b,max,min,k=0;
printf("dose dio akereous arithmous:\n");
scanf("%d %d",&a,&b);
if (a<=0 || b<=0)
{
printf("ksanadose dio akeraious arithmous:\n");
scanf("%d %d",&a,&b);
}
if (a==b)
{
min=a;
max=a;
}
else if (a>b)
{
min=b;
max=a;
}
else
{
min=a;
max=b;
}
while ((max%min)!=0)
{
k=k+1;
max=max*2;
if ((max%min)==0)
{
printf("\n\nEKP=%d\n---",max);
}
}
if (k==0)
{
printf("\n\nEKP=%d\n---",max);
}
printf("\n\n\n");
system("pause");
}
μηπως μπορείτε να βοηθήσετε? τι λάθος έχω και για ορισμένες τιμές του α,β μου βγάζει οτι το ελάχιστο κοινό πολλαπλάσιο είναι 0? είμαι πρωτοετής στην πληροφορική και είμαι λίγο ψιλοάσχετος.. χρησιμοποιώ το περιβάλλον "Bloodshed Dev-C++" σε windows vista. ευχαριστώ!
programma ipologismou elaxistou koinou pollaplasiou
Συντονιστές: WebDev Moderators, Super-Moderators
-
- Δημοσιεύσεις: 67
- Εγγραφή: 22 Σεπ 2007 06:55
programma ipologismou elaxistou koinou pollaplasiou
Ο κώδικας είναι κώδικας αρχαρίου (με πολλούς πλεονασμούς) και το λάθος σου είναι ότι διπλασιάζεις το max.
Πάρε ένα πιο κομψό κώδικα (από τροποποίηση του δικού σου). Δεν θυμάμαι τον αλγόριθμο του ΕΚΠ (και ούτε κάθησα να τον σκεφτώ) αλλά δεν μου φάινεται αυτός που έχω αναπτυξει (στα πολύ γρήγορα) λάθος.
#include <stdio.h>
#include <stdlib.h>
/* programma ipologismou elaxistou koinou pollaplasiou*/
#define MIN_(a, b) ((a)<(b))?(a):(b)
#define MAX_(a, b) ((a)>(b))?(a):(b)
main()
{
int a,b,max,min,ekp,c;
do
{
printf("dose dio akereous arithmous:\n");
scanf("%d %d",&a,&b);
}while(!(a>0 && b>0));
min = MIN_(a, b);
max = MAX_(a, b);
c = 1;
do{
ekp=max*c;
c++;
} while ((ekp%min)!=0)
printf("\n\nEKP=%d\n---",ekp);
printf("\n\n");
system("pause");
}
Πάρε ένα πιο κομψό κώδικα (από τροποποίηση του δικού σου). Δεν θυμάμαι τον αλγόριθμο του ΕΚΠ (και ούτε κάθησα να τον σκεφτώ) αλλά δεν μου φάινεται αυτός που έχω αναπτυξει (στα πολύ γρήγορα) λάθος.
#include <stdio.h>
#include <stdlib.h>
/* programma ipologismou elaxistou koinou pollaplasiou*/
#define MIN_(a, b) ((a)<(b))?(a):(b)
#define MAX_(a, b) ((a)>(b))?(a):(b)
main()
{
int a,b,max,min,ekp,c;
do
{
printf("dose dio akereous arithmous:\n");
scanf("%d %d",&a,&b);
}while(!(a>0 && b>0));
min = MIN_(a, b);
max = MAX_(a, b);
c = 1;
do{
ekp=max*c;
c++;
} while ((ekp%min)!=0)
printf("\n\nEKP=%d\n---",ekp);
printf("\n\n");
system("pause");
}
programma ipologismou elaxistou koinou pollaplasiou
ευχαριστώ για την βοήθεια!
Μέλη σε σύνδεση
Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες