şeklinde olan programı For döngüsüyle nasıl yazabilirim?
Arkadaşlar for döngüsü ile yapmışlar geç kaldım ben Bende varsayilan argüman'lar ile yaptım. Eğer class-yapici fonksiyon biliyorsan incele yada bir kenara kaydet, ilerde ihtiyacın olur
#include <iostream> #include <string> using namespace std;
Arkadaşlar buraya böyle bir konu açma ihtiyacı duydum. C/C++ da takıldığınız yerler olursa bu konu altında paylaşın. Ben ve diğer arkadaşlar elimizden geldikçe yardımcı olalım.
#include <stdio.h>
int main() { char dizi[100]; void ters(const char * const);
Arkadaşlar buraya böyle bir konu açma ihtiyacı duydum. C/C++ da takıldığınız yerler olursa bu konu altında paylaşın. Ben ve diğer arkadaşlar elimizden geldikçe yardımcı olalım.
#include <stdio.h>
int main() { char dizi[100]; void ters(const char * const);
Program girilen metni tersten yazdırıyor.Anlamadığım üç şey var:
1)Prototipi neden main içine yazdık? Deitel den çalışıyorum diğer kodlarda prototip hep önlemcilerden sonra geliyor.
2)PrototiptEki ikinci const u anlayamadım.
3)ters fonksiyonunda else kısmını anlamadım. Orda ters Ve putchar ne iş yapar ?
Şimdiden çok saol.
C bilmiyorum. C++ biliyorum. Ama elimden geldikçe cevap vereceğim. Umarım C konusunda uzman arkadaşlarda sorununa el atarlar
1- Prototipi istersen main dışına yaz. Farkı olmayacaktır.
2- Sanırım 2.const'taki *sPtr 'yi anlayamadın. Onun için internetten bir örnek buldum. Kısa açıklamalar yaptım. İncele, *sPtr'nin ne yaptığı konusunda kafandaki soru işaretleri kalkacatır.
#include <iostream> // input-output kütüphanem #include <conio.h> // getch(); için
main(){
char c[] = "Hello boy"; // c karakterine Hello boy atadık. char *sPtr = c; // c karakterini, *sPtr 'ye atadık. for ( ; *sPtr != 'y'; sPtr++ ) //*sPtr ile programı çalıştırınca sende göreceksin, y harfini yazdırmayacak cout << *sPtr; // döngü sayesinde hello bo yazdırdık.
getch(); // programın kapanmaması için. return 0;
}
3-Else bölüümnde ters() yazan yer, bizim önceden belirttiğimiz fonksiyonumuz. sPtr'ye 1 değerini gönderiyoruz burada. Putchar'a ise şöyle bir örnek vereyim : bu kod, ABCD.......Z alfabeyi yazdıracaktır.
int main () { char c; for (c = 'A' ; c <= 'Z' ; c++) { putchar (c); } return 0; }
NOT: Eğer yazıyı tersten yazdırma gibi bir program istiyorsan, basit bir for döngüsü ilede rahatlıkla yapabilirsin.
Prototipi istersen main dışına yaz. Farkı olmayacaktır.
Elbette farkı olacak. Prototipi main() dışında (yani global olarak) tanımlarsan o fonksiyonu istediğin fonksiyon içinde kullanabilirsin. Ancak main() içinde tanımlarsan fonksiyon lokalde tanımlı olduğu için yalnız main()'de kullanabilirsin, hiçbir fonksiyon içinde o fonksiyonu kullanamazsın.
Prototipi istersen main dışına yaz. Farkı olmayacaktır.
Elbette farkı olacak. Prototipi main() dışında (yani global olarak) tanımlarsan o fonksiyonu istediğin fonksiyon içinde kullanabilirsin. Ancak main() içinde tanımlarsan fonksiyon lokalde tanımlı olduğu için yalnız main()'de kullanabilirsin, hiçbir fonksiyon içinde o fonksiyonu kullanamazsın.
Arkadaşın verdiği programın çalışmasında bir hata olmaz. Onu kast etmek istedim.. Yoksa tabii ki dediğinde haklısın.
cok tesekkur ederim arkadaslar cok sag olun. bir sorum daha olacak : #include<stdio.h> #include<conio.h>
int main (void) { int sayi,m=5,j; sayi=0; while(m<=8) { j=10-m; printf('"%d"j);
while(j%3) //anlayamadim bunun sonucu 1 oldugu zaman mi altta kalani yapiyor acaba?? { if(m/2!=0) sayi+=2; j-=2; } ++m; } printf("%3d%3d\n",m,j); getch (); return 0; }
burda da sunu anlamadim cikti soyle cikiyor (5 4 3 2 9 0) su sondaki sifir yerine 2 olmasi gerekmiyor mu j nin ne ara sifirlandi ki?
arkadaslar bu programda ciktilari ben cok farkli buldum 9 17 33 65 129 43 85 diye buldum ama oyle degil cevap. anlamiyorum bu nasil bir olaydir. ne olur yardim edin cikti su sekilde 10 20 35 65 130 45 85
hatta soyle anlatayim derdimi. ilk for dongusunde i=1 den basladik. k=4 oluyor. if kosulu saglanmadigi icin else blogundaki islemi yapiyor. oradan k=k*2 den k nin yeni degeri 8 oldu mesela. derken j=k demis bu durumda j 9 oldu. ve son olarak j yi bir arttir demis ve printf le yaz demis. e bu durumda j 9 oluyor nasil 10 cikiyor ekrana. ??
arkadaslar bu programda ciktilari ben cok farkli buldum 9 17 33 65 129 43 85 diye buldum ama oyle degil cevap. anlamiyorum bu nasil bir olaydir. ne olur yardim edin cikti su sekilde 10 20 35 65 130 45 85
hatta soyle anlatayim derdimi. ilk for dongusunde i=1 den basladik. k=4 oluyor. if kosulu saglanmadigi icin else blogundaki islemi yapiyor. oradan k=k*2 den k nin yeni degeri 8 oldu mesela. derken j=k demis bu durumda j 9 oldu. ve son olarak j yi bir arttir demis ve printf le yaz demis. e bu durumda j 9 oluyor nasil 10 cikiyor ekrana. ??
while döngüsünde 5 e göre modunu alıyor ilk while a geldiğinde 9 oluyor sonra tekrar while a giriyor 9 un mod 5 i 4 olduğu için bir daha while a giriyor ve 10 yapıyor j yi. Burdan devam edersen sorunu sende çözersin herhalde.
Arkadaşlar for döngüsü ile yapmışlar geç kaldım ben
Bende yok malesef olsa yollardım.
Program girilen metni tersten yazdırıyor.Anlamadığım üç şey var:
1)Prototipi neden main içine yazdık? Deitel den çalışıyorum diğer kodlarda prototip hep önlemcilerden sonra geliyor.
2)PrototiptEki ikinci const u anlayamadım.
3)ters fonksiyonunda else kısmını anlamadım. Orda ters Ve putchar ne iş yapar ?
Şimdiden çok saol.
Bu mesaja 1 cevap geldi. Cevapları Gizle
C bilmiyorum. C++ biliyorum. Ama elimden geldikçe cevap vereceğim. Umarım C konusunda uzman arkadaşlarda sorununa el atarlar
1- Prototipi istersen main dışına yaz. Farkı olmayacaktır.
2- Sanırım 2.const'taki *sPtr 'yi anlayamadın. Onun için internetten bir örnek buldum. Kısa açıklamalar yaptım. İncele, *sPtr'nin ne yaptığı konusunda kafandaki soru işaretleri kalkacatır.
3-Else bölüümnde ters() yazan yer, bizim önceden belirttiğimiz fonksiyonumuz. sPtr'ye 1 değerini gönderiyoruz burada.
Putchar'a ise şöyle bir örnek vereyim : bu kod, ABCD.......Z alfabeyi yazdıracaktır.
NOT: Eğer yazıyı tersten yazdırma gibi bir program istiyorsan, basit bir for döngüsü ilede rahatlıkla yapabilirsin.
Bu mesaja 1 cevap geldi. Cevapları Gizle
Elbette farkı olacak. Prototipi main() dışında (yani global olarak) tanımlarsan o fonksiyonu istediğin fonksiyon içinde kullanabilirsin. Ancak main() içinde tanımlarsan fonksiyon lokalde tanımlı olduğu için yalnız main()'de kullanabilirsin, hiçbir fonksiyon içinde o fonksiyonu kullanamazsın.
< Bu mesaj bu kişi tarafından değiştirildi keftar -- 2 Ağustos 2012; 9:14:26 >
Bu mesaja 1 cevap geldi. Cevapları Gizle
Arkadaşın verdiği programın çalışmasında bir hata olmaz. Onu kast etmek istedim.. Yoksa tabii ki dediğinde haklısın.
< Bu mesaj bu kişi tarafından değiştirildi £XE -- 2 Ağustos 2012; 11:50:42 >
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 1 cevap geldi. Cevapları Gizle
Rica ederim. Sorularını bekliyorum
Bu mesaja 1 cevap geldi. Cevapları Gizle
#include<stdio.h>
#include<conio.h>
int main (void)
{
int a=2;
int bayrak=1;
while (bayrak)
{
a*=2;
printf("%d %d\n",a ,bayrak);
if(a>100)
bayrak=0;
}
getch();
return 0;
}
simdi ciktisi soyle oluyor
4 1
8 1
16 1
32 1
64 1
128 1
128 0 olmasi gerekmiyor mu sonuncu da. cunku if (a>100) ise bayrak=o demis. bi aciklayan olursa sevinirim.
Bu mesaja 1 cevap geldi. Cevapları Gizle
en son 0 a eşitledikten sonra while'ın içine bir daha girmeyip direkt programı sonlandırıyor sorunun burda.
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 2 cevap geldi. Cevapları Gizle
While ın içindeki if i printf in üzerine yazarsan sorunun kalmaz
Bu mesaja 1 cevap geldi. Cevapları Gizle
#include<conio.h>
int main (void)
{
int k=1;
double son,ilk;
do{
printf("sayi gir:");
scanf("%lf",&son);
if(k==1)
ilk=son;
k++;
}
while (k<=5);
printf("ilk sayi=%0.2f\nson sayi=%0.2f",ilk,son);
getch();
return 0;
}
kodu aciklayabilir misnz arkadaslar.?
son degerleri sirasiyla 2.6 5.3 -12.8 3 6.6 girilecek.
bu eleman, ilk ve sonu kendisi nasil algiliyor?
< Bu mesaj bu kişi tarafından değiştirildi jely -- 4 Ağustos 2012; 1:31:08 >
Bu mesaja 1 cevap geldi. Cevapları Gizle
Rafsancani arkadaşında dediği gibi
if(a>100) {
bayrak=0;
}
bu şekilde yazabilirsin printf'in üzerine. printf'in altına yazdığın zaman if'in bir değeri kalmaz. program algılayamaz onu.
Bu mesaja 2 cevap geldi. Cevapları Gizle
bir sorum daha olacak :
#include<stdio.h>
#include<conio.h>
int main (void)
{
int sayi,m=5,j;
sayi=0;
while(m<=8)
{ j=10-m;
printf('"%d"j);
while(j%3) //anlayamadim bunun sonucu 1 oldugu zaman mi altta kalani yapiyor acaba??
{ if(m/2!=0)
sayi+=2;
j-=2;
}
++m;
}
printf("%3d%3d\n",m,j);
getch ();
return 0;
}
burda da sunu anlamadim cikti soyle cikiyor (5 4 3 2 9 0) su sondaki sifir yerine 2 olmasi gerekmiyor mu j nin ne ara sifirlandi ki?
< Bu mesaj bu kişi tarafından değiştirildi jely -- 4 Ağustos 2012; 13:44:55 >
Bu mesaja 2 cevap geldi. Cevapları Gizle
#include<conio.h>
int main (void)
{
int i,j,k=4;
for(i=1;i<8;i++)
{
if(k>=100)
k=k/3;
else
k=k*2;
j=k;
while(j%5>0)
j++;
printf("%5d\n",j);
}
getch();
return 0;
}
arkadaslar bu programda ciktilari ben cok farkli buldum 9 17 33 65 129 43 85 diye buldum ama oyle degil cevap.
anlamiyorum bu nasil bir olaydir. ne olur yardim edin cikti su sekilde 10 20 35 65 130 45 85
hatta soyle anlatayim derdimi. ilk for dongusunde i=1 den basladik. k=4 oluyor. if kosulu saglanmadigi icin else blogundaki islemi yapiyor. oradan k=k*2 den k nin yeni degeri 8 oldu mesela.
derken j=k demis bu durumda j 9 oldu. ve son olarak j yi bir arttir demis ve printf le yaz demis. e bu durumda j 9 oluyor nasil 10 cikiyor ekrana. ??
< Bu mesaj bu kişi tarafından değiştirildi jely -- 4 Ağustos 2012; 4:17:44 >
Bu mesaja 1 cevap geldi. Cevapları Gizle
while döngüsünde 5 e göre modunu alıyor ilk while a geldiğinde 9 oluyor sonra tekrar while a giriyor 9 un mod 5 i 4 olduğu için bir daha while a giriyor ve 10 yapıyor j yi. Burdan devam edersen sorunu sende çözersin herhalde.
Bu mesaja 120 cevap geldi. Cevapları Gizle