-
بازم مشكل در كامپايل
کد:
#include <stdio.h>
#include <stdlib.h>
int a,b;
char c,d;
int main()
{
while(1)
{
puts("enter 2 num !!!");
scanf("%d%c%d",&a,&c,&b);
switch (c)
{
case "*":
{
printf("%d * %d = %d",a,b,a*b);
break;
}
case "/":
{
printf("%d / %d = %d",a,b,a/b);
break;
}
case "+":
{
printf("%d + %d = %d",a,b,a+b);
break;
}
case "-":
{
printf("%d - %d = %d",a,b,a-b);
break;
}
case "%":
{
printf("%d % %d = %d",a,b,a%b);
break;
}
default : puts("enter correct function");
}
puts(" would u like to continue!! press y for yes or N for no");
scanf("%c",&d);
if (d=="n")
break;
}
return 0;
}
اين هم مشكل ها ش
کد:
--------------------Configuration: new 1 - Win32 Debug--------------------
Compiling...
new 1.c
C:\Documents and Settings\Ali\My Documents\project\new 1.c(14) : error C2051: case expression not constant
C:\Documents and Settings\Ali\My Documents\project\new 1.c(19) : error C2051: case expression not constant
C:\Documents and Settings\Ali\My Documents\project\new 1.c(24) : error C2051: case expression not constant
C:\Documents and Settings\Ali\My Documents\project\new 1.c(29) : error C2051: case expression not constant
C:\Documents and Settings\Ali\My Documents\project\new 1.c(34) : error C2051: case expression not constant
C:\Documents and Settings\Ali\My Documents\project\new 1.c(43) : warning C4047: '==' : 'int ' differs in levels of indirection from 'char [2]'
Error executing cl.exe.
new 1.obj - 5 error(s), 1 warning(s)
مشكل چيه ؟؟
-
سلام دوستان اگه اشتباه مي كنم بگيد
فكر كنم جلوي كيس ‘ב باشه نه "×" چون مقدار ثابت بايد قرار بگيره
-
سلام.
درسته و عبارت جلوي case بايد 'x' باشه نه "x".
چون اين عبارت"x" در حقيقت يه [2] const char هست.يعني يه آرايه با طول 2 كه به شكل زير تعريف شده.
کد:
char [0] = 'x';
char [1] = '\0';
عبارت جلوي case يه عدد ميتونه باشه. وقتي 'x' استفاده ميكنيد مقدار اسكي اين عبارت جلوي case قرارميگيره.
در ضمن بهتره به جاي اين كد:
کد:
puts(" would u like to continue!! press y for yes or N for no");
scanf("%c",&d);
if (d=="n")
break;
از اين كد استفاده بشه:
کد:
puts(" would u like to continue!! press y for yes or N for no");
d = getch();
if (d == 'n')
break;
و همين طور براي گرفتن operator بهتره از getch استفاده كنيد.
-
بله دوستان ممنون ايني كه گفتيد مد نظرم است و من اول اون رو گذاشته بودم ولي به تعداد هر ` يك error اضافه مي شه
شما مي تونيد خودتون هم كامپايل كنيد وببنيد من مجبورا اون رو عوض كردم ديدم error ها كمتر شدن تازه !!!!
مشكل از كجاست !!!!!
-
if (d=="n") //a رو هم بكنيد 'n' اگر Error هاي اين حالت رو هم بنويسيد راحت تر ميشه گفت!!
-
دوباره سلام.
برنامتون رو كامپايل كردم البنه با اجازتون 2 تا تغيير كوچيك در برنامه دادم. بدون مشكل اجرا ميشه.
کد:
#include <stdio.h>
#include <stdlib.h>
#include "conio.h"
int a,b;
char c,d;
int main()
{
while(1)
{
puts("enter 2 num !!!");
scanf("%d%d",&a,&b);
puts("Operator:");
c = getch();
switch (c)
{
case '*':
{
printf("%d * %d = %d",a,b,a*b);
break;
}
case '/':
{
printf("%d / %d = %d",a,b,a/b);
break;
}
case '+':
{
printf("%d + %d = %d",a,b,a+b);
break;
}
case '-':
{
printf("%d - %d = %d",a,b,a-b);
break;
}
case '%':
{
printf("%d % %d = %d",a,b,a%b);
break;
}
default : puts("enter correct function");
}
puts(" would u like to continue!! press y for yes or N for no");
d = getch();
if (d == 'n')
break;
}
return 0;
}
گرچه قبلا هم نوشته بودم كه بايد چه تغييراتي بديد.مثل اينكه توجهي نكرديد.
-
اقا نه كار شما درسته كاملا اين از خنگي خودم بود به جاي ' مي زدم ` اخه در كتابي كه خوندم شكلش ويرگول بود اما هيچ كدوم شبيه اين نبودن
درسته حق باشماست برنامه كامپايل و اجرا شد
ممنون از ياريتون