Gönderen Konu: dev c++ 5.11 scanf'den sonra alt satırı geçme  (Okunma sayısı 3147 defa)

Çevrimdışı okko

  • Üye
  • İleti: 112
    • Profili Görüntüle
dev c++ 5.11 scanf'den sonra alt satırı geçme
« : 29 Tem 2015, 23:29:51 Çrş »
Kod: [Seç]
#include<stdio.h>

double calculateCharges ( double time1 );

int main( void )
{
double time;
int i;
double TotalCharges=0, TotalTime=0;

printf("Car\tHours\tCharge\t\n");

for(i=1;i<=3;i++)   //3 araba olduğu için i-->3 e gidiyor
{
printf("%d\t",i);
scanf("%lf", &time);    //++++++++
printf("\t");

TotalTime+=time;

printf("%lf",calculateCharges(time) ); // fonksiyon park hesabını hesaplar

TotalCharges+=calculateCharges(time);  // o gün i.in toplam hesap için

puts("");

}
}
double calculateCharges ( double time1 )
{
double totalC=0;

if( time1<=3)       // 3saatte kadar 2 lira
{
totalC+=2.00;

}

else if(time1>3)      // 3 saati geçen her saat için 0,5 lira
{
totalC+=2+(time1-3)*0.5;
}

return totalC;
}

Merhabalar;
   Ben Dev C++ 5.11 ile bu kodları derlediğimde çıktı olarak Car,Hours Ve Charges için girilen değerlerin uygun yerde olmasını istiyorum fakat kodda // ++++++ olarak işaretlediğim scanf() kendinden sonraki printf() fonksiyonunu alt satıra yazdırıyor.Charge değerleri ilgili başlık altında gözükmüyor.Bunu nasıl düzeltebilirim?

« Son Düzenleme: 29 Tem 2015, 23:32:13 Çrş Gönderen: okko »
Kayalari delen damlalarin büyüklügü degil, sürekliligidir.

Çevrimdışı zafer11

  • Üye
  • İleti: 28
    • Profili Görüntüle
Ynt: dev c++ 5.11 scanf'den sonra alt satırı geçme
« Yanıtla #1 : 30 Tem 2015, 11:42:51 Prş »
merhaba,
İlginç bir ihtiyaç oluşmuş. scanf de alt satır geçme nasıl engellenir veya alt satıra geçtikten sonra yeniden üst satır nasıl geçilir bilmiyorum.(internette de bulamadım)
Ancak karakter dizileri konusu kullanılarak yapılabilir. ekrandaal() fonksiyonu yazdım. ekrana sayılar girildikten sonra ESC tuşuna basılırsa sayıları alıyor.(Enter a basılmamış oluyor ve alt satıra geçmiyor).
Kod: [Seç]
#include<stdio.h>
#include<stdlib.h> //atof() fonksiyonunu içeriyor
#include<conio.h> //getche fonsiyonunu içerir.
float ekrandanal();
double calculateCharges ( double time1 );

int main( void )
{
float time;
int i;
double TotalCharges=0, TotalTime=0;

printf("Car\tHours\tCharge\t\n");

for(i=1;i<=3;i++)   //3 araba olduğu için i-->3 e gidiyor
{
printf("%d\t",i);
time=ekrandanal();


   printf("\b \t");//bir geri gidiyor sonra boşluk yazıyor(böylelikle ESC nin ekranda bıraktığı izi(karakteri) siliyor, sonra TAB yazıyor

TotalTime+=time;

printf("%f",calculateCharges(time) ); // fonksiyon park hesabını hesaplar

TotalCharges+=calculateCharges(time);  // o gün i.in toplam hesap için

puts("");

}
}
double calculateCharges ( double time1 )
{
double totalC=0;

if( time1<=3)       // 3saatte kadar 2 lira
{
totalC+=2.00;

}

else if(time1>3)      // 3 saati geçen her saat için 0,5 lira
{
totalC+=2+(time1-3)*0.5;
}

return totalC;
}
float ekrandanal()
{
char c , str[10];
int i=0;
while((c=getche())!=27)//getche fonksiyonu karakteri tuşa basılır basılmaz alıyor aynı zamanda ekranda da gösteriyor(diğer bir fonksiyon getch() ise aynı işi yapıp karakteri ekranda göstermiyor)
//getche ile alınan karakter c de tutuluyor ve str dizisine aktarılıyor. girilen karakter ESC (ascii kodu:27 ) basılana kadar almaya devam ediyor.(ESC yerine başka bir tuşta olabilir, asci kodunu yazarak)
{
str[i]=c;
i++;
}
str[i]='\0';  //str char dizisi null karakterle sonlandırılıyor.

return atof(str);  //atof() fonksiyonu char dizisini (string i) float a çeviriyor.(stdlib.h içeriyor bu fonksiyonu)
}