PDA

View Full Version : ελεγχος δεκαδικου C++


Rouli
27-05-2005, 14:39
Εχω γραψει ενα προγραμμα στην c++ αλλα δεν βρισκω το λαθος που δεν μου τρεχει. Μπορειτε να με βοηθησετε?

"Η συναρτηση θα δεχεται ως παραμετρο ενα αλφαριθμητικο(μεγιστο μηκος 4) και θα ελεγχει αν ειναι εγκυρος θετικος δεκαδικος ακεραιος αριθμος. Αν ειναι εγκυρος επιστεφει 1 αλλιως 0."

Κωδικας:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

main()
{
char s[4];


printf("Dwse dekadiko arithmo : ");
scanf("%s",s);


/* elegxos dekadikos*/

int check_decimal(char s[]);
{ int ok=1, i;

i=0;
for (i=0; i < strlen(s) && ok==1;i++)

{
if (!(s[i]>='0' && s[i]<='9') )
ok=0;
i++;
}

return ok;

}

Indiana
27-05-2005, 14:44
ένα γρήγορο λάθος που είδα είναι αυτό
printf("Dwse dekadiko arithmo : ");
scanf("%s",s);

το σωστό είναι:
scanf("%s",&s); -> ή αν είναι λάθος αυτό βάλε scanf("%c",&s); και δοκίμασε....

δεν θυμάμαι και πολλά αλλά δοκίμασε

DarthMoul
27-05-2005, 15:47
ένα γρήγορο λάθος που είδα είναι αυτό
printf("Dwse dekadiko arithmo : ");
scanf("%s",s);

το σωστό είναι:
scanf("%s",&s); -> ή αν είναι λάθος αυτό βάλε scanf("%c",&s); και δοκίμασε....

δεν θυμάμαι και πολλά αλλά δοκίμασε
Δεν είναι λάθος. Το όνομα ενός πίνακα είναι η διεύθυνση του πρώτου του στοιχείου. s==&s[0] είναι πάντα true. Το &s είναι pointer σε pointer και μπορεί να ανατεθεί μόνο σε μεταβλητή τύπου char**.

yop
29-05-2005, 12:57
Οι stdlib.h, math.h δεν χρειαζονται.
H char s[4] θα κανει παντα overflow γιατι ενα string 4 χαρακτηρων ειναι ουσιαστικα 5 με το μηδενικο χαρακτηρα στο τελος (δεν θα δημιουργησει προβλημα στην εκτελεση)./* elegxos dekadikos*/

int check_decimal(char s[]);
{ int ok=1, i;

i=0;
for (i=0; i < strlen(s) && ok==1;i++)

{
if (!(s[i]>='0' && s[i]<='9') )
ok=0;
i++;Μολις ανεβασες αλλη μια φορα το i και αρα θα ελεγχεις καθε δευτερο χαρακτηρα.
Επισης δεν ελεγχεις πουθενα αν το μηκος ειναι 4.
Τελος η κληση στην συναρτηση ειναι λαθος, πρεπει να εχει δηλωθει πριν χρησιμοποιηθει και οχι να γραψεις κληση δηλωση και υλοποιηση μαζι.
Αν θες δες το attachment για το πως σου διορθωσα τον κωδικα για να δεις τα σημεια που σου αναφερω.

Rouli
29-05-2005, 17:40
Ευχαριστώ πολύ παιδιά για την βοηθεια!!!!