Arama butonu
Bu konudaki kullanıcılar: 2 misafir, 2 mobil kullanıcı
4171
Cevap
168819
Tıklama
3
Öne Çıkarma
Cevap: C/C++/C# Sorularınız Buraya. . .(GÜNCEL) (39. sayfa)
M
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: elektro_gadget

quote:

Orijinalden alıntı: jervis

hocam aynen yazım undefined reference to 'exit' yazısı çıkıyor
exitin içine 1,0,101,140, denedim hiç biri çkıkmadı

Exit yazarsan tabi undefined olur. 'e' küçük olacak. Ayrıca bu exit sadece süs olmuş. P, L, C haricinde ne yazarsan yaz zaten kapanır. Bunu engellemek için switch i döngü içine almalısın.

Naçizane Ekleme yapmak istedim

Bir default: tanımlaması da yapılabilir.



W
13 yıl
Yüzbaşı

C de piramit yapmanin mantigi nedir for dongusuyle?
Mesela dik ucgen seklinde piramit. Tanimladigimiz i ve j jin satir sutun olup olmadigini nasil anlicam iyicene kafam karisti..



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 2 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: welowis

C de piramit yapmanin mantigi nedir for dongusuyle?
Mesela dik ucgen seklinde piramit. Tanimladigimiz i ve j jin satir sutun olup olmadigini nasil anlicam iyicene kafam karisti..

Nasıl kullandığına bağlı hangisi satır hangisi sütun ? Kodun nerede ?

Dik üçgen çizdirmek içinde her zaman i,j gerekmiyor. Hele iç-içe for döngüsü de gerekmiyebilir. Burada düşünce mantığın önemli "Nasıl ekrana dik üçgen bastırırım ?"
Aşağıda 4 dik üçgen var. Ne iç-içe for döngüsü ne j var. pyramid_floor değerini değiştirdikçe dik üçgenleri büyütüp küçültebilirsin. pyramid_floordan büyük olmamak kaydıyla, pyramid_top büyütürsen dik yamuk elde edersin.

Mantık senin mantığın ve düşünce tarzın. Ben bir şeyi sadece bir yolla yaparım diye bir şey çoğu zaman yok. Aşağıdaki kod i ve j ile yine tek for üzerinde de dönebilir ama daha kompleks olur.

Kodunu göster ona göre nere satır nere sütün söyliyelim. (Evet direk kullanma diye C++ )

/* DH GaRUi */ 
#include <iostream>
#include <iomanip>

#define pyramid_floor 10
#define pyramid_top 1

int main()
{

int i;

for (i=pyramid_top; i<=pyramid_floor ; ++i)
{
cout << setw(i) << setfill('*') << '*' << endl;
}

cout << endl;

for (i=pyramid_floor; i>=pyramid_top ; --i)
{
cout << setw(i) << setfill('*') << '*' << endl;
}

cout << endl;

for (i=pyramid_top; i<=pyramid_floor; ++i)
{
if(i<pyramid_floor) { cout << setw(pyramid_floor-i) << setfill(' ') << ' ';}
cout << setw(i)<< setfill('*') << '*' << endl;
}

cout << endl;

for (i=pyramid_floor; i>=pyramid_top ; --i)
{
if(i<pyramid_floor) { cout << setw(pyramid_floor-i)<< setfill(' ') << ' ';}
cout << setw(i) << setfill('*') << '*' << endl;
}


return 0;
}


 
*
**
***
****
*****
******
*******
********
*********
**********

**********
*********
********
*******
******
*****
****
***
**
*

*
**
***
****
*****
******
*******
********
*********
**********

**********
*********
********
*******
******
*****
****
***
**
*


Ekleme: Nasıl normal piramit yapmışlar diye baktığımda 3 for iç-içe görmüştüm. Kodun kompleks yapısı iyice artıyor. Aşağıda 3 for ve 3 normal piramit var. Birinde j bile yok.

 
/* DH GaRUi */
#include <iostream>
#include <iomanip>

#define pyramid_floor 11
#define pyramid_top 1
#define pyramid_increase 2

int main()
{

int i;

for (i=pyramid_top; i<=pyramid_floor ; i+=pyramid_increase)
{
cout << setw(pyramid_floor-i/pyramid_increase)<< setfill(' ') << ' ' << setw(i) << setfill('*') << '*' << endl;
}

cout << endl;

int j;

for (i=pyramid_top, j=pyramid_floor/pyramid_increase; i<=pyramid_floor ; i+=pyramid_increase, --j)
{
if(i<pyramid_floor ) { cout << setw(j)<< setfill(' ') << ' ';}
cout << setw(i) << setfill('*') << '*' << endl;
}

cout << endl;

for (i=pyramid_floor, j=pyramid_top/pyramid_increase; i>=pyramid_top ; i-=pyramid_increase, ++j)
{
if(i<pyramid_floor ) { cout << setw(j)<< setfill(' ') << ' ';}
cout << setw(i) << setfill('*') << '*' << endl;
}

return 0;
}


 
*
***
*****
*******
*********
***********

*
***
*****
*******
*********
***********

***********
*********
*******
*****
***
*





< Bu mesaj bu kişi tarafından değiştirildi garui -- 19 Kasım 2012; 2:21:40 >

G
13 yıl
Yarbay

quote:

Orijinalden alıntı: strahd_von_zarovich

Değişken belirtilirken özelliklerin sırasının değişik verilmesi bir şeyi etkiler mi ? Yani int short unsigned a; ile unsigned short int a tam olarak aynımıdır ? Ayrıca float ve double ın usigned alamamasının nedeni ne ?

Birinci sorunun cevabı evet tam olarak aynı. Diziliş sadece const işaretçilerde fark eder.

float ve double ın unsigned olmasının bir mantığı yok. Tamsayılarda sayıya 1 bit ilave etmek 2 kat büyütürken kayar noktalı sayılarda neredeyse hiç etki etmez. C' ye yeni başlayanlar özellikle double ı büyük sayıları tutmak için kullanırlar. Bu külliyen yanlış. Kayar noktalı sayılarda bit artışı özellikle sayının hassasiyetini arttırmak için yapılır.

Diyelim ki double ı parametre olarak alan bir fonksiyonumuz var ve bu parametrenin mümkün olan en yüksek genişlikle değer almasını istiyoruz. Böylece işlem daha doğru ve hassas şekilde gerçekleşecek. Bunu yapmanın en basit ve etkili yolu parametreye 0 ile 1 arasında bir değer vermektir.

Kullanım amacını doğru anlayınca floating türlerin signed veya unsigned olmasının bir farkı olmadığı anlaşılıyor.



M
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: welowis

C de piramit yapmanin mantigi nedir for dongusuyle?
Mesela dik ucgen seklinde piramit. Tanimladigimiz i ve j jin satir sutun olup olmadigini nasil anlicam iyicene kafam karisti..

Esasında çok basit. Arkadaşımız yardımcı olacak çok güzel bir örnek vermiş. Ben de pratik bir yöntem söyleyeyim.

Kareli bir defterin varsa, eğer yoksa kendin çizebilirsin, çizmek istediğin üçgeni çiz. Sonra köşe noktalarını(köşeden kastım üçgenin kenarlarının karelerin kesişim noktasından geçtiği yerler) belirle. Orijini sol üst olarak belirleyerek(çünkü çıktı bu noktadan başlıyor) noktaların koordinatlarını yaz fakat pozitif değerlerle yaz. Noktaları belirledikten sonra aralarında matematiksel bir bağlantı olduğunu göreceksin. Bu sana kullanmak gereken algoritmanın en basit şekilde mantığını verir.

Kolay gelsin.



X
13 yıl
Onbaşı

Merhaba abiler. Bugün programlamadan sınavımız varda takıldığımız bir kaç problem var. Onların kodlarını öğrenebilirsek süper olur. Sınav saat 3te, o zamana kadar birde deneme şansımız olsa süper olacak.
Şimdi bize
1-4 işlemin kodu(if'li olacak falan)
2-ax^2+bx+c denkleminin köklerini veren kod. delta>0 ise iki kökü vardır kökler -(kök içinde delta -b/2a) ve -(kök içinde delta+b/2a) delta<0 ise kökü yoktur, delta=0 ise bir kökü vardır.
3-notları girilip ortalaması hesaplandıktan sonra ortalaması 0<x<25 ise f, 25<x<50 ise d, 50<x<75 ise c, 75<x<85 ise b
85<x<100 ise a olan kod

Bunları yazabilirseniz çok sevineceğim. Sorular belki vardır ama acelem olduğundan bakacak vakit yoktu kusura bakmayın. Kolay gelsin. :)



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
M
13 yıl
Yüzbaşı

Ben bilgisayar mühendisliği okumadım, ama kendi başıma kitabını alıp okuduğumda kitabın sonundaki bu tarz soruları kolaylıkla çözebiliyordum.

Şimdi,

1) Vakit vardı, vaktini değerlendirememiş son zamana sıkıştırmışsın
2) Kodlar okuyarak değil, yazarak öğrenilir(diğer türlü ezberlersin ve unutursun)
3) Doğru bölüm tercihi yapıp yapmadığınızı bir daha düşünün.
4) Sorunlarına odaklanmaya çalış, yaptırır gibi değil, belirtir gibi isteyin. Ben şahsen bundan çok rahatsız oluyorum. Cevap verenler de pratik yapmak için veriyor biliyorum. Ama siz yarın bir gün diploma sahibi olacaksınız. Allah aşkına şu basit kodları çıkarmaya bile üşendiniz mi, gidin çalışın. Nedir bu olay? Nasılsa yazan var. Şu kodları yazmam inan daha kısa sürerdi bu mesajı yazmaktan. Düşüne düşüne yazmaya gayret gösterdim.
5) Bunları bir google'da aratsan ne kadar standart sorular olduğunu görecektin fakat ona dahi üşenmişsin. Fakat ne mantıksa yazıp cevabını beklemek daha kolay geliyor. Çünkü armut pişecek ağıza düşecek illa ki.

Bu kadar yazdıktan sonra üzüldüm de yazayım dedim. Yazmaya başladıktan sonra yine vazgeçtim kodları görünce. Çalışın, öğrenci değil misiniz. Yardım almak tamam da kodu istemek nedir? Şu noktada kitlendik deyin, hemen yardımcı olayım.





< Bu mesaj bu kişi tarafından değiştirildi MrOwl -- 19 Kasım 2012; 11:52:35 >
Bu mesaja 1 cevap geldi.
S
13 yıl
Binbaşı

2.kez sorucam ama aşağıda neyin yazdırılabileceği bilinebilir mi? İlk 2 si tamam sadece 3.printf önemli

int i;
float b=8.1,c=0.7;

i=b/c;
printf("%d\n",i);
c=c*c;
printf("%f\n",c);
i=i+b;
printf("%f\n",i);


Bu mesaja 2 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: strahd_von_zarovich

2.kez sorucam ama aşağıda neyin yazdırılabileceği bilinebilir mi? İlk 2 si tamam sadece 3.printf önemli

int i;
float b=8.1,c=0.7;

i=b/c;
printf("%d\n",i);
c=c*c;
printf("%f\n",c);
i=i+b;
printf("%f\n",i);

Yine mi

11
0.490000
0.490000

Yani 19 değil. Yine yanlış bir printf denemesi.


printf("%d\n",i); //olursa 19
printf("%f\n",(float)i); // olursa 19.000000

printf("%f\n",i); // olursa 0.490000 -> Direk böyle kullanırsan diğerlerini print etmezsen başka bi değer çıkacaktır.
Koddaki ilk iki printf silinir ise printf("%f\n",i); // 2.168831



In function 'int main()':
Line 10: warning: converting to 'int' from 'float'
Line 14: warning: converting to 'int' from 'float'





< Bu mesaj bu kişi tarafından değiştirildi garui -- 20 Kasım 2012; 0:05:22 >
Bu mesaja 1 cevap geldi.
M
13 yıl
Yüzbaşı

 
#include<stdio.h>
#include<conio.h>
int main (void)
{
int i,j;
for(i=0,j=0;i+j<=10;i++,j++)
printf("%d\n",i+j);
getch();
return(0);
}


beyler burda ++ i ve j nin sonundalar

 
#include<stdio.h>
#include<conio.h>
int main (void)
{
int i,j;
for(i=0,j=0;i+j<=10;++i,++j)
printf("%d\n",i+j);
getch();
return(0);
}


Burda da önündeler. Şimdi ++ önce olunca sayıları artırıp öyle işleme girmesi gerekmiyor mu? Ben ikisini de yazdırdım ikisi de aynı şeyi yazıyor





< Bu mesaj bu kişi tarafından değiştirildi mertov -- 20 Kasım 2012; 0:15:31 >
Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: mertov

Burda da önündeler. Şimdi ++ önce olunca sayıları artırıp öyle işleme girmesi gerekmiyor mu? Ben ikisini de yazdırdım ikisi de aynı şeyi yazıyor

For için farketmez. Bu assignment işlemleri sırasında önem taşır. Birde performans farkını unutmamak lazım tabi. ++i daha performanslıdır diyebiliriz doğru kullanırsan.

#include <stdio.h> 

int main()
{

int i=5,k=0;

k=++i;
printf("k : %d, i : %d\n",k,i);

k=i++;
printf("k : %d, i : %d\n",k,i);

k=(++i);
printf("k : %d, i : %d\n",k,i);

k=(i++);
printf("k : %d, i : %d\n",k,i);
return 0;
}


 
k : 6, i : 6
k : 6, i : 7
k : 8, i : 8
k : 8, i : 9





< Bu mesaj bu kişi tarafından değiştirildi garui -- 20 Kasım 2012; 0:32:09 >
Bu mesaja 1 cevap geldi.
S
13 yıl
Binbaşı

quote:

Orijinalden alıntı: garui

quote:

Orijinalden alıntı: strahd_von_zarovich

2.kez sorucam ama aşağıda neyin yazdırılabileceği bilinebilir mi? İlk 2 si tamam sadece 3.printf önemli

int i;
float b=8.1,c=0.7;

i=b/c;
printf("%d\n",i);
c=c*c;
printf("%f\n",c);
i=i+b;
printf("%f\n",i);

Yine mi

11
0.490000
0.490000

Yani 19 değil. Yine yanlış bir printf denemesi.


printf("%d\n",i); //olursa 19
printf("%f\n",(float)i); // olursa 19.000000

printf("%f\n",i); // olursa 0.490000 -> Direk böyle kullanırsan diğerlerini print etmezsen başka bi değer çıkacaktır.
Koddaki ilk iki printf silinir ise printf("%f\n",i); // 2.168831



In function 'int main()':
Line 10: warning: converting to 'int' from 'float'
Line 14: warning: converting to 'int' from 'float'



Hoca bugün sınavda sordu da , ilk olarak bilinemez yazdım , bilinemezi nasıl gösteriyim diye sorunca orada öyle bir şey yok dedi bu sefer de 19.000000 yazdım , o da olmadı anlaşılan. 0.490000 yazmak hiç aklıma gelmezdi, nedenini de çözebilmiş değilim.


Bu mesaja 1 cevap geldi.
M
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: garui

quote:

Orijinalden alıntı: mertov

Burda da önündeler. Şimdi ++ önce olunca sayıları artırıp öyle işleme girmesi gerekmiyor mu? Ben ikisini de yazdırdım ikisi de aynı şeyi yazıyor

For için farketmez. Bu assignment işlemleri sırasında önem taşır. Birde performans farkını unutmamak lazım tabi. ++i daha performanslıdır diyebiliriz doğru kullanırsan.

#include <stdio.h> 

int main()
{

int i=5,k=0;

k=++i;
printf("k : %d, i : %d\n",k,i);

k=i++;
printf("k : %d, i : %d\n",k,i);

k=(++i);
printf("k : %d, i : %d\n",k,i);

k=(i++);
printf("k : %d, i : %d\n",k,i);
return 0;
}


 
k : 6, i : 6
k : 6, i : 7
k : 8, i : 8
k : 8, i : 9






Çok açıklayıcı bir örnek teşekkürler


Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: strahd_von_zarovich

quote:

Orijinalden alıntı: garui

quote:

Orijinalden alıntı: strahd_von_zarovich

2.kez sorucam ama aşağıda neyin yazdırılabileceği bilinebilir mi? İlk 2 si tamam sadece 3.printf önemli

int i;
float b=8.1,c=0.7;

i=b/c;
printf("%d\n",i);
c=c*c;
printf("%f\n",c);
i=i+b;
printf("%f\n",i);

Yine mi

11
0.490000
0.490000

Yani 19 değil. Yine yanlış bir printf denemesi.


printf("%d\n",i); //olursa 19
printf("%f\n",(float)i); // olursa 19.000000

printf("%f\n",i); // olursa 0.490000 -> Direk böyle kullanırsan diğerlerini print etmezsen başka bi değer çıkacaktır.
Koddaki ilk iki printf silinir ise printf("%f\n",i); // 2.168831



In function 'int main()':
Line 10: warning: converting to 'int' from 'float'
Line 14: warning: converting to 'int' from 'float'



Hoca bugün sınavda sordu da , ilk olarak bilinemez yazdım , bilinemezi nasıl gösteriyim diye sorunca orada öyle bir şey yok dedi bu sefer de 19.000000 yazdım , o da olmadı anlaşılan. 0.490000 yazmak hiç aklıma gelmezdi, nedenini de çözebilmiş değilim.

Merak etme senin cevabın doğru görünüyor. Yani hocanın istediği cevap 19.000000 olarak görünüyor. Ama o bir kodun içine koyulur compile edilirse daha önceden gösterdeiğimiz gibi abuk subuk şeyler çıkıcak. Hocan bu konudaki hatasının farkında değil. Böyle şeyler çıktığını farketse sormazdı gibime geliyor.


Şimdi

int i;
float b=8.1,c=0.7;

i=b/c;
printf("%d\n",i);
c=c*c;
printf("%f\n",b); // Burada c yerine b bastırıyoruz.
i=i+b;
printf("%f\n",i); //Şimdi sonuç 8.099998 çıktı compile sonrası.

Bunu ezberlemenizi bekliyor olduğunu düşünmüyorum. Sadece explicit casting kullanması gerektiğini bilmiyor veya bufferda float sonrası integer değeri basarsanız bir önceki floatun buffer değeri ekrana basılır gibi bir kural var benim haberim yok. (Kod çıktısı böyle bir sonuç veriyorda :) )
Benim düşüncem, o kodun printf("%f\n",(float)i); //şeklinde olması lazım veya printf("%d\n",i);

Ayrıca, iyi bunu sormamış :) Gerçi ödev gibi sormuştu.

int i = 2.1f/0.3f;
printf("%d\n",i); //6
i = 2.1/0.3;
printf("%d\n",i); //7
float a=2.1,b=0.3;
i=a/b;
printf("%d\n",i); //6

Bu farkdan da haberi yok.





< Bu mesaj bu kişi tarafından değiştirildi garui -- 20 Kasım 2012; 0:52:53 >
Bu mesaja 1 cevap geldi.
S
13 yıl
Binbaşı

quote:

Orijinalden alıntı: garui

Teşekkürler hocam , bakalım ne diyecek merak ediyorum.



G
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: mertov
Çok açıklayıcı bir örnek teşekkürler

Rica ederim


Bu mesaja 1 cevap geldi.
M
13 yıl
Yüzbaşı

Ortama biraz heyecan katıp, biraz da biz soralım mı? Belki arkadaşlar da merak edip çözme gayreti içerisine düşerler

Çözüm verilmediği takdirde, bir gün sonra ben veririm. Daha çok örnek olmuş olur arayanlar için.


Soru : Kesir sadeleştirme. Kullanıcının gireceği x/y değerini eğer sadeleşebiliyorsa sadeleştirilmiş haliyle ekrana yazan, sadeleşmiyorsa "Girdiğiniz oran en sade halidir." yazan program yazınız.

Ek: x,y tamsayı olsun.





< Bu mesaj bu kişi tarafından değiştirildi MrOwl -- 20 Kasım 2012; 22:27:22 >
Bu mesaja 1 cevap geldi.
M
13 yıl
Yüzbaşı

Beyler burda nerde yanlış var?

#include<stdio.h> 
#include<conio.h>
#include<math.h>
int main (void)
{
int x,y;
printf("x sayisini giriniz: ");
scanf("%d",&x);
printf("y sayisini giriniz: ");
scanf("%d",&y);
printf("x üzeri y = %d",pow(x.y));
getch();
return(0);
}


Bu mesaja 1 cevap geldi.
M
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: mertov

Beyler burda nerde yanlış var?

#include<stdio.h> 
#include<conio.h>
#include<math.h>
int main (void)
{
int x,y;
printf("x sayisini giriniz: ");
scanf("%d",&x);
printf("y sayisini giriniz: ");
scanf("%d",&y);
printf("x üzeri y = %d",pow(x.y));
getch();
return(0);
}


printf("x üzeri y = %d",pow(x.y));

x.y değil x,y olacak.


Bu mesaja 1 cevap geldi.
M
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: ANIL_00

Arkadaşlar bana bu soru hakkında yardımcı olabilir misiniz? En azından C# kodları gerekli, yardımınız için teşekkür ederim.
< Resime gitmek için tıklayın >

Yardımcı olabilirim. Siz bir yazmaya başlayın, takıldığınız noktada yardım ederiz.