C dilinde if kullanılan yazılım cevabı söylemiyor

Serush

Hectopat
Katılım
1 Şubat 2020
Mesajlar
2.582
Makaleler
1
Çözümler
16
Daha fazla  
Sistem Özellikleri
Ryzen 5 7600X, MSI PRO B650-P WIFI, * Sapphire Pulse ITX Radeon RX 570 8GB * Kingston DDR5 32GB(2x16GB) 5600MHz CL36 Fury Beast, Sharkoon SS-COOLZERO-750 750W, Arctic LIQUID FREEZER II 240, DeepCool CC560
Cinsiyet
Erkek
C dilini öğrenmek istiyorum o yüzden bir şeyler denemeye çalışıyorum kendimce. Mesela şu an int, char, float, double gibi değişkenleri girdiğim zaman bana onların kaç byte olduğunu söyleyen bir kod yazmayı deniyorum fakat ben int, char, float, double yazınca bana cevabını söylemiyor. İlla if kullanırken tek satır değişken mi girmem gerekiyor? Kod şu şekilde çalışıyor çünkü. 'int' yaptığımda çalışmıyor ya da 'double'.

1645652817375.png
 
C:
#include<stdio.h>

int main() {
    
    char x;
    
    printf("double veya int giriniz...\n");
    scanf("%s",&x);
    
    
    if(x== 'i') {
        printf("4 byte");
    }
    
    if(x == 'd') {
        printf("8 byte");
    }
    
    
    return 0;
}

Dediğinizi anladım ancak ben de tüm stringleri karşılaştırmayı henüz tam bilmiyorum. Bu yüzden baş harfleri şimdilik istediğiniz sonuç çıkıyor tam olarak yazsanız dahi. Bir çözüm değil ancak tek karakter kullanarak bu şekilde olur.
 
Sen scanf fonksiyonuna birden fazla karakter almak istemediğini söylüyorsun %c formatını kullanarak ve sana da başka karakterleri vermiyor. Koşul bloklarında da karakter kıyaslaması yapmışsın ama double veya int girildiği zaman cevabı vermesini istiyorsun. Kime göre neye göre bu cevapları verecek?
%c nin birden fazla karakter almadığını bilmiyordum hocam. Dediğim gibi öğrenmek için sordum zaten
Sorun sanirim int ve double degerlerinin zaten tanimli/anlamli bir girdi olmasi. If blogunun ustune a ve b degiskeni tanimlayip onlarin int ve double olarak yazilmasini sagla, if blogunudaki a ve b degerlerini kullan boyle cozulebilir belki.
Araştırıp deneyeyim hocam aklıma geldi ama yapamamıştım
C:
#include<stdio.h>

int main() {
   
    char x;
   
    printf("double veya int giriniz...\n");
    scanf("%s",&x);
   
   
    if(x== 'i') {
        printf("4 byte");
    }
   
    if(x == 'd') {
        printf("8 byte");
    }
   
   
    return 0;
}

Dediğinizi anladım ancak ben de tüm stringleri karşılaştırmayı henüz tam bilmiyorum. Bu yüzden baş harfleri şimdilik istediğiniz sonuç çıkıyor tam olarak yazsanız dahi. Bir çözüm değil ancak tek karakter kullanarak bu şekilde olur.
Sağ olun hocam
 
int degisken1;
double degisken2;

Scanf e de bu 2 sini yazın.
Bi If e degisken1, else if e degisken2 yazın.
1 değer girdiğimiz için 2 tane değişken atayamıyorum hocam
 
C'de girdi çıktı biraz sancılı. Tam bir string ihtiyacını karşılayan mekanizma yok, onun yerine "malloc() edilmiş char*" kullanılıyor. Bunları daha ileride öğreneceksin. Aşağıda kullandığım ve bilmediğin şeyleri aratman senin yararına.

Öte yandan diğerlerinin dediği çözümlerin hepsi yanlış, alakasız alakasız çözümler.

[CODE lang="c" title="uykum_var.c"]#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
char* str = (char*)malloc(100);
printf("Lutfen boyutuna bakmam istediginiz veri tipini girin artik ve ben de uyuyayim.\n");
scanf("%s",str);
if(!strcmp(str,"int")){
printf("%d",sizeof(int));
}
else{
printf("Henuz tanimli degil...\n");
}
free(str);
return 0;
}[/CODE]
 
C'de girdi çıktı biraz sancılı. Tam bir string ihtiyacını karşılayan mekanizma yok, onun yerine "malloc() edilmiş char*" kullanılıyor. Bunları daha ileride öğreneceksin. Aşağıda kullandığım ve bilmediğin şeyleri aratman senin yararına.

Öte yandan diğerlerinin dediği çözümlerin hepsi yanlış, alakasız alakasız çözümler.

[CODE lang="c" title="uykum_var.c"]#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
char* str = (char*)malloc(100);
printf("Lutfen boyutuna bakmam istediginiz veri tipini girin artik ve ben de uyuyayim.\n");
scanf("%s",str);
if(!strcmp(str,"int")){
printf("%d",sizeof(int));
}
else{
printf("Henuz tanimli degil...\n");
}
free(str);
return 0;
}[/CODE]
Hocam gözüm korktu baya bilmediğim şey var ama yardımlarınız için çok teşekkür ederim araştırıp kavramaya çalışacağım. Çok sağ olun.
 
C'de girdi çıktı biraz sancılı. Tam bir string ihtiyacını karşılayan mekanizma yok, onun yerine "malloc() edilmiş char*" kullanılıyor. Bunları daha ileride öğreneceksin. Aşağıda kullandığım ve bilmediğin şeyleri aratman senin yararına.

Öte yandan diğerlerinin dediği çözümlerin hepsi yanlış, alakasız alakasız çözümler.

[CODE lang="c" title="uykum_var.c"]#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
char* str = (char*)malloc(100);
printf("Lutfen boyutuna bakmam istediginiz veri tipini girin artik ve ben de uyuyayim.\n");
scanf("%s",str);
if(!strcmp(str,"int")){
printf("%d",sizeof(int));
}
else{
printf("Henuz tanimli degil...\n");
}
free(str);
return 0;
}[/CODE]
Menu eklese iyi olur.
C:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h> // check errors
#include<time.h>

    /* menu */
void AnaMenu(){
        printf("\nint boyutu hesaplamak icin, int yaziniz.\n");
        printf("float boyutu hesaplamak icin, float yaziniz.\n");
        printf("double boyutu hesaplamak icin, double yaziniz.\n");
        printf("karakter boyutu hesaplamak icin, char yaziniz.\n\n");
}

int main(int argc, char *argv[]) {
    
    //menu cagirma
    AnaMenu();
/*
 kod sadece integer değeri boyutunu gösterdiği için yetersiz kalmış
 fakat ekleme yapabiliriz...
 sizeof(float),sizeof(double),sizeof(char)....
*/
    
}
 

Geri
Yukarı