İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C++ kodlama hatası

Whisper190704.04.20128 cevap1.754 görüntüleme
2009'den beri4.512 mesaj
#1
Arkadaşlar ufak bir konuda yardımlarınıza ihtiyacım var.

Elimizde şöyle bir kod var :

#include <stdio.h>
#include <stdlib.h>
int gun;
main()
{
printf("Ayin kacinci gunundeyiz?\n");
scanf("%d",&gun);

switch (gun)
{
case 1:
printf("Pazartesi\n",gun);
break;
case 2:
printf("Sali\n",gun);
break;
case 3:
printf("Carsamba\n",gun);
break;
case 4:
printf("Persembe\n",gun);
break;
case 5:
printf("Cuma\n",gun);
break;
case 6:
printf("Cumartesi\n",gun);
break;
case 7:
printf("Pazar\n",gun);
break;

default:
printf("1-7 arasi bir deger giriniz\n",gun);
break;
}
system ("pause");
return 0;
}

Basitçe bir rakam girmemizi ve girdiğimiz rakamın ayın hangi gününe denk geldiğini yazdırıyor. (Ayın 1 ini Pazartesi baz alarak).

Buraya kadar herşey güzel. Sorunum devamını getirmek istediğimde yani ayın 1 i pazartesi tamam ama bunu 30 güne yayarak, ayın 8 ininde pazartesi, ayın 15 ininde pazartesi olduğunu yazdırmak istiyorum. Sadece 1 ila 31 arasında rakamlar girilebilecek ve farklı bir şey girildiğinde 1-31 arası bir değer giriniz şeklinde mesaj verecek.

Şöyle bir deneme yaptım ancak istediğim sonucu alamadım (Pek mantıklı gelmedi daha kolay bir yolu olmalı sanırım) :

#include <stdio.h>
#include <stdlib.h>
int gun,hafta;
main()
{
basla:
printf("Ayin kacinci gunundeyiz?\n");
scanf("%d",&gun);
if (gun >31)
{
printf("1-31 arasi bir deger giriniz\n",gun);
goto basla;
}
hafta=gun/7;
gun=gun-(hafta*7) ;
switch (gun)
{
case 1:
printf("Bugun gunlerden Pazartesi\n",gun);
break;
case 2:
printf("Bugun gunlerden Sali\n",gun);
break;
case 3:
printf("Bugun gunlerden Carsamba\n",gun);
break;
case 4:
printf("Bugun gunlerden Persembe\n",gun);
break;
case 5:
printf("Bugun gunlerden Cuma\n",gun);
break;
case 6:
printf("Bugun gunlerden Cumartesi\n",gun);
break;
case 7:
printf("Bugun gunlerden Pazar\n",gun);
break;
}
system ("pause");
return 0;
}

Yardımlarınızı bekliyorum saygılar ;)
Cevaplar
2010'den beri264 mesaj
#2
Girilen sayının mod 7 sini aldığında sorunun çözülecektir, yukarı da kullandığın switchi kullanabilirsin kolaylıkla..
2008'den beri12 bin mesaj
#3
mod alarak yaparsan bu iş olur gibime geliyor.
Whisper1907 Konuyu açan
2009'den beri4.512 mesaj
#4
Aritmetik işlem ile yapmam gerektiğini söylemeyi unutmuşum :)
Yöntemim sanki doğruymuş gibi geldi test edince.
sadece
if (gun >31)
satırını
if (gun >31 | gun <1) şeklinde yazdım. Dolayısıyla sadece 1 ile 31 arası girilebilir oldu.
Daha pratiği de mod 7 sini alarak olur o halde diyor ve teşekkür ediyorum..
2012'den beri250 mesaj
#5
Şöyle:

#include <stdio.h>
#include <stdlib.h>

int gun;

main()
{
    basla:

    printf("Ayin kacinci gunundeyiz?\n");
    scanf("%d",&gun);

    if (gun >31)
    {
        printf("1-31 arasi bir deger giriniz\n"); // <---- ,gun fazlalık veya %d eksik
        goto basla;
    }

    // % işareti (Modulo)
    // x'in 7'ye bölümünden kalanı bulmamızı sağlar.

    switch (gun % 7)
    {
        case 1:
        printf("Bugun gunlerden Pazartesi\n",gun);
        break;

        case 2:
        printf("Bugun gunlerden Sali\n",gun);
        break;

        case 3:
        printf("Bugun gunlerden Carsamba\n",gun);
        break;

        case 4:
        printf("Bugun gunlerden Persembe\n",gun);
        break;

        case 5:
        printf("Bugun gunlerden Cuma\n",gun);
        break;

        case 6:
        printf("Bugun gunlerden Cumartesi\n",gun);
        break; 

        case 7:
        printf("Bugun gunlerden Pazar\n",gun);
        break;
    }     

    system ("pause");
    return 0;
}


Pardon. :)
Whisper1907 Konuyu açan
2009'den beri4.512 mesaj
#6
Teşekkürler kizanlik :)
2011'den beri597 mesaj
#7
C++ programcısı neden özelleştirilmiş, özenle geliştirilmiş, itinalı kalıtımlarla etkinleştirilmiş temel akış sınıflarını kullanmaz ki ? :D

Valla bi an boşluğuma geldi az daha verilmiş cevaba bende bişeyler karalicaktım, ama ben sorunu okurken kafamda canlanandan farklı bu verilen cevap. :D
Whisper1907 Konuyu açan
2009'den beri4.512 mesaj
#8
Daha emekleme sürecindeyim kendimizi de özenle geliştireceğiz inşallah :)
2007'den beri2.589 mesaj
#9
goto'yu kaldırmak lazım. goto oldukça pahalı bir işlemdir.

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.