Sayısı Belli Olmayan İnput Almak ??
-
Ödev için 4 fonksiyon yapmam gerekiyor bu fonksiyonların çağrılması için de kullancının bilgi vermesi gerekiyor.
fonksiyonlardan üçüoperator sayı
şeklinde çağrılıyor. Bir tanesi ise
operator sayı sayı
şeklinde. bu inputu nasıl alabilirim. yani hepsini tek satırda verecekler arada boşlukla. dolayısıyla hangi şu operatorse 2 say al diyemiyorum. aklıma da başka birşey gelmiyor.
-
Girilen sayıları bir Array ile dizilere atmak çözüm olabilir...
-
-
SerYolcu bunu yazdı:
-----------------------------Girilen sayıları bir Array ile dizilere atmak çözüm olabilir...
-----------------------------Hocam düşünemedim şimdi :S
Eğer müsaitsen scanf ile bir yazabilir misin? -
Şimdi sonsuz döngüyle alırsın belirsiz girişi ama operator kısmını anlamadım mesela
for(;;)
{
scanf("%d",&a);
if(a==0)
break;
}
Şeklinde ama operator kısmını biraz daha açarsan pek bişey anlayamadım çünkü :)
topla 2 3
kareal 4
gibi mi ?
-
SinusX bunu yazdı:
-----------------------------Şimdi sonsuz döngüyle alırsın belirsiz girişi ama operator kısmını anlamadım mesela
for(;;)
{
scanf("%d",&a);
if(a==0)
break;
}
Şeklinde ama operator kısmını biraz daha açarsan pek bişey anlayamadım çünkü :)
topla 2 3
kareal 4
gibi mi ?
-----------------------------tam olarak aynısı hocam
4 operator var A,I,P,S
biri mantıksal And yapıyor inputlar üzerinde A 1.sayi 2.sayi şeklinde input var
Diğerleri Print Bitwise shift ve binary inverse operatorleri bunları kendimiz tanımlayarak yapmamız ya da uzun bi inputta gezerek hazır tanımlıları tektek uygulamamız isteniyor. Dolayısıyla ben de fonksiyon yaptım hepsini. A 1. 2. deyince and fonksiyonunu P 1. deyince print fonksiyonunu I 1. deyince inverse fonksiyonunu çağıracağım ama dediğim gibi hangi operatoru vereceği belli olmadığı için scanf'le hepsini ayrı değişkenlere alamıyorum
-
Hesap makinelerindeki gibi mi? Yani sen bir işlem yapıyorsun sonra adam bunla şunu topla diyor sonra birde çarpma ekliyor gibimi?
Tek bir fonksiyona sonsuz input nasıl yapılır bilmem ama overloadin ile atıyorum 1taneden 100taneye kadar input girilmesini sağlayabilirsin ki aynı fonksiyonu 100defa yazmak işkence :D vardır kısa bi yolu araştır...
Eğer istediğin bankamatiklerdeki gibi "başka işlem yapacakmısınız" gibi birşey ise o zamanda yapacağın tek şey do while :) bi çıkış karakteri belirleyeceksin,kullanıcıya sorcaksın devam etmek için e çıkmak için h ye basın diye adam h girmedikçe döngün işlem yapıcak bu kadar basit.
-
hocam örnek inputlar veriyorum ödev olduğu için ben ayarlayamıyorum inputlar şöyle.
P 110011
A 10110110101 0101011011010110001111
I 101101
S 101010101001011
görüldüğü gibi P I ve S işlemleri tek bir operand alıyor ama A işlem 2 operand alıyor.
Bu inputu bir şekilde işleyip P I S A ya göre farklı fonksiyon çağırmam ve yanındakileri argüman olarak vermem gerekiyor.
scanf("%s %s %s", operator, arguman1, arguman2 );
şeklinde alsam tek argümanlı işlemlerde ikinci argümanın girilmesini bekliyor.
Tek argüman istesem 2.yi alamıyorum.
bunu nasıl yapabilirim. -
Yazdığı pm'e cevaben yazıyorum, açıkçası nerde takıldığını anlamadım, soruyu yanlıs mı anladım acaba diye düşünüyorum.
Operatoru scanf ile alacaksın, operatore göre alınacak parametreyi belirleyeceksin.
scanf(operator)
if (operator)
islem 1
else if (operator)
islem 2
...
aşağıdaki kodu , topla 55 66, ya da kare 25 şeklinde girdi ile çalıştırabilirsin.
#include <stdio.h> #include <string.h> int main() { char op[16] = {0}; int s1, s2; scanf("%s", op); if (!strcmp("topla", op)) { scanf("%d%d", &s1, &s2); printf("Toplam : %d\n", s1 + s2); } else if (!strcmp("kare", op)) { scanf("%d",&s1); printf("Karesi : %d\n", s1 * s1); } else { printf("Hatali operator\n"); } return 0; }
-
Tugberk bunu yazdı:
-----------------------------Yazdığı pm'e cevaben yazıyorum, açıkçası nerde takıldığını anlamadım, soruyu yanlıs mı anladım acaba diye düşünüyorum.
Operatoru scanf ile alacaksın, operatore göre alınacak parametreyi belirleyeceksin.
scanf(operator)
if (operator)
islem 1
else if (operator)
islem 2
...
aşağıdaki kodu , topla 55 66, ya da kare 25 şeklinde girdi ile çalıştırabilirsin.
#include #include int main() { char op[16] = {0}; int s1, s2; scanf("%s", op); if (!strcmp("topla", op)) { scanf("%d%d", &s1, &s2); printf("Toplam : %d\n", s1 + s2); } else if (!strcmp("kare", op)) { scanf("%d",&s1); printf("Karesi : %d\n", s1 * s1); } else { printf("Hatali operator\n"); } return 0; }
-----------------------------Hocam önce operatoru alma şansım yok yani operator ve sayılar aynı satırda aralarında bir boşluk bırakılarak girilecek. Herşeyim tamam birtek inputu alamıyorum.
-
uLtRaLoVeR bunu yazdı:
-----------------------------Tugberk bunu yazdı:
-----------------------------Yazdığı pm'e cevaben yazıyorum, açıkçası nerde takıldığını anlamadım, soruyu yanlıs mı anladım acaba diye düşünüyorum.
Operatoru scanf ile alacaksın, operatore göre alınacak parametreyi belirleyeceksin.
scanf(operator)
if (operator)
islem 1
else if (operator)
islem 2
...
aşağıdaki kodu , topla 55 66, ya da kare 25 şeklinde girdi ile çalıştırabilirsin.
#include #include int main() { char op[16] = {0}; int s1, s2; scanf("%s", op); if (!strcmp("topla", op)) { scanf("%d%d", &s1, &s2); printf("Toplam : %d\n", s1 + s2); } else if (!strcmp("kare", op)) { scanf("%d",&s1); printf("Karesi : %d\n", s1 * s1); } else { printf("Hatali operator\n"); } return 0; }
-----------------------------Hocam önce operatoru alma şansım yok yani operator ve sayılar aynı satırda aralarında bir boşluk bırakılarak girilecek. Herşeyim tamam birtek inputu alamıyorum.
-----------------------------hoca zaten aynı satırda alıyorsun bir deneseydin programı