-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlab1.cpp
More file actions
83 lines (64 loc) · 2.13 KB
/
Copy pathlab1.cpp
File metadata and controls
83 lines (64 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <stdio.h>
#include <string.h>
#define SIZE 20
/*
void rightRotate(char *str,int shift) {
int len=strlen(str);
if (len==0) return; // Boþ string kontrolü
shift = shift%len; // Eðer kaydýrma uzunluktan büyükse mod al
if (shift==0) return; // Kaydýrmaya gerek yoksa çýk
char temp[shift]; // Geçici dizi (kaydýrýlacak karakterleri tutacak)
// Son shift kadar karakteri geçici diziye kopyala
for (int i=0;i<shift;i++) {
*(temp+i) =*(str+len-shift+i);
}
// Stringi saða kaydýr
for (int i=len-1; i>=shift;i--) {
*(str+i) = *(str+i-shift);
}
// Geçici dizideki karakterleri baþa ekle
for (int i=0;i<shift; i++) {
*(str+i) = *(temp+i);
}
}
int main() {
char str[SIZE] ;
printf("Lutfen bir string giriniz:\n"); scanf("%s",&str);
int shift = 3; // Kaç karakter saða kaydýrýlacak
printf("Stringin onceki hali-> %s\n", str);
rightRotate(str, shift);
printf("Stringin sonraki hali-> %s\n", str);
return 0;
} */
#include <stdio.h>
void rightRotate(char *str, int shift) {
// String uzunluðunu manuel hesapla
int len = 0;
while (*(str + len) != '\0') {
len++;
}
if (len == 0) return; // Boþ string kontrolü
shift = shift % len; // Eðer kaydýrma uzunluktan büyükse mod al
if (shift == 0) return; // Kaydýrmaya gerek yoksa çýk
char temp[shift]; // Kaydýrýlacak karakterleri geçici olarak sakla
// Son shift kadar karakteri geçici diziye kopyala
for (int i = 0; i < shift; i++) {
*(temp + i) = *(str + len - shift + i);
}
// Stringi saða kaydýr (yer deðiþtir)
for (int i = len - 1; i >= shift; i--) {
*(str + i) = *(str + i - shift);
}
// Geçici dizideki karakterleri baþa ekle
for (int i = 0; i < shift; i++) {
*(str + i) = *(temp + i);
}
}
int main() {
char str[] = "Merhaba";
int shift = 3; // Kaç karakter saða kaydýrýlacak
printf("Önceki hali: %s\n", str);
rightRotate(str, shift);
printf("Sonraki hali: %s\n", str);
return 0;
}