Προς το περιεχόμενο

Περί C programming


Padaz Bloody

Προτεινόμενες αναρτήσεις

  • Απαντ. 100
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Βρήκα μερικές από τις ασκήσεις που κάναμε σχολή και τις παραθέτω. Να φανταστείτε ότι τις είχα σε floppy disk αλλά επειδή τείνει να εξαληφθεί αυτό το είδος για καλό και για κακό τις έβαλα στον σκληρό γιατί σε λίγο δεν θα υπάρχουνε ούτε floppy drive στα καταστήματα.

 

Να πω ότι εγκατέστησα το codeblocks με τους ενσωματαμένους gnu compilers δηλαδή αυτό

 

Ορίστε μερικές από τις ασκήσεις: B)

 

 

Αυτή έχει να κάνει με πίνακες κλασσική άσκηση.

 

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

main()

{

clrscr();

printf("%d",Days_of_month("Feb",1992));

getch();

}

Days_of_month(char *mhnas,int etos)

{

int hmeres,i=0;

char months[] [4]={" \0",

"Jan\0",

"Feb\0",

"Mar\0",

"Apr\0",

"May\0",

"Jun\0",

"Jul\0",

"Aug\0",

"Sep\0",

"Oct\0",

"Nov\0",

"Dec\0"

};

while(strcmp(mhnas,months)) i++;

switch(i){

case 1: hmeres=31; break;

case 2:

if(((etos%4)!=0)&&((etos%100)!=0||(etos%400)==0))

hmeres=28;

else hmeres=29; break;

case 3: hmeres=31; break;

case 4: hmeres=30; break;

case 5: hmeres=31; break;

case 6: hmeres=30; break;

case 7: hmeres=31; break;

case 8: hmeres=31; break;

case 9: hmeres=30; break;

case 10: hmeres=31; break;

case 11: hmeres=30; break;

case 12: hmeres=31; break;

}

return hmeres;

}

 

 

 

Επίσης και αυτή η άσκηση έχει να κάνει με πίνακες.

 

 

 

 

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<conio.h>

#define LINES 3

#define COLLS 4

main()

{

int pin[LINES][COLLS]={1,2,3,4,

5,6,7,8,

9,0,1,2

};

clrscr();

Arr_Funct(pin);

getche();

}

Arr_Funct(int A[LINES][COLLS])

{

register int x,y;

for(x=0;x<LINES;x++) {

for(y=0;y<COLLS;y++)

printf("%d",A[x][y]);

printf("\n");

 

}

}

 

 

 

 

 

Δεν ξέρω γιατί αλλά σε μερικές ασκήσεις που πήγα να κάνω copy paste δεν μου εμφάνιζε σωστά τα ελληνικά και έβγαζε κάτι κινέζικα

 

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

 

 

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

main()

{

int *pinax;

int num,x,y;

 

clrscr();

printf("ƒé©œ £âšœŸ¦ª §å¤˜¡˜ :");

scanf("%d",&num);

 

Array_Func(pinax,num);

 

for(x=0;x<num;x++){

for(y=0;y<num;y++){

printf("%d",*(pinax+(x*num)+y));

printf("\n");

}

 

}

 

getche();

}

Array_Func(int *Num_Arr[],int N)

{

register int i,j;

for(i=0;i<N;i++)

for(j=0;j<N;j++)

if((i+j)%2==0) *(Num_Arr+(i*N)+j)=1;

else

*(Num_Arr+(i*N)+j)=-1;

}

 

Είναι φανερό ότι πρόκειται για παλιός compiler αυτός που δουλεύαμε αφού τότε τα τρέχαμε σε dos και μάλιστα όχι μέσα από το λειτουργικό, αλλά στην εκκίνηση του υπολογιστή κατευθείαν msdos.

 

Εκτός από την απλή εγκατάσταση στο παραπάνω αρχειάκι τι άλλο θα σετάρω, πρέπει να δώσω τίποτα directories θέσεις ή τίποτα libraries includes? Αυτά είναι σεταρισμένα αυτόματα?

Τρέξτε το λίγο αυτό το αρχειάκι codeblocks με τους gnu compilers και πείτε μου. Λίγο πιο λιανά ρε παιδιά. :rolleyes:

 

Ωχ Ωχ μόλις πήγα να τρέξω ένα άλλο πρόγραμμα και μου βγάζει ότι δεν ήτανε δυνατό να το τρέξει λόγω ασυμβατότητας των 64 bit windows και επικοινωνήστε με την εξυπηρέτηση και κάτι τέτοια - υποψιάζομαι από τώρα ότι στα windows 64 bit θα έχω σοβαρό πρόβλημα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Φίλε μου, καταρχήν ότι κώδικα έχεις ποστάρει είναι σε C και όχι σε C++.

 

Κατόπιν, οι 2 τελευταίες που δοκίμασα μόλις τώρα σε Win 7 64bit Home, κάνουν κανονικά compile και τρέχουν και από Code::Blocks και από γραμμή εντολών, εφόσον απενεργοποιήσεις τα: clrscr() που είναι TurboC specific. Προφανώς βγάζουν κάποιες προειδοποιήσεις, λόγω του ότι δεν ακολουθούν το ANSI standard, αλλά τρέχουν μια χαρά.

 

Έπειτα, αν ο κώδικας αυτός με το συγκεκριμένο coding-style προέρχεται από βιβλίο, μπορείς χωρίς 2η σκέψη να το κάψεις μαζί με τα ξύλα που θα χρησιμοποιήσεις σήμερα το βράδυ στο τζάκι σου!

 

Ακόμα, για να μπορούμε να διαβάζουμε ανθρώπινα τους κώδικες που ποστάρεις (ή να τους διαβάζουμε γενικώς) βάζε τους μέσα σε [ code] κώδικας εδώ [/ code] ... χωρίς τα κενά στις αγκύλες.

 

Και τέλος, αποφάσισε αν θα ασχοληθείς με C ή με C++ για να ξέρουμε κι εμείς τι μας γίνεται. Μας λες πως θες C++ αλλά μας ποστάρεις κώδικες σε C.

 

Ακολουθεί ο κώδικας που ποστάρισες, αλλά με φτιαγμένη την στοίχιση και μέσα σε [ code ] tags...

 

>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main()
{
/* clrscr(); */
printf( "%d", Days_of_month("Feb", 1992) );
getch();
}

Days_of_month(char *mhnas,int etos)
{
int hmeres, i = 0;
char months[][4] = {
	" \0",
	"Jan\0",
	"Feb\0",
	"Mar\0",
	"Apr\0",
	"May\0",
	"Jun\0",
	"Jul\0",
	"Aug\0",
	"Sep\0",
	"Oct\0",
	"Nov\0",
	"Dec\0"
};

while( strcmp(mhnas, months[i]) )
	i++;

switch(i){
	case 1: hmeres=31; break;
	case 2:
		if( etos % 4 != 0 && (etos % 100 != 0 || etos % 400 == 0) )
			hmeres = 28;
		else
			hmeres = 29;
		break;
	case 3: hmeres = 31; break;
	case 4: hmeres = 30; break;
	case 5: hmeres = 31; break;
	case 6: hmeres = 30; break;
	case 7: hmeres = 31; break;
	case 8: hmeres = 31; break;
	case 9: hmeres = 30; break;
	case 10: hmeres = 31; break;
	case 11: hmeres = 30; break;
	case 12: hmeres = 31; break;
}

return hmeres;
}

 

>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define LINES 3
#define COLLS 4

main()
{
int pin[ LINES ][ COLLS ] = {
	1,2,3,4,
	5,6,7,8,
	9,0,1,2
};

/* clrscr(); */

Arr_Funct(pin);
getche();
}

Arr_Funct( int A[LINES][COLLS] )
{
register int x,y;
for ( x=0; x < LINES; x++ )
{
	for(y=0; y < COLLS; y++)
	printf("%d", A[x][y] );
	printf("\n");
}
}

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι είναι καθαρά C όπως κατάλαβες έτσι ακριβώς έπρεπε να είναι γραμμένες απλά με το copy paste μου χάλασε τη σειρά απ'ότι φαίνεται, συν ότι ήθελε και μερικές μικροδιορθώσεις για να δουλέψει.

Αυτές είναι ασκήσεις που κάναμε στους Η/Υ άρα γλώσσα C μαθαίναμε.

Η c++ φαντάζομαι θα πρέπει να έχει λίγο διαφορετική νοοτροπία ως προς τη σύνταξη και ίσως κάποιες εντολές να γράφονται λίγο διαφορετικά.

Καλύτερα να μην πάω σε c++ γιατί θα χάσω τη μπάλα μετά. :P

Λέω να δοκιμάσω την Pelles C που μου πρότεινες migf1 και μετά ξαναεπανέρχομαι.

Χαίρομαι πάρα πολύ που εντόπισες το πρόβλημά μου με τη μία. :)

Μία ερώτηση έχω: Το IDE τι είναι που αναφέρθηκε παραπάνω (C IDE) και τι σημαίνουνε τα αρχικά IDE?

Επίσης τι είναι το gnu compiler?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σε αυτή την περίπτωση κατέβασε την Pelles-C και καθάρισες. Έχει και 32bit και 64bit έκδοση για κατέβασμα... προφανώς αν έχεις 32bit λειτουργικό η 64μπιτη έκδοση δεν σου κάνει.

 

...

Χαίρομαι πάρα πολύ που εντόπισες το πρόβλημά μου με τη μία. :)

Για τα περισσότερα προβλήματα σου βγάζει επεξηγηματικά μηνύματα ο compiler ;)

 

Μία ερώτηση έχω: Το IDE τι είναι που αναφέρθηκε παραπάνω (C IDE) και τι σημαίνουνε τα αρχικά IDE?

http://lmgtfy.com/?q=ide

 

:P

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Πως το έκανες αυτό? φαίνεται cool B)

 

Migf1 έχεις κάνει ωραία δουλειά στο site σου, τώρα το κοίταξα στην υπογραφή σου, πάρα πολύ χρήσιμες οι σημειώσεις σου+++++ ;)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πως το έκανες αυτό? φαίνεται cool B)

Δεν είναι τίποτα: http://lmgtfy.com/

 

Migf1 έχεις κάνει ωραία δουλειά στο site σου, τώρα το κοίταξα στην υπογραφή σου, πάρα πολύ χρήσιμες οι σημειώσεις σου+++++ ;)

Ευχαριστώ :)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 1 μήνα μετά...

Στην Pelles C, όταν θέλω να δημιουργήσω ένα καινούριο πρόγραμμα στην C, ακολουθώ την εξής διαδρομή:

File/new/project?

 

Και όταν θέλω να το τρέξω πατάω Project/build?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στην Pelles C, όταν θέλω να δημιουργήσω ένα καινούριο πρόγραμμα στην C, ακολουθώ την εξής διαδρομή:

File/new/project?

 

Και όταν θέλω να το τρέξω πατάω Project/build?

Ναι, υπάρχουν και εικονίδια στη γραμμή εργαλείων της, για να μη χρειάζεται να ανοίγεις τα μενού κάθε φορά! Κι αν το πρόγραμμά σου χρησιμοποιεί πολλά πηγαία αρχεία .c, τα κάνεις Add στο project σου.

 

Γεια σας πέρασα το codeblocks αλλά δεν μου κάνει compile μου λέει "uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping..."

Τι να κάνω?

Αν είσαι σε Windows, κατέβασε την έκδοση που ενσωματώνει τον mingw gcc από το site του Code::Blocks, και ξανακάνε το εγκατάσταση από την αρχή... θα σου σετάρει αυτόματα τον compiler (κάνε πρώτα απεγκατάσταση αυτό που έχεις τώρα). Μάλλον κατέβασες σκέτο το IDE, χωρίς compiler.

 

EDIT:

Παρεμπιπτόντως, ένας τύπος έχει εκσυγχρονίσει το Dev/C++ και συνεχίζει να το βελτιώνει: http://orwellengine.blogspot.com/

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Επειδή η Pelles C θέλει και αυτή σετάρισμα μάλλον για να λειτουργήσει και εγώ δεν έχω πολύ χρόνο για να κάτσω να ασχοληθώ με settings κατάληξα εδώ:

 

 

C professional 5 πολύ καλός compiler C που απλά θέλει εγκατάσταση και ξεκινά να λειτουργεί και να κάνει compile run όλα τα προγράμματα με το καλημέρα, χωρίς ρυθμίσεις ούτε τίποτα.

Είναι 30 days trial που σημαίνει ότι θα πρέπει να τον κάνετε register για να συνεχίσει να λειτουργεί.

 

(Να πω ότι είναι compatible και με windows 7 64 bit και καλό είναι να έχετε εγκαταστημένα από πριν το codeblocks και το minGW-w64 γιατί δεν ξέρω αν δουλεύει και από μόνο του, το δοκίμασα και δούλεψε αφού είχα εγκαταστημένα τα παραπάνω προγράμματα που αναφέρθηκαν στα post.)

Επεξ/σία από Padaz Bloody
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

... και εγώ δεν έχω πολύ χρόνο για να κάτσω να ασχοληθώ με settings...

Αν δεν έχεις πολύ χρόνο να ασχολείσαι με settings ή αν δεν έχεις πολύ χρόνο γενικώς, ίσως είναι πολύ καλή ιδέα να μην ασχοληθείς γενικώς με προγραμματισμό και ειδικά με C.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αγαπητέ migf1, χωρίς παρεξήγηση, απλά επειδή δεν είμαι εξοικιωμένος με περιβάλλον IDE, μου φάνηκε κάπως βουνό η Pelles C.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το προηγούμενο ποστ μου δεν ήταν κακία, ούτε έχει να κάνει με την Pelles-C ή με οποιοδήποτε άλλο IDE (αν και είναι ιδιαίτερα παράξενο το ότι σου φάνηκε βουνό η Pelles-C).

 

Έχει να κάνει αποκλειστικά με την απόλυτη πεποίθησή μου πως ο χρόνος, η επιμονή, ο πειραματισμός και η αφοσίωση είναι από τις ελάχιστες αρετές που πρέπει να διαθέτει όποιος αποφασίζει να ασχοληθεί με τον προγραμματισμό ;)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...