Σελ. 2 από 2 ΠρώτηΠρώτη 12
Εμφάνιση 16-24 από 24
  1. #16
    Εγγραφή
    14-09-2004
    Μηνύματα
    387
    Downloads
    0
    Uploads
    0
    Οι λέξεις στο αρχείο είναι με μικρά ή κεφαλαία ή και τα δύο ;

  2. #17
    Εγγραφή
    19-03-2009
    Περιοχή
    ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ
    Ηλικία
    48
    Μηνύματα
    288
    Downloads
    0
    Uploads
    0
    Παράθεση Αρχικό μήνυμα από Nicke Εμφάνιση μηνυμάτων
    Το εχω ηδη κανει αλλα τοτε δεν τυπωνει τιποτα στη οθονη!
    Κώδικας:
    #include <stdio.h>
    #include <string.h>
    
    int isValidWord(int,char []);
    int main(){
        int number=0;
        while (number<1000000 || number>9999999){
            printf("dose ton kodiko:");
            scanf("%d",&number);getchar();
            if (number<1000000 || number>9999999) printf("prepei o ari8mos na einai 7psifios!!\n");
        }
        FILE *fr=fopen ("lekseis.txt", "rt");
        char a[10];
        while(fgets(a, 10, fr) != NULL){
            a[8]='\0';
            if (isValidWord(number,a)==1) 
                printf("\n i leksi %s dimioyrgi8ike apo ton ari8mo %d",a,number);
            //else 
                //printf("\n i leksi %s den dimioyrgi8ike apo ton ari8mo %d",a,number);
        }
        fclose(fr);
        getchar();
        return 0;
    }
    
    
    int isValidWord(int number ,char a[]){
        char numberString[8];
        char b;
        sprintf(numberString,"%d",number);
        int valid=1;
        for (int i=0;i<7;i++){
            switch (a[i]){
            case 'A':
            case 'B':    
                b='1';
                break;
            case 'C':
            case 'D':
            case 'E':    
                b='2';
                break;
            case 'F':
            case 'G':           
                b='3';
                break;
            case 'H':
            case 'I':
            case 'J':            
                b='4';
                break;
            case 'K':
            case 'L':    
                b='5';
                break;
            case 'M':
            case 'N':
            case 'O':            
                b='6';
                break;
            case 'P':
            case 'Q':
            case 'R':            
                b='7';
                break;
            case 'S':
            case 'T':
                b='8';
                break;
           case 'U':
           case 'V':
                b='9';
                break;
           case 'X':
           case 'Y':
           case 'Z':
                b='0';
                break;
           default:
                b='x';                        
            }
            if (b=='x' || numberString[i]!=b) return -1;
            
        }
        return valid;
    }

    αρχείο lekseis.txt
    Κώδικας:
    AGKLMNO
    ABCWIOSH
    XCGRESJH
    FFFFFFFF
    SDFGSDFG
    δώσε σαν αριθμό τον 1355666

    πρέπει να σου πει ότι η AGKLMNO δημιουργήθηκε από τον 1355666

    αλλά μάλλον δεν έχεις καταλάβει τι κάνει το πρόγραμμα.
    εξηγώ λοιπόν.

    ανοίγει το αρχείο και διαβάζει μία μία τις λέξεις.
    αν βρει ότι μία λέξη του αρχείου έχει σχηματιστει από τον αριθμό που έδωσες
    την εμφανίζει.

    ΔΕΝ βρίσκει όλους τους συνδυασμούς λέξεων που προκύπτουν από το νούμερο που δίνεις.

  3. #18
    Εγγραφή
    03-07-2010
    Μηνύματα
    122
    Downloads
    0
    Uploads
    0
    ISP
    Forthnet
    Path Level
    Interleaved
    Να και η δική μου λύση:

    Κώδικας:
    #include <stdio.h>
    
    int main()
    {
        FILE *in = fopen("lexeis.txt", "r");
        char lexi[8], noumera[8], gramma;
        int i,a;
        printf("Dose noumera: ");
        scanf("%s", noumera);
        while(!feof(in))
        {
                 a=0;
                 fscanf(in, "%s\n", lexi);
                 for (i=0; i<7; i++)
                 {
                     switch(lexi[i])
                     {
                          case 'A':
                          case 'B':    
                               gramma = '1';
                               if (gramma != noumera[i])
                                  break;
                               else
                                  a++;
                               break;
                          case 'C':
                          case 'D':
                          case 'E':    
                               gramma = '2';
                               if (gramma != noumera[i])
                                  break;
                               else
                                  a++;
                               break;
                          case 'F':
                          case 'G':           
                               gramma = '3';
                               if (gramma != noumera[i])
                                  break;
                               else
                                  a++;
                               break;
                          case 'H':
                          case 'I':
                          case 'J':            
                               gramma = '4';
                               if (gramma != noumera[i])
                                  break;
                               else
                                  a++;
                               break;
                          case 'K':
                          case 'L':    
                               gramma = '5';
                               if (gramma != noumera[i])
                                  break;
                               else
                                  a++;
                               break;
                          case 'M':
                          case 'N':
                          case 'O':            
                               gramma = '6';
                               if (gramma != noumera[i])
                                  break;
                               else
                                  a++;
                               break;
                          case 'P':
                          case 'Q':
                          case 'R':            
                               gramma = '7';
                               if (gramma != noumera[i])
                                  break;
                               else
                                  a++;
                               break;
                          case 'S':
                          case 'T':
                               gramma = '8';
                               if (gramma != noumera[i])
                                  break;
                               else
                                  a++;
                               break;
                          case 'U':
                          case 'V':
                               gramma = '9';
                               if (gramma != noumera[i])
                                  break;
                               else
                                  a++;
                               break;
                          case 'X':
                          case 'Y':
                          case 'Z':
                               gramma = '0';
                               if (gramma != noumera[i])
                                  break;
                               else
                                  a++;
                               break;
                     }
                 } 
                 if (a >= 6)
                        printf("Lexi: %s\n", lexi);  
        }
        system("pause");
        fclose(in);
    }
    Με λίγα λόγια μετατρέπει το κάθε γράμμα της κάθε λέξης από το αρχείο στο αντίστοιχο νούμερο και τσεκάρει άμα είναι το ίδιο με το i-οστό νούμερο που έδωσες... Λίγο μάπα τα λέω στο τέλος...

  4. #19
    Εγγραφή
    19-03-2009
    Περιοχή
    ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ
    Ηλικία
    48
    Μηνύματα
    288
    Downloads
    0
    Uploads
    0
    if (gramma != noumera[i])
    break;
    else
    a++;
    break;
    δεν είναι πιο απλό έτσι?
    Κώδικας:
    if (gramma==noumera[i]) a++;
    break;
    για πιο λόγο όλο αυτό το μπέρδεμα?


    if (a >= 6)
    printf("Lexi: %s\n", lexi);

    -όταν δίνεις 7ψήφιο αριθμό περιμένεις λέξη 7 χαρακτήρων
    επομένως αρκεί το a==7

    -επίσης δεν βγαίνει από το for - loop αν δεν ψάξει όλα τα γράμματα ακόμα και αν βρει
    κάποιο που δεν ικανοποιεί τον δοσμένο αριθμό.


    -διαφωνώ με το system("pause"); υπάρχουν πολλοί τρόποι όπως η getchar();
    αλλά και πάλι για να δουλέψει το system("pause"); λείπει το #include <stdlib.h>


    -επίσης λείπει η αμυντική εισαγωγή δεδομένων.
    τι θα γίνει αν ο χρήστης δώσει νούμερο με 3 ψηφία?

    -τέλος αμέσως μετά από κάθε scanf που χρησιμοποιείς βάζε και μία getchar();

  5. #20
    Εγγραφή
    07-10-2010
    Ηλικία
    48
    Μηνύματα
    8
    Downloads
    0
    Uploads
    0
    Καλησπερα! Τελικα virxen ειχες δικιο. Το προγραμμα δουλευει. Ευχαριστω πολυ για τον κωδικα, τις παρατηρησεις και τα σχολια, βοήθησαν για να καταλαβω το προβλημα και την λυση. Το test που κανει η ασκηση: Εδωσα το νουμερο που ελεγε η ασκηση και τυπωθηκε η αναλογη λεξη.
    Αλλα η ασκηση δεν λεει αν δωσεις οποιοδηποτε νουμερο τι θα γινει. Μαλλον ενα αλλο test θα μπορουσε να γινει με συγκεκριμενα νουμερα που ηδη πρεπει να γνωριζεις για να τσεκαρεις ποιες λεξεις(ή μια λεξη) τυπωνονται στην οθονη.
    virxen εκει που γραφεις
    Κώδικας:
     sprintf(numberString,"%d",number);
        int valid=1;
        for (int i=0;i<7;i++)
    , αλλαξα το
    Κώδικας:
    for (int i=0;i<7;i++)
    σε
    Κώδικας:
    for (i=0;i<7;i++)
    και δηλωσα πιο πανω την μεταβλητη
    Κώδικας:
    char numberString[8];
        char b;
        int i;
        sprintf(numberString,"%d",number);
        int valid=1;
        for (i=0;i<7;i++)
    Μου εβγαζε ενα σφαλμα οτι με "for (int i=0;i<7;i++)" ειναι αποδεκτo μονο στην ANSI 99 ή κατι τετοιο. Γραφω κωδικα σε Mac OS X σε X CODE, λετε να παιζει καποιο ρολο?

  6. #21
    Εγγραφή
    03-07-2010
    Μηνύματα
    122
    Downloads
    0
    Uploads
    0
    ISP
    Forthnet
    Path Level
    Interleaved
    Παράθεση Αρχικό μήνυμα από virxen Εμφάνιση μηνυμάτων
    για πιο λόγο όλο αυτό το μπέρδεμα?
    Σίγα το μπέρδεμα, κόψε κάτι...

    Παράθεση Αρχικό μήνυμα από virxen Εμφάνιση μηνυμάτων
    -όταν δίνεις 7ψήφιο αριθμό περιμένεις λέξη 7 χαρακτήρων
    επομένως αρκεί το a==7
    Ναι, όντως, αυτό το είχα βάλει για κάποιο άλλο λόγο αλλά μετά ξέχασα να το βγάλω.

    Παράθεση Αρχικό μήνυμα από virxen Εμφάνιση μηνυμάτων
    -επίσης δεν βγαίνει από το for - loop αν δεν ψάξει όλα τα γράμματα ακόμα και αν βρει
    κάποιο που δεν ικανοποιεί τον δοσμένο αριθμό.
    Δεν σε αναγκάζει κανένας να το κάνεις αυτό απλά για πιο γρήγορα χρειάζεται.


    Παράθεση Αρχικό μήνυμα από virxen Εμφάνιση μηνυμάτων
    λείπει το #include <stdlib.h>
    Δεν το ήξερα, ευχαριστώ για την πληροφορία.


    Παράθεση Αρχικό μήνυμα από virxen Εμφάνιση μηνυμάτων
    -επίσης λείπει η αμυντική εισαγωγή δεδομένων.
    τι θα γίνει αν ο χρήστης δώσει νούμερο με 3 ψηφία?
    Ας φτιάξουμε πρώτα το βασικό τμήμα και μετά θα έρθει και η απαλοιφή των bugs...

    Παράθεση Αρχικό μήνυμα από virxen Εμφάνιση μηνυμάτων
    -τέλος αμέσως μετά από κάθε scanf που χρησιμοποιείς βάζε και μία getchar();
    Στην προκειμένη περίπτωση είναι περιττό...

  7. #22
    Εγγραφή
    03-02-2021
    Μηνύματα
    1
    Downloads
    0
    Uploads
    0
    ISP
    Cyta Hellas
    δεν ξέρω τι να κάνω με την εξής άσκηση που θα δείτε στην παρακάτω φώτο όποιος μπορεί ας με βοηθήσει...ευχαριστώ εκ των πρωτέρων

    Υγ 1 εκεί που λέει two είναι τυπογραφικό
    Υγ 2 πρέπει να το λύσω σε c
    Attached Thumbnails Attached Thumbnails 345ε.JPG  


  8. #23
    Εγγραφή
    11-03-2008
    Ηλικία
    27
    Μηνύματα
    16
    Downloads
    1
    Uploads
    0
    ISP
    ΟΤΕ Conn-x
    Παράθεση Αρχικό μήνυμα από vense97 Εμφάνιση μηνυμάτων
    δεν ξέρω τι να κάνω με την εξής άσκηση που θα δείτε στην παρακάτω φώτο όποιος μπορεί ας με βοηθήσει...ευχαριστώ εκ των πρωτέρων

    Υγ 1 εκεί που λέει two είναι τυπογραφικό
    Υγ 2 πρέπει να το λύσω σε c
    Γενικά αντί να πας κατευθείαν να κάνεις την υλοποίηση σε πρώτη φάση έχεις να καταλάβεις τον αλγόριθμο που σου δίνει. Ο πιο απλός τρόπος (για μένα τουλάχιστον) είναι να διαβάσεις το κάθε bullet και να γράψεις σε μορφή ψευδοκώδικα αυτό που λέει.

    Κώδικας:
    proc four(lim, xar) =
      pin <- array N chars                      [1]
      i <- 0
      sum <- 0
      while i < lim do                          [2]
        read pin
        if length(pin) < 5 or last(pin) == xar  [3]
          print "WRONG"
          break
        end if
        for j = 0 to length(pin) do
          if not pin[i] in A-Z then             [4]
            print pin[j]
            pin[j] <- C
            sum += 1
          end if
          print sum, pin                        [5]
        end for
        i += 1
      end while
      return i                                  [6]
    end
    Τώρα, στη C, το `length(pin)` βασικά το βρίσκεις τσεκάροντας που είναι το EOL, και άρα το `last(pin)` είναι η θέση τέλους - 1. Ενώ για τον έλεχρο αν είναι εντός A-Z μετέτρεψε το γράμμα σε ASCII numeral και τσέκαρε αριθμητικά αν είναι εντός των A-Z.
    Τελευταία επεξεργασία από το μέλος konfou : 14-02-21 στις 12:14. Αιτία: s/end/end if/
    ::1

  9. #24
    Εγγραφή
    02-04-2010
    Μηνύματα
    13.049
    Downloads
    0
    Uploads
    0
    ISP
    Forthnet
    Παράθεση Αρχικό μήνυμα από vense97 Εμφάνιση μηνυμάτων
    δεν ξέρω τι να κάνω με την εξής άσκηση που θα δείτε στην παρακάτω φώτο όποιος μπορεί ας με βοηθήσει...ευχαριστώ εκ των πρωτέρων

    Υγ 1 εκεί που λέει two είναι τυπογραφικό
    Υγ 2 πρέπει να το λύσω σε c
    Ανέστησες το πεθαμένο
    Όσο περισσότερο σου κλέβουν τη ζωή, τόσο σε ταΐζουν με έθνος και φυλή..

    Εθνικισμός και μετανάστες

    Μία τάξη, φυλετικά διαχωρισμένη

Σελ. 2 από 2 ΠρώτηΠρώτη 12

Παρόμοια Θέματα

  1. Βοήθεια σε άσκηση C++
    Από lamoyo13 στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 10
    Τελευταίο Μήνυμα: 23-05-12, 10:00
  2. άσκηση Ηλεκτροτεχνίας
    Από dimpallas στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 21
    Τελευταίο Μήνυμα: 24-12-08, 00:00
  3. Άσκηση σε C
    Από killbilll στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 5
    Τελευταίο Μήνυμα: 13-12-07, 03:18
  4. Ασκηση!!!
    Από funkyjohny στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 7
    Τελευταίο Μήνυμα: 08-12-07, 17:41
  5. ασκηση C
    Από kasadi στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 12
    Τελευταίο Μήνυμα: 09-09-07, 11:48

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας