C - C++
C Ogrenen İnsana En Buyuk Yardim - Onun Yazdigi Kodu Usulune Uygun Ve Efektif Calisacak Bir Sekilde Yenilemek
C Ogrenen İnsana En Buyuk Yardim - Onun Yazdigi Kodu Usulune Uygun Ve Efektif Calisacak Bir Sekilde Yenilemek
-
#include<stdio.h> #include<string.h> #include <ctype.h> int main() { char str[256]; char res[256]; printf("Ferolamak istedigin yaziyi gir: "); scanf("%[^\n]", &str); int doubleCt = 1; for (int i = 0; i < strlen(str); i++) { if (str[i] != ' ') { if (doubleCt >= 2) { sprintf(res + strlen(res), "%c ", toupper(str[i])); doubleCt = 1; } else { sprintf(res + strlen(res), "%c", toupper(str[i])); doubleCt++; } } } printf("\nFEROLANAN METIN: %s\n\nORIJINAL METIN: %s\n", res, str); return 0; }
Inputtan gelen veriyi al, buyult ve iki harfe bir bosluk koy.
Bunun en dogru ve efektif yazimi nasil olmalidir?
-
her ucuncu karakter space olacagi icin soyle yapabilirsin, ayrica scanf e arrayin kendisini direkt vermen lazim & ile degil.
#include <stdio.h> #include <string.h> #include <ctype.h> int main() { int n = 0; char str[256]; char c, *p = str, res[256] = {0}; printf("Ferolamak istedigin yaziyi gir: "); scanf("%[^\n]", str); while ((c = *p++)) { if (c != ' ') { if ((n + 1) % 3 == 0) { res[n++] = ' '; } res[n++] = toupper(c); } } printf("\nFEROLANAN METIN: %s\n\nORIJINAL METIN: %s\n", res, str); return 0; }
-
Strcpy(tmp,str);
Str=(Char *)malloc(strlen(tmp)*2)
For(int i=1;i<=strlen(tmp);i++)
If(tmp[i]!=' ') strcat(str,*tmp[i]+28);
Strcat(str,' ');?
}
//print
Bu tarz birsey mobildeyim de hata cikabilir.
-
Cok tiskurlerrr
#include<stdio.h> #include<string.h> #include <ctype.h> int main() { char str[256], res[256]; int y = 0; printf("Ferolamak istedigin yaziyi gir: "); scanf("%[^\n]", str); for (int i = 0; i < strlen(str); i++) { char syllable[5] = "%c"; if (str[i] == ' ') { y -= 2; continue; } if (y % 2 == 1) strcat(syllable, " "); sprintf(res + strlen(res), syllable, toupper(str[i])); y++; } printf("\nFEROLANAN METIN: %s\n\nORIJINAL METIN: %s\n", res, str); return 0; }
Bu hale getirdim orneklere bakinarak
-
http://www.lojikprob.com/category/c/ belki konuya giren birinin işine yarar diye linki kopyalayayım dedim buyursunlar efem.
-
end bunu yazdı
Cok tiskurlerrr
#include #include #include int main() { char str[256], res[256]; int y = 0; printf("Ferolamak istedigin yaziyi gir: "); scanf("%[^\n]", str); for (int i = 0; i < strlen(str); i++) { char syllable[5] = "%c"; if (str[i] == ' ') { y -= 2; continue; } if (y % 2 == 1) strcat(syllable, " "); sprintf(res + strlen(res), syllable, toupper(str[i])); y++; } printf("\nFEROLANAN METIN: %s\n\nORIJINAL METIN: %s\n", res, str); return 0; }
Bu hale getirdim orneklere bakinarak
Hocu moduler aritmetigi katlettin.
-
emirhan-exp bunu yazdıend bunu yazdı
Cok tiskurlerrr
#include #include #include int main() { char str[256], res[256]; int y = 0; printf("Ferolamak istedigin yaziyi gir: "); scanf("%[^\n]", str); for (int i = 0; i < strlen(str); i++) { char syllable[5] = "%c"; if (str[i] == ' ') { y -= 2; continue; } if (y % 2 == 1) strcat(syllable, " "); sprintf(res + strlen(res), syllable, toupper(str[i])); y++; } printf("\nFEROLANAN METIN: %s\n\nORIJINAL METIN: %s\n", res, str); return 0; }
Bu hale getirdim orneklere bakinarak
Hocu moduler aritmetigi katlettin.
yanlis bir sey yok?
modunu aldigim sayiya 1 eklesem 0 kalanli olacakti, gerek yok.
-
end bunu yazdı
#include #include #include int main() { char str[256]; char res[256]; printf("Ferolamak istedigin yaziyi gir: "); scanf("%[^\n]", &str); int doubleCt = 1; for (int i = 0; i < strlen(str); i++) { if (str[i] != ' ') { if (doubleCt >= 2) { sprintf(res + strlen(res), "%c ", toupper(str[i])); doubleCt = 1; } else { sprintf(res + strlen(res), "%c", toupper(str[i])); doubleCt++; } } } printf("\nFEROLANAN METIN: %s\n\nORIJINAL METIN: %s\n", res, str); return 0; }
Inputtan gelen veriyi al, buyult ve iki harfe bir bosluk koy.
Bunun en dogru ve efektif yazimi nasil olmalidir?
stdin'e atıyorum 257 karakter girsem ne olacak? (Hayır, char dizisi her zaman null ile bitmek zorunda değil! Elemanları char olan bir dizi sadece)
strlen yerine null terminated olduğunu bildiğimiz için while (x != null) gibi de dönülebilir.
toupper yerine 32'yi de çıkarabiliriz. Tabi istediğimiz aralıkta olduğuna emin olduktan sonra. Örneğin:
if (chr >= 97 && chr <= 122) { chr-=32;}
-
YeniHarman bunu yazdıend bunu yazdı
#include #include #include int main() { char str[256]; char res[256]; printf("Ferolamak istedigin yaziyi gir: "); scanf("%[^\n]", &str); int doubleCt = 1; for (int i = 0; i < strlen(str); i++) { if (str[i] != ' ') { if (doubleCt >= 2) { sprintf(res + strlen(res), "%c ", toupper(str[i])); doubleCt = 1; } else { sprintf(res + strlen(res), "%c", toupper(str[i])); doubleCt++; } } } printf("\nFEROLANAN METIN: %s\n\nORIJINAL METIN: %s\n", res, str); return 0; }
Inputtan gelen veriyi al, buyult ve iki harfe bir bosluk koy.
Bunun en dogru ve efektif yazimi nasil olmalidir?
stdin'e atıyorum 257 karakter girsem ne olacak? (Hayır, char dizisi her zaman null ile bitmek zorunda değil! Elemanları char olan bir dizi sadece)
strlen yerine null terminated olduğunu bildiğimiz için while (x != null) gibi de dönülebilir.
toupper yerine 32'yi de çıkarabiliriz. Tabi istediğimiz aralıkta olduğuna emin olduktan sonra. Örneğin:
if (chr >= 97 && chr <= 122) { chr-=32;}
malloc diye bir sey varmis galiba bunun icin
-
TA MA MD AE ĞE RK EL İM EN İN HE CE Sİ 3H AR FL İİ SE SO RU NO LU R.
---
Kardeşim pazartesi pazartesi işim çok, benim aklıma şöyle şeyler sokmayın :D
Python alternatifi:
def get_syllables(word): syllables = [] bits = ''.join(['1' if l in 'aeıioöuü' else '0' for l in word]) seperators = (('101', 1),('1001', 2),('10001', 3)) index, cut_start_pos = 0, 0 while index < len(bits): for seperator_pattern, seperator_cut_pos in seperators: if bits[index:].startswith(seperator_pattern): syllables.append(word[cut_start_pos:index + seperator_cut_pos]) index += seperator_cut_pos cut_start_pos = index break index += 1 syllables.append(word[cut_start_pos:]) return syllables cumle = input("Ferola: ") print(" ".join(" ".join(get_syllables(cumle.replace("(","").replace(")","").replace("'",""))).upper().split()))
Heceleme fonksiyonu credits: https://gist.github.com/miratcan/9196ae2591b1f34ab645520a767ced17
GİRDİ:
Katlanarak her an katlanarak Before trap vakit geçerdi hep sallanarak (trap) Geriye dön bak deme lan bakamam (let's go) Rakama değil lan adama feat ver Beni de bi' ince seviyo kitlem Darlama buradan bi' siktir git len! Basını, tizini, midini bilmem Heceler geçerim, alayı dinler Hedefi seçerim, elimde pimler Bi' günde çıkarım, bi' ömür inmem İvmem yükselir inmem Şarkılarım fıtık gibi kulaklarda nüksedip inler Piller bitmedi birden (yok yok) Trenime bin nigga korkma demirden
ÇIKTI:
KAT LA NA RAK HER AN KAT LA NA RAK BE FO RE T RAP VA KIT GE ÇER DI HEP SAL LA NA RAK TRAP GE RI YE DÖN BAK DE ME LAN BA KA MAM LETS GO RA KA MA DE ĞIL LAN A DA MA FEAT VER BE NI DE BI IN CE SE VI YO KIT LEM DAR LA MA BU RA DAN BI SIK TIR GIT LEN! BA SI NI, TI ZI NI, MI DI NI BIL MEM HE CE LER GE ÇE RIM, A LA YI DIN LER HE DE FI SE ÇE RIM, E LIM DE PIM LER BI GÜN DE ÇI KA RIM, BI Ö MÜR IN MEM İVMEM YÜK SE LIR IN MEM ŞAR KI LA RIM FI TIK GI BI KU LAK LAR DA NÜK SE DIP IN LER PIL LER BIT ME DI BIR DEN YOK YOK TRE NI ME BIN NIG GA KORK MA DE MIR DEN
BUG:
parantezler sorun çıkıyor
kesme işaretleri bazen sorun çıkarıyor
ingilizce kelimeler sorun çıkartıyor (çünkü heceleme fonksiyonu türkçe için)kalın işaretlediğim kelimeyi tek başına ayırıyor ancak uzun cümlede sapıttı, sebebini bilmiyorum
NoktaliVirgul tarafından 14/Eki/19 10:16 tarihinde düzenlenmiştir -
end bunu yazdı
malloc diye bir sey varmis galiba bunun icin
calloc, malloc, free vs. hepsi dinamik bellek kullanımı için. Sorunun cevabı bu değil yani. Doğru cevap
scanf("%254c", str) olmalı.
Bu arada res dizisinde taşma olur çünkü ekleme yapılıyor. En kötü durumda n + (n / 2) boyutunda olmalı.