Ολυμπιάδα Πληροφορικής Μάθημα 6 Στόχοι μαθήματος • • Strings σαν πίνακες χαρακτήρων Strings μέσα από την βιβλιοθήκη της C++ Εισαγωγή • Στη C δεν υπάρχει ο τύπος String.
Download ReportTranscript Ολυμπιάδα Πληροφορικής Μάθημα 6 Στόχοι μαθήματος • • Strings σαν πίνακες χαρακτήρων Strings μέσα από την βιβλιοθήκη της C++ Εισαγωγή • Στη C δεν υπάρχει ο τύπος String.
Slide 1
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 2
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 3
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 4
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 5
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 6
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 7
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 8
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 9
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 10
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 11
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 12
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 13
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 14
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη που
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 2
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 3
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 4
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 5
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 6
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 7
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 8
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 9
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 10
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 11
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 12
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 13
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include
#include
using namespace std;
string όνομα μεταβλητής;
int main ()
{
string onoma;
cin>>onoma;
cout << "To onoma pou edwses einai " << onoma <<"\n";
system("PAUSE");
return 0;
}
21
Συνάρτηση size
// string::size
#include
#include
using namespace std;
int main ()
{
string str="Test string";
cout << "The size of str is " << str.size() << " characters.\n";
system("PAUSE");
return 0;
}
22
Περισσότερες συναρτήσεις στη σελίδα
http://www.cplusplus.com/reference/string/string/
23
Slide 14
Ολυμπιάδα Πληροφορικής
Μάθημα 6
1
Στόχοι μαθήματος
•
•
Strings σαν πίνακες χαρακτήρων
Strings μέσα από την βιβλιοθήκη της C++
2
Εισαγωγή
• Στη C δεν υπάρχει ο τύπος String (όπως float,
int, char), αλλά αυτός υλοποιείται ως πίνακες
χαρακτήρων
• Μπορούμε να ορίσουμε το String σαν ένα
πίνακα από χαρακτήρες που τελειώνει με τον
χαρακτήτα NULL ‘\0’ ,
• π.χ. |Hello\0|, |Hi there\0|, |\0|
• (Προσοχή το \0 δεν φαίνεται στην οθόνη)
3
Αρχικοποίηση
char msg[ ]=“Hello”;
Δημιουργεί αυτόματα τον πίνακα
4
Δήλωση String/ Ανάγνωση-Εκτύπωση
Η δήλωση γίνεται όπως θα δηλώναμε έναν
πίνακα
char όνομα[μέγεθος];
π.χ. char onoma[20];
Ανάγνωση
scanf(“%s”,onoma);
Εκτύπωση
printf(“%s”,onoma);
Επειδή είναι string
Χωρίς το & επειδή
είναι πίνακας
5
Παράδειγμα 1
• Να δημιουργήσετε το πρόγραμμα που δέχεται
το όνομα και το επίθετο και τα τυπώνει στην
οθόνη το ένα δίπλα στο άλλο αφήνοντας ένα
κενό μεταξύ τους.
6
Παράδειγμα 1
7
Παράδειγμα 2
• Να δημιουργήσετε το πρόγραμμα διαβάζει 10
ονόματα από το αρχείο par1.in και τα τυπώνει
στην οθόνη του υπολογιστή.
8
Παράδειγμα 2
#include
#include
using namespace std;
int main(){
char onoma[20];
int i;
FILE *fin;
fin=fopen("par2.in","r");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma);
printf("%s\n",onoma);
}
fclose(fin);
system("PAUSE");
return 0;
}
9
Παράδειγμα 3
• Να δημιουργήσετε το πρόγραμμα που δέχεται
μια λέξη με 4 χαρακτήρες και μετατοπίζει τους
χαρακτήρες κατά ένα δεξιά
• π.χ. abcd dabc
10
Παράδειγμα 3
#include
#include
using namespace std;
int main(){
char onoma[4],temp;
int i;
scanf("%s",onoma);
temp=onoma[3];
for(i=2;i>=0;i--)
onoma[i+1]=onoma[i];
onoma[0]=temp;
printf("%s\n",onoma);
system("PAUSE");
return 0;
}
11
Συναρτήσεις
• Οι συναρτήσεις για τα strings βρίσκονται στο
αρχείο string.h
• strlen(s),υπολογίζει το μήκος του string
• strcpy(s1,s2),αντιγράφει το s2 στο s1
• strcat(s1,s2),προσθέτει το s2 στο s1.
• strcmp(s1,s2),συγκρίνει το s1 με s2 και
επιστρέφει θετική τιμή εάν s1
μεγαλύτερο(αλφαβητικά) από το s2, μηδέν
αν είναι ίσα, και αρνητική τιμή εάν s1
μικρότερο από s2.
12
Παράδειγμα 4 - Συναρτήσεις
#include
#include
#include
using namespace std;
if(strcmp(s1,s2)==0)
printf("Ta 2 string einai ta idia\n");
else
printf("Ta 2 string den einai ta
idia\n");
strcat(s1,s2);
printf("Enosi tou s1 me to S2
=%s\n",s1);
strcpy(s1,s2);
int main(){
char s1[100],s2[100];
printf("Dose ena string\n");
scanf("%s",s1);
printf("Size=%d\n",strlen(s1));
printf("Dose akoma ena string\n");
scanf("%s",s2);
printf("Antgrafi tou S2 sto S1.
S1=%s\n",s1);
system("PAUSE");
return 0;
}
13
Παράδειγμα 5
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τους χαρακτήρες από το αρχείο par5.in και
τυπώνει το πλήθος τους στο αρχείο par5.out
14
Παράδειγμα 5
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c;
fin=fopen("par5.in","r");
fout=fopen("par5.out","w");
while(feof(fin)==0){
fscanf(fin,"%c",&c);
i++;
}
fprintf(fout,"%d\n",i-1);
fclose(fin);
fclose(fout);
return 0;
}
15
Παράδειγμα 6
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
τις λέξεις από το αρχείο par6.in και τυπώνει το
πλήθος τους στο αρχείο par6.out
16
Παράδειγμα 6
#include
#include
using namespace std;
int main(){
FILE *fin,*fout;
int i=0;
char c[100];
fin=fopen("par6.in","r");
fout=fopen("par6.out","w");
while(feof(fin)==0){
fscanf(fin,"%s",c);
i++;
}
fprintf(fout,"%d\n",i);
fclose(fin);
fclose(fout);
return 0;
}
17
Παράδειγμα 7
• Να δημιουργήσετε το πρόγραμμα που διαβάζει
10 ονόματα από το αρχείο par7.in και τυπώνει
το όνομα με τους περισσότερους χαρακτήρες
στο αρχείο par7.out.
18
Παράδειγμα 7
#include
#include
using namespace std;
int main(){
char onoma[10][30]; //10 onomata me
megisto mege8os 30
char maxOnoma[30];
int i,max=-1,s;
FILE *fin,*fout;
fin=fopen("par7.in","r");
fout=fopen("par7.out","w");
for(i=0;i<10;i++){
fscanf(fin,"%s",onoma[i]);
s=strlen(onoma[i]);
if(s>max){
max=strlen(onoma[i]);
strcpy(maxOnoma,onoma[i]);
}
}
fprintf(fout,"%s",maxOnoma);
fclose(fin);
fclose(fout);
return 0;
}
19
Strings στη C++
• Στη C++ υπάρχει η βιβλιοθήκη
αναφέρεται στο αντικείμενο και όχι στον τύπο
δεδομένων, string.
• Μας δίνει τη δυνατότητα να χρησιμοποιήσουμε
πολλές έτοιμες συναρτήσεις που υπάρχουν στη
βιβλιοθήκη
• ΔΕΝ μπορείτε να χρησιμοποιήσετε τις scanf και
printf
• Εξακολουθεί όμως να προσπελαστεί σαν
πίνακας
20
Δήλωση String
#include