[Çözüldü] C Programında mantıksal hata nerede?

Başlatan mesute, 27 Aralık 2016 - 22:52:31

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

mesute

#include <stdio.h>

int main()
{
int sifre;
int x;

printf ("T.C Kimlik numaranızı giriniz\n");
scanf ("%d",&x);

if (x==44)
{
printf("Sn ******* Hoşgeldiniz\n");
printf ("Lütfen şifrenizi giriniz\n");
scanf("%d",&sifre);


while (sifre==2134)
{
    printf (" Bakiyenizi öğrenmek için 1'e: \n");
printf("Şifre işlemleri için 2'ye basınız\n");
switch (x)
{
case '1' :
printf ("Hesabınızda 100 tl vardır\n");
break;
case '2' :
printf("Şu anda bu işlemi yapamıyoruz\n");
break;

}
}
}

printf ("Yanlış şifre girdiniz\n");

return 0;
}


Arkadaşlar kendimce böyle bir program yazayım dedim :). Basit ama şurada takıldım.
Herhangi bir derleme hatası yok ama tc yi 44 olarak girdiğimde if satırına girmeden direk atlıyor. Acaba bu mantıksal hata nedendir. Şimdiden teşekkür ediyorum. İyi akşamlar...

siberoloji

#1
#include <stdio.h>

int main()
{
     int sifre;
     int x;
     
    printf ("T.C Kimlik numaranızı giriniz\n");
    scanf ("%d",&x);
    /*
    *kontrol satırı
    * printf("Integer x = %d, Character x = %c",x,x);
    */
    if (x==44)
    {
        printf("Sn ******* Hoşgeldiniz\n");
        printf ("Lütfen şifrenizi giriniz\n");
        scanf("%d",&sifre);
       
        while (sifre==2134)
        {
        printf (" Bakiyenizi öğrenmek için 1'e: \n");
        printf("Şifre işlemleri için 2'ye basınız\n");
        scanf( "%d",&x ); /*Tuş girişi okuma*/
        switch (x)
        {
        case 1 :
        printf ("Hesabınızda 100 tl vardır\n");
        break;
        case 2 :
        printf("Şu anda bu işlemi yapamıyoruz\n");
        break;
       
    }
}
}

        printf ("Yanlış şifre girdiniz\n");
       
    return 0;
}


[eklenti yönetici tarafından silindi]

mesute

Çok teşekkürler. Yalnız hiçbir değişiklik göremedim ben. Biraz daha açıklarmısınız. Açıklama satırında yazdıklarınızı...

siberoloji


mesute

Çalışıyor herhangi bir derleme hatası yok. Yalnız if satırına geçmiyor ..

siberoloji

Nasıl geçmiyor?
Benim..Nerede, Ubuntu, Gcc, Nasıl ya, Derledim, geçiyor...
Dedi front-end develeoper backend developar a
:)

mesute

Reis ben Geany ile derledim. İlk printf satırında T.C yi giridikten sonra doğruda olsa yanlışda olsa "yanlış şifre girdiniz diyor. Akşam ekran çıktılarını atarım isterseniz...

siberoloji

Direk komut satırından gcc ile yapın bence.

mesute

Sorun çözüldü çok teşekkür ederim. :)
scanf( "%d",&x ); /*Tuş girişi okuma*/ bu satırda hata yapmışım . Yardımlarınız için sağolun.

Neof07

@siberoloji, o gifi nasıl yaptığınızı sorabilir miyim ? :D

siberoloji

Öncelikle aşağıdaki komutla byzanz-gui ve bağımlılıklarını yüklüyoruz.
sudo add-apt-repository ppa:fossfreedom/byzanz; sudo apt-get update && sudo apt-get install byzanz gdialog notify-osd
Sonralıkla aşağıdaki kodları kopyala yapıştırla bir metin dosyasına yerleştiriyoruz. Ben byzanzgui.sh ismiyle kaydettim.
#!/bin/bash

# AUTHOR:   (c) Rob W 2012, modified by MHC (http://askubuntu.com/users/81372/mhc)
# NAME:     GIFRecord 0.1
# DESCRIPTION:  A script to record GIF screencasts.
# LICENSE:  GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# DEPENDENCIES:   byzanz,gdialog,notify-send (install via sudo add-apt-repository ppa:fossfreedom/byzanz; sudo apt-get update && sudo apt-get install byzanz gdialog notify-osd)

# Time and date
TIME=$(date +"%Y-%m-%d_%H%M%S")

# Delay before starting
DELAY=10

# Standard screencast folder
FOLDER="$HOME/Pictures"

# Default recording duration
DEFDUR=10

# Sound notification to let one know when recording is about to start (and ends)
beep() {
    paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}

# Custom recording duration as set by user
USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1)

# Duration and output file
if [ $USERDUR -gt 0 ]; then
    D=$USERDUR
else
    D=$DEFDUR
fi

# Window geometry
XWININFO=$(xwininfo)
read X < <(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read Y < <(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read W < <(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read H < <(awk -F: '/Height/{print $2}' <<< "$XWININFO")

# Notify the user of recording time and delay
notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds."

#Actual recording
sleep $DELAY
beep
byzanz-record -c --verbose --delay=0 --duration=$D --x=$X --y=$Y --width=$W --height=$H "$FOLDER/GIFrecord_$TIME.gif"
beep

# Notify the user of end of recording.
notify-send "GIFRecorder" "Screencast saved to $FOLDER/GIFrecord_$TIME.gif"

son olarak,
chmod +x byzanzgui.sh

betiği çalıştırılabilir hale getiriyoruz.
Kaydedilen resim (gif) kullanıcı home klasörü resimler içerisine kaydedilir.
Yalnız betik, Linux u ingilizce kullananlar için yazıldığından /home/pictures klasörünü arar. /Home/Resimlerim olması için betiğin kodlarına bir göz gezdirin. Değişkenleri değiştirip kullanabilirsiniz.

Neof07

Dediğiniz ilk kodda

E: gdialog paketi bulunamadı

"Bu PPA'nin xenial destegi yok"
PPA eklenemiyor: '"Bu PPA'nin xenial destegi yok"' hataları alıyorum.

siberoloji

sudo apt-get install byzanz notify-osd
böyle deyebilirsiniz. Sonuca göre devam ederiz.

Neof07