Βοήθεια στην Γλώσσα C

Evi235

Νεοφερμένος

Η Evi235 αυτή τη στιγμή δεν είναι συνδεδεμένη. Είναι 31 ετών και μας γράφει απο Καβάλα (Καβάλα). Έχει γράψει 89 μηνύματα.
εγω τον gcc χρησιμοποιω..
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

tsarachaf

Περιβόητο μέλος

Ο Allah 1/3 MEΤΣ αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 31 ετών, Φοιτητής και μας γράφει απο Θεσσαλονίκη (Θεσσαλονίκη). Έχει γράψει 4,366 μηνύματα.

Πληροφορικάριος

Δραστήριο μέλος

Ο Πληροφορικάριος αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Φοιτητής και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 623 μηνύματα.

Selestian

Δραστήριο μέλος

Ο Selestian αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Φοιτητής του τμήματος Επιστήμης Υπολογιστών Κρήτης (Ηράκλειο) και μας γράφει απο Ολλανδία (Ευρώπη). Έχει γράψει 591 μηνύματα.
Το DevC++ ειναι IDE. Το gcc ειναι compiler. :P
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

vassilis498

Διακεκριμένο μέλος

Ο vassilis498 αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 7,079 μηνύματα.
ίσως λέει τον g++ (αν και μάλλον αυτό που λέτε είναι )
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Πληροφορικάριος

Δραστήριο μέλος

Ο Πληροφορικάριος αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Φοιτητής και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 623 μηνύματα.
Γεια σας παιδια,εχω ενα προβλημα με μια ασκηση απο τη γλωσσα c.
Δεν παρακολουθω και πολυ συχνα τα μαθηματα και θα ηθελα τη βοηθεια σας.
Οριστε:
[FONT=TimesNewRomanPSMT, Times New Roman]Μια εταιρεία έχει για κωδικό πρόσβασης στα αρχεία της μια λέξη [/FONT][FONT=TimesNewRomanPSMT, Times New Roman]xyz[/FONT][FONT=TimesNewRomanPSMT, Times New Roman]w[/FONT][FONT=TimesNewRomanPSMT, Times New Roman], όπου γνωρίζουμε ότι το [/FONT][FONT=TimesNewRomanPSMT, Times New Roman]x[/FONT][FONT=TimesNewRomanPSMT, Times New Roman] είναι ακέραιος αριθμός μεταξύ του 0 και του 200 που διαιρείται ακριβώς με το 3, το [/FONT][FONT=TimesNewRomanPSMT, Times New Roman]y[/FONT][FONT=TimesNewRomanPSMT, Times New Roman] είναι ακέραιος αριθμός μεταξύ του 0 και του 200 που διαιρείται ακριβώς με το 3 και το 5, το [/FONT][FONT=TimesNewRomanPSMT, Times New Roman]z[/FONT][FONT=TimesNewRomanPSMT, Times New Roman] είναι το πρώτο ή το δέκατο ή το εικοστό γράμμα του Αγγλικού αλφαβήτου (μικρό ή κεφαλαίο), και το [/FONT][FONT=TimesNewRomanPSMT, Times New Roman]w[/FONT][FONT=TimesNewRomanPSMT, Times New Roman] είναι ένα από τα ακόλουθα σύμβολα: #,&,*,!,?. Να γράψετε αλγόριθμο σε ψευδοκώδικα και το αντίστοιχο πρόγραμμα σε C που θα εμφανίζει και θα μετράει όλους τους πιθανούς κωδικούς.[/FONT]


Ευχαριστω πολυ

Code:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
      int x[67],y[14],z[]={'a','j','t'},w[]={'#','&','*','!','?'},o,d,q,l,i,j,k,t,r,e,b=0;
                        /*καταχώρηση κατα την δήλωση για τους πίνακες z και w*/
      
      for(i=1,j=0;i<=200;i++)                 
      
                         if(i%3==0)            //αν ο  αριθμός διαιρείται ακριβώς με το 3..
                                   x[j++]=i;  //καταχωρείται στον πίνακα x.
      for(l=0,q=0;l<=j-1;l++)
      
                         if(x[l]%5==0)                //αν ο  αριθμός διαιρείται ακριβώς και με το 5..
                                      y[q++]=x[l];   //καταχωρείται στον πίνακα y.
          
           for(d=0;d<=j-1;d++)
            
                         for(e=0;e<=q-1;e++)              //φωλιασμένες for για την προσπέλαση όλων των στοιχείων όλων των πινάκων.//
                                            
                                            for(r=0;r<=2;r++)
                                                             
                                                             for(t=0;t<=4;t++)
                                                             
                                                                              printf("%d) %d%d%c%c.\n",++b,x[d],y[e],z[r],w[t]);
                                                                              
                                                                              
      
      system("PAUSE");
      
      return 0;
}
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

g1wrg0s

Επιφανές μέλος

Ο 01001 αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 9,074 μηνύματα.
Παιδια,θελω μια βοηθεια.
Πως μπορω να φτιαξω ενα πινακα δεικτων οι οποιοι να δειχνουν σε πινακες ακεραιων(ο καθενας) και να αναφερομαι σε αυτους ;

int **pointer Αυτο ειναι ενας δεικτης που δειχνει σε ενα πινακα δεικτων οι οποιοι δειχνουν σε ακεραιους ετσι δεν ειναι;
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Τελευταία επεξεργασία:

vassilis498

Διακεκριμένο μέλος

Ο vassilis498 αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 7,079 μηνύματα.
Για να ρωτάς τέτοια ώρα.. πώς φαίνεται ο καμένος ο πληροφορικός :P

( όχι δεν ξέρω να σου απαντήσω άλλα έπρεπε να το πω :P )
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

g1wrg0s

Επιφανές μέλος

Ο 01001 αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 9,074 μηνύματα.
Αν δεν βρω την απαντηση , πιστεψε με θα καει ο εγκεφαλος.

Αν γνωριζει καποιος ας απαντησει . . .
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Hiro

Νεοφερμένος

Ο Hiro αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 75 μηνύματα.
int **pointer Αυτο ειναι ενας δεικτης που δειχνει σε ενα πινακα δεικτων οι οποιοι δειχνουν σε ακεραιους ετσι δεν ειναι;

ναι, αυτό είναι :P

Το int **pointer δηλώνει ένα pointer προς την πρώτη θέση ενός πίνακα με int*. Έτσι, κάθε int* μπορεί να δείχνει την πρώτη θέση από ένα πίνακα με int. Έτσι, συνολικά το int **pointer μπορεί να δείχνει προς ένα δισδιάστατο πίνακα.

Προσοχή: Αν απλώς γράψεις int **pointer, αυτός ο πίνακας δεν έχει δημιουργηθεί!! Μόλις δηλώσεις το int **pointer, αυτό δείχνει στο κενό, στον αέρα. Πρέπει να το κάνεις malloc() ή να του δώσεις τιμή με ανάθεση, για να το χρησιμοποιήσεις.

Αν πχ κάνεις

Code:
int **pointer;
pointer[1][1] = 5;

αυτό θα σου πετάξει segmentation fault. Θα πρέπει να κάνεις malloc() πριν το χρησιμοποιήσεις.

Ενώ αν κάνεις

Code:
int pointer[10][10];
pointer[1][1] = 5;

δεν χρειάζεσαι malloc(), και θα δουλέψει. Πρόσεξε, πως και στις δύο περιπτώσεις, ο pointer είναι τύπου int**
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

g1wrg0s

Επιφανές μέλος

Ο 01001 αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 9,074 μηνύματα.
int **pointer,m,i;
pointer=malloc(m*sizeof(int *));
for(i=0;i<m;i++)
{
pointer=malloc(m*sizeof(int));
}
scanf("%d",m);

Αυτο το τμημα κωδικα ειναι σωστο αν θελω να κανω ενα δεικτη που θα δειχνει στην αρχη ενος πινακα δεικτων που το μεγεθος του θα εξαρταται απο την τιμη του m και ο καθε δεικτης αυτου του πινακα να δειχνει σε ενα αλλο πινακα ακεραιων ο καθενας(το μεγεθος του εξαρταται απο τη τιμη m επισης);

:hmm:
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Γιώργος

Τιμώμενο Μέλος

Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Διδακτορικός και μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 30,791 μηνύματα.
int **pointer,m,i;
pointer=malloc(m*sizeof(int *));
for(i=0;i<m;i++)
{
pointer=malloc(m*sizeof(int));
}
scanf("%d",m);

Αυτο το τμημα κωδικα ειναι σωστο αν θελω να κανω ενα δεικτη που θα δειχνει στην αρχη ενος πινακα δεικτων που το μεγεθος του θα εξαρταται απο την τιμη του m και ο καθε δεικτης αυτου του πινακα να δειχνει σε ενα αλλο πινακα ακεραιων ο καθενας(το μεγεθος του εξαρταται απο τη τιμη m επισης);

:hmm:

Τι ρωτάς αν είναι σωστό ή όχι; Δοκίμασε και δες. :)


PS: λογικά θα χρειαστείς ένα explicit cast στο αποτέλεσμα που γυρνάει η malloc.
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

g1wrg0s

Επιφανές μέλος

Ο 01001 αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 9,074 μηνύματα.
Εβαλα και τα cast. Το scanf μπορω να το βαλω οπου θελω μεσα στο προγραμμα ή αναγκαστικα πριν τη for ;(Δεν αναφερομαι στο παραπανω τμημα κωδικα που ειναι απο κατω)
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

g1wrg0s

Επιφανές μέλος

Ο 01001 αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 9,074 μηνύματα.
Αυτο το μηνυμα μου το εβγαλε κατα τη μεταγλωτηση ενος προγραμματος


*** glibc detected *** ./hw3c.out: double free or corruption (out): 0x09056028 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x6ebc2)[0x57cbc2]
/lib/i386-linux-gnu/libc.so.6(+0x6f862)[0x57d862]
/lib/i386-linux-gnu/libc.so.6(cfree+0x6d)[0x58094d]
./hw3c.out[0x8048934]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x527113]
./hw3c.out[0x8048461]
======= Memory map: ========
0050e000-00684000 r-xp 00000000 08:01 2360262 /lib/i386-linux-gnu/libc-2.13.so
00684000-00686000 r--p 00176000 08:01 2360262 /lib/i386-linux-gnu/libc-2.13.so
00686000-00687000 rw-p 00178000 08:01 2360262 /lib/i386-linux-gnu/libc-2.13.so
00687000-0068a000 rw-p 00000000 00:00 0
006d9000-006da000 r-xp 00000000 00:00 0 [vdso]
007be000-007da000 r-xp 00000000 08:01 2360256 /lib/i386-linux-gnu/libgcc_s.so.1
007da000-007db000 r--p 0001b000 08:01 2360256 /lib/i386-linux-gnu/libgcc_s.so.1
007db000-007dc000 rw-p 0001c000 08:01 2360256 /lib/i386-linux-gnu/libgcc_s.so.1
00998000-009b6000 r-xp 00000000 08:01 2360259 /lib/i386-linux-gnu/ld-2.13.so
009b6000-009b7000 r--p 0001d000 08:01 2360259 /lib/i386-linux-gnu/ld-2.13.so
009b7000-009b8000 rw-p 0001e000 08:01 2360259 /lib/i386-linux-gnu/ld-2.13.so
08048000-08049000 r-xp 00000000 08:01 1968163 /home/ote/hw3c.out
08049000-0804a000 r--p 00000000 08:01 1968163 /home/ote/hw3c.out
0804a000-0804b000 rw-p 00001000 08:01 1968163 /home/ote/hw3c.out
09056000-09077000 rw-p 00000000 00:00 0 [heap]
b7600000-b7621000 rw-p 00000000 00:00 0
b7621000-b7700000 ---p 00000000 00:00 0
b7752000-b7753000 rw-p 00000000 00:00 0
b7764000-b7768000 rw-p 00000000 00:00 0
bfb1b000-bfb3c000 rw-p 00000000 00:00 0 [stack]


Περι τίνος προκειται;
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Γιώργος

Τιμώμενο Μέλος

Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Διδακτορικός και μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 30,791 μηνύματα.
Κατά την μεταγλώττιση ή την εκτέλεση;
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

g1wrg0s

Επιφανές μέλος

Ο 01001 αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 9,074 μηνύματα.
Εχεις δικιο...κατα την εκτελεση.
Μπορεις να με προσανατολυσεις για το που βρισκεται το προβλημα γιατι σε λιγο τελειωνει η προθεσμια;
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Γιώργος

Τιμώμενο Μέλος

Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Διδακτορικός και μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 30,791 μηνύματα.
Εχεις δικιο...κατα την εκτελεση.
Μπορεις να με προσανατολίσεις για το που βρισκεται το προβλημα γιατι σε λιγο τελειωνει η προθεσμια;
Μου μυρίζει για Segmentation Fault. Κάπου πιθανώς να διαβάζεις εκτός ορίων πίνακα ή εν γένει προσπαθείς να προσπελάσεις μνήμη που δεν σου ανήκει. :)

Μία καλή λύση για εύκολο debugging είναι η χρήση του gdb. Γράφεις (αν a.out είναι το εκτελέσιμό σου)
Code:
gdb ./a.out
Και μετά run και βλέπεις πού θα σκάσει.
Στο debugging βοηθάει εάν κατά το compile ανεβάσεις και το flag -g.
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

g1wrg0s

Επιφανές μέλος

Ο 01001 αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 9,074 μηνύματα.
Βοηθεια παιδια.

Εχω αρχειο κειμενου και θελω να διαβασω τον αριθμο των χαρακτηρων σε καποια κομματια του κειμενου. Το εχω ανοιξει σαν binary και πιστευω πως το εχω κοψει σε νοητα κομματια ,ωστε να ξερω απου που θα ξεκινα η μετρηση και που θα τελειωνει. Προσπαθω να αποφυγω χαρακτηρες ' '(κενα), '\n' (new line) και το τελος του αρχειου (EOF) αλλα σε καποια κομματια μετραει σωστα, σε αλλα παλι χανει μερικους χαρακτηρες.

Καποια βοηθεια ;
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

vassilis498

Διακεκριμένο μέλος

Ο vassilis498 αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 7,079 μηνύματα.
Βοηθεια παιδια.

Εχω αρχειο κειμενου και θελω να διαβασω τον αριθμο των χαρακτηρων σε καποια κομματια του κειμενου. Το εχω ανοιξει σαν binary και πιστευω πως το εχω κοψει σε νοητα κομματια ,ωστε να ξερω απου που θα ξεκινα η μετρηση και που θα τελειωνει. Προσπαθω να αποφυγω χαρακτηρες ' '(κενα), '\n' (new line) και το τελος του αρχειου (EOF) αλλα σε καποια κομματια μετραει σωστα, σε αλλα παλι χανει μερικους χαρακτηρες.

Καποια βοηθεια ;

Code:
#include <stdio.h>

int main (void)
{
	int line = 1, begin, end, i, ch;
	scanf ("%d - %d", &begin, &end );
	getchar();
	while ( line < begin )
	{
		if ( ( ch = getchar() ) == '\n' ) line++;
	}
	while ( line <= end && ch != EOF )
	{
		ch = getchar();
		if ( ch == '\n' ) line++;
		else if ( ch != ' ' && ch != '\t' ) i++;
	}
	printf ("%d chars.\n", i);
	return 0;
}

κάτι τέτοιο πχ;
( θεωρώ πως οι γραμμές αναφέρονται στην πρώτη γραμμή του αρχείου εκτός αρίθμησης γιατί δεν ξέρω ακόμα πως να διαβάζω από >1 εισόδους αλλά η λογική είναι η ίδια )
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Πληροφορικάριος

Δραστήριο μέλος

Ο Πληροφορικάριος αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι Φοιτητής και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 623 μηνύματα.
Βοηθεια παιδια.

Εχω αρχειο κειμενου και θελω να διαβασω τον αριθμο των χαρακτηρων σε καποια κομματια του κειμενου. Το εχω ανοιξει σαν binary και πιστευω πως το εχω κοψει σε νοητα κομματια ,ωστε να ξερω απου που θα ξεκινα η μετρηση και που θα τελειωνει. Προσπαθω να αποφυγω χαρακτηρες ' '(κενα), '\n' (new line) και το τελος του αρχειου (EOF) αλλα σε καποια κομματια μετραει σωστα, σε αλλα παλι χανει μερικους χαρακτηρες.

Καποια βοηθεια ;

Τι εννοείς"να διαβάσω τον αριθμό των χαρακτήρων" και σε ποιά κομμάτια του κειμένου?θα τα ορίζει ο χρήστης?

Πάντως αφού είναι αρχείο κειμένου καλύτερα να το ανοίγεις σαν αρχείο κειμένου και όχι binary..

Ο παρακάτω κώδικας μετράει το πλήθος των μη λευκών χαρακτήρων

Code:
#include<stdio.h>

int main(void)
{
      FILE *fp=fopen("text.txt","r");
      int i=0,apo,mexri,count=0;
      char ch;
      
      printf("Δώσε απο που μέχρι που θα γίνει η μέτρηση των χαρακτήρων");
      scanf("%d %d",&apo,&mexri);
      
     for(i=1;!feof(fp);i++)
     { 
              ch=fgetc(fp);
           
              if((i>=apo && i<=mexri) && (ch!='\n' && ch!='\t' && ch!=' ' && ch!=EOF))count++;
                       
     } 
     
     printf("%d μη λευκοί χαρακτήρες στο διάστημα %d-%d\n",count,apo,mexri);
      
     return 0;
}
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Τελευταία επεξεργασία:

Χρήστες Βρείτε παρόμοια

  • Τα παρακάτω 0 μέλη και 1 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα:
    Tα παρακάτω 9 μέλη διάβασαν αυτό το θέμα:
  • Φορτώνει...
Top