EYVALLAH kardeşim.. yapmak istediğim tam da böyle bir şeydi... her şey için sağol.. |
Arkadaşlar girdiğim karakter dizisinin baştan ve sondan bakarak aynı ise yazdırıan bir proğram yapmaya çalıştım.. Ama yine başarılı olamadım.. amacım şu mesela: 'adebdega' diye bir karakterimiz var.. burda baştan ve sondan baktığımızda her iki yerde de 'a' var. elde 1. sonra bakmaya devam ediyoruz. 3. sırada e var ve sondan 3. sırada yine e var.. Elde oldu 2. başka yok.... sonuç 2.... bu şekil bir program.. kendi yaptığım programda 2. for döngüsünü yanlış yaptığımı düşünüyorum yardım edin #include<stdio.h> |
@ahmet_k06 İki for'a ihtiyacın yok zaten.
|
ödevime bir yardım edebilir misiniz ? c de böyle bir görüntü oluşturmam gerekiyor açıları gircem üçgenmi değilmi söyleyecek üçgense eşkenar mı ikizkenarmı birde bunlar için hangi kodları kullanmam gerekir if lerle mi oluyor while larla mı oluyor kusra bakmayın daha 2-3 hafta olduğu öğrenmeye başlayalı < Resime gitmek için tıklayın > |
arkadaşlar probemim şu aşağıdaki programda ikinci printf satırı olayınca program 0 dan 256 ya kadar olan sayıların tamamının sonuclarını gösteriyor ama ikinci printf olunca 108 ve sonrasını gösteriyor. ikinci printf varken bütün sonucları nasıl görebilirim? #include<stdio.h> int main(void) { int d1; d1=0; for(d1=0;d1<256;d1=d1+1) { printf("AScII kodu %d olan karakter :%c \n",d1,d1); printf("------------------------------------\n"); } } |
Toplam 512 satır olduğu için ve işlemler çok hızlı yapıldığı için 108 den öncekiler yukarıda kalıyodur. |
Arkadaşlar, arka arkaya 3 defa girilen karakterlerin toplamını söyleyen bir program yapmak istedim... mesela 11123334 bu dizide 2 tane var... ama ben programımda toplamını almayı ve ekrana yazdırmayı beceremedim... ! #include<stdio.h> |
hocam peki sonuçların tamamını göreilmek için yapabileceğim bir şey varmı? |
output'u bi dosyaya alabilirsin. output.txt gibi |
Arkadaşlar klavyeden girilen bir dizide arka arkaya 3 defa tekrar eden sayıların toplamını bulan bir program yapmaya çalştım.. Ama bir sorun var ilk 3 satırda doğruysa alıyor diğerlerini almıyor ? yardım! #include<stdio.h> |
Linux'ta kullanmak için hangi C/C++ IDE/Editör'ü önerirsiniz? Kullandığım Linux dağıtımı, Arch Linux (32-bit) Code::Blocks düşünüyorum şuan ama belki Linux ortamına özgü daha iyi bi IDE vardır ondan sorayım dedim |
Hocam daha iyi mi bilemem de ben Geany kullanıyorum, alışınca fazlasıyla rahat bence. |
@GhilleintheMist Ben bir ara vim ve eklentilerini kullanmıştım. Ama şimdi QT Creator kullanıyorum. Code::Blocks'da copy-paste yapamıyorum o yüzden kullanamıyorum. KDevelop'u da denedim pek ısınamadım. |
Geany'i deneyeceğim :) Qt Creator'u ben de beğenmiştim fakat tek dosya ile çalışmayı bulamadım. İlla ki proje şeklinde yapmak gerekiyor sanırım. O da pek hoşuma gitmedi benim açıkçası. Öneirleriniz için teşekkürler:) @Mtntk @-Source- |
arkadaşlar ben daha yeni yeni c öğreniyorum. basit bir sorum var. scanf ile bir sayı alırken bunun sayı dışında bir karakter olduğunda programın uyarı vermesini istiyorum. nasıl yapabilirim? teşekkürler. |
Merhaba, Aşağıya ekleyeceğim kodlar sayesinde bu istediğiniz şeyi yapabilirsiniz hocam. Kolay gelsin... Kodlar:
|
isdigit() fonksiyonunu kullanabilirsin.Fonksiyonu kullanmak için ctype.h kütüphanesini include etmelisin. Örnek bir uygulama yazdım. #include <stdio.h> |
teşekkürler. |
Konuyu gezerken gördüm cevabı bildirim gelmemiş o yüzden şimdi yanıtlayayım. === -Tecrübeli bir cracker'ı calloc ile mi engelleyeceksin? Güvenli endişesi duyulan projelerde zaten uzman desteği alınır. Öyle onu bunu kullanma demekle güvenlik sağlanmaz. Adamlar bu işlere milyon dolarlar harcadığı halde yetersiz kalıyor. >İsteyen istediği gibi yazar zaten ben sadece uyardım. Overflow: return printf("%200000000000000c",'a') < 0; Normalde overflow hatası vermesi lazım ancak daha kötüsü kod yanlış yorumlanıp sadece a harfinin yazıldığını göreceksiniz. Üstelik hata bile vermeyecek. Bu kodu msvc11 derlediğinde düzgün çalıştığını ama Gnu(mingw) derlediğinde yukarıdaki gibi olduğunu göreceksiniz. Yani sorun daha da büyük. Ayrıca şuna bakın: int val; val = 0x7fffffff; /* 2147483647*/ printf("val = %d (0x%x)\n", val, val); printf("val + 1 = %d (0x%x)\n", val + 1 , val + 1); /*Overflow the int*/ return 0; bunu cout ile denersek --- Burada güvenlikle ilgili herhangi birşey söylememişsin. Zaten ağır string işlemlerinde bu fonksiyonlar çok yorar ve C uygun dil olmaktan çıkar. C++ ile mis gibi string sınıfları kullanılabilir. Fazla kasmaya gerek yok. Herşeyi yerinde kullanacaksın. >güvenlikten dolaylı olarak bahsettim orada o işlemler yapılırsa adam malloc kullanıp pozisyon tutmazsa yine ciddi sorunlar ortaya çıkacak. Bu dönemde projelerde C++ nin kullanılması bence de dediğin gibi daha doğru. --- Mesela harici bir kaynaktan string bilgisi alınacak ve bir yere kopyalanacak diyelim. Bunun için güvenli olduğunu düşündüğün strcpy_s kullandın ve buffer uzunluğunu da verdin. Gelen string buffer ı aşıyorsa yarım kalır ve kopyalanmaz. Uygulama çökmez ama hatalı işleyişe sebep olur. Bunun çözümü _s takılı "güvenli!" fonksiyonlar kullanmak değil buffer uzunluğunu garanti altına almaktır. hiç düzgün olarak _s kullanmadığım ve yakın zamanda kullanmayacağım için bu konuda fazla konuşamam ama zaten _s kullanılmamalı. (microsoft özel) --- Emin ol oradaki zaman kaybı senin o gereksiz kodları yazarken kaybettiğin zamandan çok çok daha kısadır. >Ben orda güvenliği düşünerek öyle demiştim. Ayrıca fazla güvenlik istemezse şöyle deneyebilir printf(str); /*burada % gibi karakterleri ele*/ veya sadece printf("%s",str); --- Örnek? Kastettiğin virtual fonksiyonlar ise onu C ile gerçeklediğin zaman yine aynı şey olacak. Şablonlarda da hız kaybı değil bilakis hız kazancı ve üzerine tip güvenliği var. Birşey yazıyorsan onu somutlaştır ki havada kalmasın. >derleyici optimizasyonlarını hesaba katmazsak (Mesela msvc c++ için çok fazla optimizasyon yapar) öyle olduğu düşünülüyor. Ben hiç test yapmadım. İnternet üzerinde çeşitli kaynaklara baktım 20-30 dakika bir tanesi bile c++ ın hız konusunda daha iyi olduğunu söylemedi. |
O zaman daha basit halini yapalım.
for(int i = limit - 1; i >= 0; i--)
{
deger2[limit - i - 1] = deger;
}
Yukarıdaki kod ile deger2 dizisine deger dizisindeki değerleri tersten eklemiş oluruz.
printf("\nGIRDIGINIZ DEGERLERIN YER DEGISTIRILMIS HALI\n");
for(i=0;i<limit;i++)
printf("%d\t",deger2);
printf("\n\n");
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesajda bahsedilenler: @ahmet_k06