arrays-strings Flashcards
(26 cards)
dizi tanımlama ve ilk değer atama
int x[] = {1,2,3,4,5,6,7,8,9,10};
int y[10] = {0};
int z[10];
int i; for (i = 0; i<10 ; i++) { z[i] = 0; } for (i = 0; i<10 ; i++) { printf("x: %d, y: %d, z: %d",x[i],y[i],z[i]); }
dizi elemanlarını toplama
int x[] = {1,2,3,4,5,6,7,8,9,10};
int i;
int toplam = 0;
for (i = 0; i<10 ; i++) { toplam += x[i]; } printf("dizi elemanlari toplami: %d",toplam);
dizi elemanlarını kullanıcıdan alma
????
dizi uzunluğu(eleman sayısı) bulma
int dizi[] = {6,2,4,6,8,10};
int elemanSayisi = sizeof(dizi) / sizeof(dizi[0]);
printf(“%d “,elemanSayisi);
dizi elemanları sıralama - bubble sort
int a[10] = {2,6,4,8,10,12,89,68,45,37};
printf(“Orijinal siradaki dizi elemanlari \n”);
int i; for (i = 0; i < 10; i++) { printf("%4d",a[i]); } int pass; for (pass = 1; pass < 10; pass++) { for (i = 0; i < 10 - 1; i++) { if(a[i] > a[i + 1]){ int hold = a[i]; a[i] = a[i + 1]; a[i + 1] = hold; } } } printf("\n Artan siradaki dizi elemanlari \n"); for (i = 0; i < 10; i++) { printf("%4d",a[i]); }
kullanıcının girdiği sayıları girme sırasının tersi yönde yazdır
int N = 10;
int x[N];
int i; for (i = 0; i < N; i++) { printf("Dizinin %d. elemani girin: ", i+1); scanf("%d",&x[i]); } for (i = N-1; i >= 0; i--) { printf("%d ",x[i]); }
Bir sınıftaki öğrencilerin 0 ile 100 arasında almış olduğu notlar
aşağıdaki dizi ile temsil edilmektedir:
int notlar[] = {78, 92, 65, 88, 75, 61, 90, 85, 77, 80, 95, 72, 87, 69, 84,
73, 98, 66, 81, 70};
1. Bu dizide kaç öğrencinin notu bulunmaktadır? (dizinin uzunluğunu
nedir?)
2. Sınıfın not ortalaması nedir?
3. En yüksek ve en düşük not kaçtır?
4. Sınıfta 85-100 arasında not alan kaç kişi vardır?
int notlar[] = {78, 92, 65, 88, 75, 61, 90, 85, 77, 80, 95, 72, 87, 69, 84,73, 98, 66, 81, 70};
int toplam = 0;
int uzunluk = sizeof(notlar)/sizeof(notlar[0]);
int max_not = notlar[0];
int min_not = notlar[0];
int yuksek_notlu_ogr_sayisi = 0;
int i; for (i = 0; i < uzunluk; i++) { toplam = toplam + notlar[i]; if (notlar[i] > max_not) { max_not = notlar[i]; } if (notlar[i] < min_not) { min_not = notlar[i]; } if(notlar[i] >= 85 && notlar[i] <= 100){ yuksek_notlu_ogr_sayisi++; } } float ortalama = (float)toplam/uzunluk; printf("Bu dizide %d ogrenci notu var. \n",uzunluk); printf("Sinif ortalaması: %.2f\n",ortalama); printf("En yuksek not: %d, En dusuk not: %d\n",max_not,min_not); printf("Notu 85-100 arası ogr sayisi: %d",yuksek_notlu_ogr_sayisi);
(AYNI SORU)kullanıcı dizi boyutu belirleyecek
int uzunluk;
printf(“Kac ogrencinin notunu gireceksiniz? “);
scanf(“%d”, &uzunluk);
int notlar[uzunluk]; int toplam = 0; int yuksek_notlu_ogrenci_sayisi = 0; int i; for (i = 0; i < uzunluk; i++) { printf("Lutfen %d. ogrencinin notunu girin (tam sayi): ", i + 1); scanf("%d", ¬lar[i]); toplam += notlar[i]; } // end for int uzunluk2 = sizeof(notlar) / sizeof(notlar[0]); int max_not = notlar[0]; int min_not = notlar[0]; for (i = 0; i < uzunluk; i++) { if (notlar[i] > max_not) { max_not = notlar[i]; } if (notlar[i] < min_not) { min_not = notlar[i]; } if (notlar[i] >= 85 && notlar[i] <= 100) { yuksek_notlu_ogrenci_sayisi++; } } // end for float ortalama = (float)toplam / uzunluk; printf("1) Bu dizide %d ogrencinin notu bulunmaktadir.\n", uzunluk); printf("2) Sinifin not ortalamasi: %.2f\n", ortalama); printf("3) En yuksek not: %d, en dusuk not: %d\n", max_not, min_not); printf("4) Notu 85-100 arasinda yer alan ogrenci sayisi: %d \n", yuksek_notlu_ogrenci_sayisi);
string oluşturma
include <string.h></string.h>
char s[5] = “Selam”;
printf(“%s”,s);
scanf ile kullanıcıdan karakter dizesi alma
char str[6];
printf(“En fazla 6 harflik bir kelime girin: “);
scanf(“%s”,str);
scanf ile string okumak - scanf(“%[^\n]”, str)
char str[10];
printf(“Bir cumle giriniz: “);
scanf(“[^\n]”, str);
string için karakter sınırı koymak
char str[5];
printf(“Bir kelime gir: “);
scanf(“%5s”,str);
printf("kelime: %s ",str);
strlen(): karakter dizisinin uzunluğunu
hesaplama
char str[] = “BIL 141”;
int uzunluk = strlen(str);
printf(“Karakter dizi uzunlugu: %d”,uzunluk);
strcpy() ve strcat(): bir karakter dizisini
diğerine kopyalama ve ekleme
char hedef[50] = “141”;
char kaynak[] = “BIL”;
strcpy(hedef, kaynak);
printf(“Kopyalanan: %s”,hedef);
strcat(hedef, “Dersi”);
printf(“Eklenme sonrası: %s”,hedef);
strcmp(): iki karakter dizisini karşılaştırma
char str1[] = “BIL 141”;
char str2[] = “BIL 141”;
char str3[] = “BIL”;
int sonuc_1_2 = strcmp(str1, str2); // sonucu dˆnd¸r¸r int sonuc_1_3 = strcmp(str1, str3); if (sonuc_1_2 == 0) printf("Iki karakter dizisi esittir. (%s, %s)\n", str1, str2); else printf("Iki karakter dizisi esit degildir. (%s, %s)\n", str1, str2); if (sonuc_1_3 == 0) printf("Iki karakter dizisi esittir. (%s, %s)\n", str1, str3); else printf("Iki karakter dizisi esit degildir. (%s, %s)\n", str1, str3);
strchr() ve strstr(): belirli bir karakteri ve bir alt
karakter dizisini karakter dizisi içinde arama
char str[] = “Bu bir ornek cumle.”;
// strchr(): char arananKarakter = 'r'; char *ptr = strchr(str, arananKarakter); if (ptr != NULL) printf("Karakter bulundu: %c\n", arananKarakter); else printf("Karakter bulunamadi.\n"); printf("The first occurrence of %c in '%s' is '%s'\n", arananKarakter, str, ptr); // strstr(): char arananAltDizi[] = "ornek"; char *ptr2 = strstr(str, arananAltDizi); if (ptr2 != NULL) printf("Alt karakter dizisi bulundu: %s\n", arananAltDizi); else printf("Alt karakter dizisi bulunamadi.\n");
sprintf() ve sscanf(): bir karakter dizisine veri
yazmak ve bir karakter dizisinden veri okumak
char hedef1[50];
char hedef2[50];
int sayi = 35;
int okunanSayi;
char okunanKelime[10];
// Veriyi karakter dizisine yazma (sprintf) sprintf(hedef1,"Hedefe veri yazdm"); printf("Hedef1 dizisi: %s\n", hedef1); sprintf(hedef1,"armut"); printf("Hedef1 dizisi: %s\n", hedef1); sprintf(hedef2, "Bu bir tamsayi: %d", sayi); printf("Hedef2 dizisi: %s\n", hedef2); // Veriyi karakter dizisinden okuma (sscanf) sscanf(hedef2, "Bu %s tamsayi: 35", &okunanKelime); printf("Okunan kelime: %s\n", okunanKelime); sscanf(hedef2, "Bu bir tamsayi: %d", &okunanSayi); printf("Okunan sayi: %d\n", okunanSayi); printf("string size: %d\n", strlen(okunanKelime));
islower(c), isupper(c) ve tolower(c), toupper(c):
bir karakterin küçük/büyük harf kontrolü ve çevrimi
char c = ‘A’;
if (islower(c)) printf("Karakter %c kucuk harftir.\n", c); else if (isupper(c)) printf("Karakter %c buyuk harftir.\n", c); printf("Karakterin kucuk hali: %c\n", tolower(c)); printf("Karakterin buyuk hali: %c\n", toupper(c));
isdigit(c), isalpha(c), isalnum(c), isxdigit(c): bir
karakterin rakam, harf, harf veya rakam, onaltılık
bir rakam olup olmadığının kontrolü
char c = ‘9’;
if (isdigit(c)) // isdigit(c): rakam (0-9) printf("%c bir rakamdir.\n", c); else if (isalpha(c)) // isalpha(): harf (a-z veya A-Z) printf("%c bir harftir.\n", c); if (isalnum(c)) // isalnum(): harf veya rakam printf("%c bir harf veya rakamdir.\n", c); if (isxdigit(c)) // isxdigit(): onalt˝l˝k rakam (0-9, a-f veya A-F) printf("%c bir onaltilik rakamdir.\n", c);
kullanıcıdan adını, soyadını ve öğrenci numarasını ayrı ayrı
alıp bunları birleştirin ve baş harflerini büyük yapın. Öğrenci
numarasının tam olarak 9 karakterden ve yalnızca
rakamlardan oluşup oluşmadığını kontrol edin ve koşul
sağlanana kadar öğrenci numarasını tekrar isteyen programı
yaz
char firstName[50];
char lastName[50];
char studentNumber[20];
printf("Adinizi giriniz: "); scanf("%49s", firstName); printf("Soyadinizi giriniz: "); scanf("%49s", lastName); printf("Ogrenci numaranizi giriniz: "); scanf("%19s", studentNumber); // Isimleri birlestirme char fullName[150]; sprintf(fullName, "%s %s", firstName, lastName); // Isimlerin bas harfi buyuk yapma int i; for (i = 0; i < strlen(fullName); i++) { if (i == 0 || fullName[i - 1] == ' ') fullName[i] = toupper(fullName[i]); else fullName[i] = tolower(fullName[i]); } // end for // Ogrenci numarasi duzenleme int devam = 0; do { for (i = 0; i < 9; i++) { if (!isdigit(studentNumber[i])) { devam = 1; break; } else devam = 0; } // end for if (strlen(studentNumber) != 9 || devam == 1){ printf("Hata: Ogrenci numarasi 9 karakterden ve yalnizca rakamlardan olusmalidir.\n"); printf("Ogrenci numaranizi giriniz: "); scanf("%19s", studentNumber); devam = 1;} else devam = 0; }while(devam == 1); // end do-while printf("Birlestirilmis bilgiler: %s, %s\n", fullName, studentNumber);
3x4’lük int a dizisinin 2.satırındaki tüm elemanları sıfıra eşitle
int a[3][4];
for(int column = 0; column <= 3; column++){
a[2][column] = 0;
}
3x4’lük int a dizisindeki elemanların toplamını alma
int total = 0;
for(int row = 0; row <= 2; row++{
for(int column = 0; column <= 3; column++){
total = total + a[row][column];
}
}
iki boyutlu bir diziyi birim matrise çevirme
int matris[N][N];
int i,j;
for(i = 0; i<N; i++){
for(j = 0; j<N; j++){
if(i == j){
matris[i][j] = 1;
}else{
matris[i][j] = 0;
}
}
}
for(i = 0; i<N; i++){
for(j = 0; j<N; j++){
printf(“%d”,matris[i][j]);
}
printf(“\n”);
}
bir matrisin transpozunu alma
int matris[3][3] = {
{1,2,3},
{4,5,6},
{7,8,9}
};
int transpoz[3][3]; int i,j; for(i = 0; i<3; i++){ for(j=0; j<3;j++){ transpoz[i][j] = matris[j][i]; } } printf("Transpoz matris: \n"); for(i = 0; i<3;i++){ for (j=0; j<3; j++) { printf("%d ",transpoz[i][j]); } printf("\n"); }