Konuyu görüntüle
IUCODERS FORUM > Programlama > C / C++ > c yardım( sos )
Yazar
iemre


avatar
Anadolu
Kayıt: 26.05.2007
21.08.2007-17:12 #26403
Arkadaşlar benim sorunum şu.Ekrandan bir sayı giriyorum ve bu sayıyı %s ile bir diziye atıyorum.Yani her rakam char cinsinden bir dizinin elemanlarını oluşturuyor.Ben bu char olan diziyi int türüne dönüştüremezmiyim.Bir de ekrandan değil de kodun içerisinde ki bir sayıyı ekrandan girmeden char olan bir diziye atayamazmıyım.Ben istiyorum ki sayının rakamları char cinsinden olan dizinin elemanlarını oluştursun.

Bir başka sorum da şu.Herhangi bir fonksiyondan iki adet değişkeni aynı anda return edebilirmiyim.Mesela ilk önce fonksiyon içerisinde bir sayı giriyorum ekrandan.Bunu döndürmek istiyorum ve de diyelim ki bazı işlemler yaptım aynı fonksiyon içerisinde ve de bu işlemin sonucunu döndürmek istiyorum.


Yardımcı olursanız sevinirim.





More than one
Yazar
onur


avatar
Two Story Town
Kayıt: 14.01.2006
21.08.2007-17:26 #26405
-C ve C++ bilgin cok iyi olmasa da sunlari hatirliyorum:

atoi ve itoa diye iki fonksiyon var char dan int e ve int ten char a conversion icin.string den int e ve intten string e de olabilir.

Bunlar ile mesela char dizisi uzerinde donerek char a filan convert edebilirsin her indis teki degeri.


-Ayni fonksiyonu kullanarak iki sekilde faydalanmak istiyorsan bir flag koyarsin ya da bir parametre gonderirsin.

func (int a , int condition) gibi

condition ile gonderdigin degere gore return edecegin seyi degistirirsin falan eger yapmak istedigin bu tarz bir sey se.

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=363151&SiteID=1

http://www.tek-tips.com/viewthread.cfm?qid=1088107&page=1

http://www.ozzu.com/ftopic1723.html








Yazar
adaniak


avatar

Kayıt: 13.01.2007
07.11.2007-02:51 #29931
Benim de bi sorum var...Password şeklinde (*****) değer atamsı nasıl yapılabilir benim düşündüğüm getchar ile sonsuz dögü ve girilen her karaktere * atama..
daha basit bi fikri olan varsa veya c#taki gibi password için seçenek var arkadaşım diyen varsa yardımcı olursa ...sa sa sa dancingdancingdancingdancingsevinirm...





Yazar
cengineer


avatar

Kayıt: 27.10.2006
10.11.2007-19:20 #30208
Arkadaşlar yeni konu açmamak için buraya yazdım...Problemim şu;çıkmak için c tuşuna bastığımda exit olayını gerçekleştirmiyor program çıldırttı benisilly

 
//rastgele seçilmiş sayılarla çarpma işlemi ...
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
int main()
{
int i=0,sayi1,sayi2,cevap;
char secim;
srand(time(NULL));

while(i<1)
{
sayi1=rand()%10;
sayi2=rand()%10;

printf("%d kere %d kac eder?",sayi1,sayi2);
scanf("%d",&cevap);

if(cevap == (sayi1*sayi2))
{
printf("TEBRIKLER, %d Dogru Cevap..",cevap);
}
else
{
printf("YANLIS , Cevap %d Olmaliydi",sayi1*sayi2);
}

printf("devam etmek icin d ye cikmak icin c bas");
scanf("%c",&secim);

if(secim == 'c')
exit(0);
else
getch();

system("cls");

}
return 0;
}






" Her arayan bulamayabilir ancak bulanlar arayanlardir..! " Imam-i Rabbâni




Yazar
serdr


avatar
Istanbul
Kayıt: 13.07.2006
10.11.2007-19:32 #30210
C de öyle bişiy var, secim icin 1 karakter scanf yaptığında bir önceki entera bastığını okuyor %c olayı. o nedenle %c %c yaparsan, enazından sorunu çözer.

scanf("%c%c",&secim*/<-öylesine/* , &secim);





Yazar
cantur


avatar
Rize
admin
Kayıt: 16.01.2006
10.11.2007-19:37 #30211
Tek karakter okuyacak isen scanf yerine getch() türevi fonksiyonları kullanmak daha mantıklı olacaktır.





Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
10.11.2007-19:37 #30212
Sondaki tercih için şöyle bir kod daha iyi olur:


		do {
			printf("devam etmek icin d ye cikmak icin c bas..."); 
			secim = getch();
			if(secim == 'd')
				break;
			else if(secim=='c')
				exit(0);
			else {
				printf("Hatalı giriş!"); 
			}
		} while(1);






Let`s make this world a better place to live !

Yazar
cengineer


avatar

Kayıt: 27.10.2006
10.11.2007-19:41 #30214
teşekürler





" Her arayan bulamayabilir ancak bulanlar arayanlardir..! " Imam-i Rabbâni




Yazar
adaniak


avatar

Kayıt: 13.01.2007
10.11.2007-19:43 #30215
Clairvoyant'ın dediği daha mantıklı dier türlü geri dönüş olayı yok..Sürekli fonksiyonun tekrar ediyor...
Daha sempatik bişey istiyorsan select case kullan
1 Çıkış
2 Devam dersin dancingcoffeepeacebu arada ilk yaptığında %c değil de %d deyip c yerine 99 yazarsan yine oluyor ama dediğim gibi fonksiyon hep devam ediyorpeace





Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
10.11.2007-19:49 #30216
Kodu değiştirdim, ilki pek iyi değildi. :D





Let`s make this world a better place to live !

Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
10.11.2007-22:09 #30228
clairvoyant yazdi
 
Sondaki tercih için şöyle bir kod daha iyi olur:


		do {
			printf("devam etmek icin d ye cikmak icin c bas..."); 
			secim = getch();
			if(secim == 'd')
				break;
			else if(secim=='c')
				exit(0);
			else {
				printf("Hatalı giriş!
"); 
			}
		} while(1);


Break, exit, goto kullanmak yasak. Sayısalda ödev yapanlar içindancing





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
nohead


avatar
Tristram
Kayıt: 26.08.2006
10.11.2007-22:30 #30234
wikipedia'daki switch -case örneği. beğendim kullanılışını da öğrendim böylece:)

switch(n) {
    case 0:
      printf  ("You typed zero.");
      break;

    case 3:
    case 5:
    case 7:
      printf  ("n is a prime number");
      break;

    case 2: printf("n is a prime number");
    case 4:
    case 6:
    case 8:
      printf  ("n is an even number");
      break;

    case 1:
    case 9:
      printf  ("n is a perfect square");
      break;

    case:
      printf  ("Only single-digit numbers are allowed");
    break;

}






"The will of the nation" is one of those expressions which have been most profusely abused by the wily and the despotic of every age."
Alexis de Tocqueville


¨


Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
10.11.2007-22:55 #30237
extreme yazdi
 
Break, exit, goto kullanmak yasak. Sayısalda ödev yapanlar içindancing

Birçok döngüde break kullanmak çok çok avantajlıdır. Kullanmasan bile aynı işi yapmak için bir flag kullanman gerekebilir. exit fonksiyonunu main içinde kullanmak tabii ki gereksiz, onun yerine return 0; gibi bir deyim kullanmak daha mantıklı. En güzeli main içinde return ifadesini en az sayıda (mümkünse 1 kez) kullanan bir algoritma kurmaktır. exit fonksiyonu alt fonksiyonlarun içinden uygulamayı sonlandırmak için kullanılır genelde. goto hakkında yorum yapmaya gerek yok, kısaca modası geçmiştir diyebiliriz. :)

Seni mi kıracam, buyur break ve exit'siz uygulama:

#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 
#include <time.h> 
int main() 
{ 
	int sayi1,sayi2,cevap,flag=0; 
	char secim; 
	srand(time(NULL)); 
	do { 
		sayi1=rand()%10; 
		sayi2=rand()%10; 

		printf("%d kere %d kac eder?\nCevap: ",sayi1,sayi2); 
		scanf("%d",&cevap); 

		if(cevap == (sayi1*sayi2)) { 
			printf("TEBRIKLER, %d Dogru Cevap..\n",cevap); 
		} 
		else { 
			printf("YANLIS , Cevap %d Olmaliydi\n",sayi1*sayi2); 
		}

		flag=0;
		do {
			printf("devam etmek icin d ye cikmak icin c bas..."); 
			secim = getch();
			if(secim == 'd' || secim=='c')
				flag=1;
			else {
				printf("Hatali giris!\n"); 
			}
		} while(flag==0);

		system("cls"); 
	}
	while(secim!='c');
	return 0; 
}



3 tane projem var bir de foruma kod yazıyorum, hiç uslanmayacam sanırım. angel





Let`s make this world a better place to live !

Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb