Arkadaşlar şimdi benim bir dizide ki sayıları tek çift olma durumuna göre çiftdizi ve tekdizi adlı bir başka dizilere aktarmam gerekiyor bu ödevlerimden bir tanesi. Adım adım gidiyorum. Dışarıdan girilen bir sayının tek mi çift mi diye belirleyip ekrana yazdırabiliyorum fakat aşağıda bu işlemi dizilerde yapmak isteyince be girersem çifttir yazıyor.Sadece buraya kadar olan kısımda nerde hata yapıyorum yardımcı olursanız sevinirim. static void Main(string[] args) { int x = Convert.ToInt32(Console.ReadLine()); float k; k = (x / 2) * 2; if (x == k) { Console.Write("Girdiğiniz sayı çifttir"); } else { Console.Write("Girdiğiniz sayı tektir"); } Console.ReadKey(); } bu normal bir şekilde yaptığım uyg. bunda sıkıntı yok... static void Main(string[] args) { int n; double k; Console.Write("Dizinin elaman sayısını girin: "); n = Convert.ToInt32(Console.ReadLine()); int[] dizi=new int[n]; for (int i = 0; i < n; i++) { Console.Write("{0}. Elemanı giriniz: ",i+1); dizi = Convert.ToInt32(Console.ReadLine()); k = (i / 2) * 2; if (i == k) { Console.WriteLine("çift"); } else { Console.WriteLine("tektir"); } } Console.ReadKey(); } Sıkıntı burada ^ |
Merhaba dostum. Senin kod biraz karışık geldi ( Fazla matematiksel işlem var kafam basmadı :) ) Daha önce bi arkadaşa şöyle bişey yapılmıştı.........http://pastebin.com/9bW0HH9Q Onda ufak oynayınca da bu şekilde oldu ...............http://pastebin.com/5UevnGVr Umarım işine yarar. |
k = (x / 2) * 2; Burda sayıyı 2 ye bölüyosun sonra 2 ile çarpıyosun. Bu işlem sayıyı değiştirmez ki. yani k her halikarda x e eşit olur. Tek çift kontrolünü şu şekilde yapabilirsin. if( x%2 == 0 ) /* Yani sayıyı 2 ye göre mod alınca kalan 0 oluyosa çift. */ { //çift } if( x%2 == 1 ) /* Yani sayıyı 2 ye göre mod alınca kalan 1 oluyosa tek. */ { //tek } |
Cevap için teşekürler. Programlamada henüz yeniyim pointer kavramı biraz karışık geldi açıkcası. Bir de şöyle bir sorum olacak sorunu görmek biraz sıkıntılı ama standart sapma hesaplayan bir program yazmak istedim. Çalıştırdığımda garip bir değer (-1.#0IND00) veriyor. calculation adlı fonksiyon da bi sıkıntı var sanırım. onu bir kontrol edebilir misiniz ? #include <stdio.h> |
Çözdüm gençler sıkıntı yok ![]() |
int olduğu için virgülden sonra ki kısım alınmaz yani 5 sayısını örnek olarak alırsak 5/2=2,5 fakat int olduğu için bu 2 olarak alınıyor ve 2 ile çarpınca 4 oluyor bu durumda 5 eşit olmadığı için 4 e ekrana tektir yazdırıyorum. Belki böyle tam olarak anlatamadım ama ilk attığımı incelerseniz anlayabilirsiniz orda tek girersen tek çift girersen çift diye yazdırıyor çünkü |
Örneğini tam incelememiştim dostum kusura bakma. Sıkıntılı olan örnek için ; static void Main(string[] args) { int n; double k; Console.Write("Dizinin elaman sayısını girin: "); n = Convert.ToInt32(Console.ReadLine()); int[] dizi=new int[n]; for (int i = 0; i < n; i++) // Dizinin eleman sayısını aldın güzel o kadar da döndürdün for u; { Console.Write("{0}. Elemanı giriniz: ",i+1); dizi = Convert.ToInt32(Console.ReadLine()); // Burda eleman ataman hatalı. Dizinin hangi elemanı için değer alıcağını belirtmemişsin. Bu şekilde tüm diziye eleman atıyosun. Yapman gereken dizi[i ] = ConvertToInt32(Console.ReadLine()) diyip, dizinin kaçıncı elemanı için atama yaptığını belirtmen.. k = (i / 2) * 2; // Artık diziye eleman atadığın için senin i ile işin yok.. Dizi[ i] ile iş yapıcaksın. Yani k=(dizi[ i]/2)*2; if (i == k) // Burda da dizi ile k yı karşılaştırıcaksın. if ( dizi[ i] == k) { Console.WriteLine("çift"); } else { Console.WriteLine("tektir"); } } Console.ReadKey(); } |
merhaba çok basit bişey yazmaya çalışıyorum ama yapamadım yardımcı olabilirmisiniz kalvyeden girilen ismi 10 kez ekran yazan program c++ kullanıyorum int main(int argc, char *argv[]) { int i=1,ad; printf("ad gir"); scanf("%d",ad); for (i=1; i<=10; i++) printf("=%d",a); return 0; |
bizden c++ istiyorlar şimdilik o yüzden mecbur bundayız ama yaptım kardeş bi şekilde oldu bende anlamadım ama başka sorum olacak . baştaki include ları falan atlıyorum direk konuya gircem int main() { int a = 1; int b = 3; while(a<b){ printf("while'in icindeyim\n"); a=a+1; } printf("while'in disindayim"); getch(); return(0); } burda whileın içindeki ifade sonlanana kadar dışına çıkmıyor ve belirttiğimiz aralık kadar tekrarlanıyor sonra çıkıyor. aralık küçük olunca sıkıntı yok ama diyelim aralık çok uçuk bu değerde . o whilein içindeki ifadenin art arda ne kadar tekrarlandığını numaralamamız mümkünmü acaba ? ama bu numaralamayı programın kendisinin yapması lazım |
Dun hallettim kardes. Sagolasin yinede. Bu basligi kesfettigim iyi oldu. Her cuma damlarim artik buraya. ![]() |
Hocam pek benimkine benzetemedim ya biraz da acemiyim de C++'da :) Benimkinde mesela 5 sayısı girdiğimde 5x5 matris yapıp ortasına dörtgen çizecek.10 girdiğimde 9x9 matris yapıp çizecek falan biraz daha karışık benimki ben biraz daha çalışayım en iyisi ![]() Edit:Benim yazdığım kodlarda if içine yazdığım ((j <= ((N / 2) - (2 * i - 1)) / 2) işleminde çıkan sonucu eksili almıyor galiba çünkü mesela eksili çıksa doğru görüntü çıkacak. örneğin; i=3 j=1 ve N=6 olsun j<=-1 olmayacağı için atıyorum + işareti koyması lazım ama o -1 değil 1 alıyor ve 1<=1 diyip - işareti koyuyor.Bunu nasıl çözerim anlamadım. |
kardeş hiç boşuna okuma bişeyler denedim ve yaptım ,oldu :D başka soruya kaldı inşallah |
Eksili almıyo diye birşey olmaz dostum. Bilgisayar sonuçta bu, sonuç neyse onu alır ![]() Derleyici olarak visual studio kullanıyosan, breakpoint kullanımını araştır. Satır satır nerde ne sonuç çıkıyo inceleyebilirsin. |
Tamam hocam hallettim sağolasın. ![]() |
Merhaba, alıcağın isim integer bir değer değil. o yüzden char kullanmalısın. int main() { char ad[10]; // char tek karakter alır. Ama dizi olarak tanımlarsan 10 karaktere kadar alabilirsin. printf("Ad Girin : "); scanf("%s", &ad); // char değişkeni %s ile alınır. Ayrıca ad'a atama yapıcağın için &ad demen gerekir. for(int i = 0 ; i<10 ; i++) { printf("%s \n" , ad); } system("PAUSE"); return 0; } |
FİBONACCİ SAYISINI VEREN KOD C DİLİNDE.FOR DÖNGÜSÜNÜN İÇİNDE BİR HATA VAR GALİBA ÇÖZEMEDİM YARDIMCI OLUR MUSUNUZ /* TASK 2 : Write a main program to compute the Fibonacci number. */ #include<stdio.h> int main(){ int x,x0=0,x1=1,sum,counter,intervalvalue; printf("Please enter an integer:"); scanf("%d",&x); if(x==0) printf("Fib(0)=0.\n"); if(x==1) printf("Fib(1)=1.\n"); if(x>1){ for(counter=0;counter<x;++counter){ intervalvalue=x0+x1; x0=x1; x1=intervalvalue; sum=x0+x1;} printf("Fib(%d)=%d.",x,sum);} getch(); return 0; } |
n-- olsa anlarımda , --n olunca nasıl böyle oldu? < Resime gitmek için tıklayın > |
n-- ve --n kullandığı yere göre farklılık gösterir. Yani her zaman farklı sonuçlar verecek diye bir kaide yok! Mesela sen bir matematiksel işlem yapıyorsun burada fark eder! örneğin : x=10; y=5; z=16; m=++x - --y + z++; printf("z=%d \n",z); printf("x=%d \n",x); printf("y=%d \n",y); printf("m=%d \n",m); Ekran Çıktısı z=17 x=11 y=4 m=23 olur. Sen for içinde kullanırsan farketmez! |
for(a=1; a<=5; a++) -----> Burda da 'a' yı 1 den başlatıp 1 er 1 er atlatıyosun. Ekrandan aldığın değerin bir anlamı kalmıyor yani. Orayı çözmen lazım öncelikle.
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesajda bahsedilenler: @vitta