استادان گرامی من هزینه رو متقبل میشم اگر جوابهای ما را بدهید در چند پست بالایی برگه ها رو عکس گرفتم گذاشتم
Printable View
استادان گرامی من هزینه رو متقبل میشم اگر جوابهای ما را بدهید در چند پست بالایی برگه ها رو عکس گرفتم گذاشتم
سلام دوستان من میخواستم برنامه ای بنویسم با استفاده از تابعی که خودم تعریف میکنم که شماره دانشجویی و نمره 10 دانشجو را بگیرد و شماره دانشجویی آنهایی را که نمره شان بالای 15 هست را چاپ کند . میخوام این برنامه با تابع ران شود .. کدهای زیر را نشوتم ، ران نشد .. به نظرتون مشکل از کجاست ؟
کد:
#include <stdio.h>
#include <conio.h>
int main()
{
int f(int number, float score)
{
if (score>15)
return 1;
else
return 0;
}
clrscr();
float score;
int number;
int i;
for(i=1; i<=10; i++)
{
scanf("%d",& number);
scanf("%f",& score);
if(f(number,score)==1)
printf("%d", number);
}
getch();
return 0;
}
اگه بلد بودیم که به شماها نمیگفتیم دوست عزیز
سلامنقل قول:
تابع f رو داخل main ننویسین. قبل از main بزارین
با سلام و تشکر
تابع را قبل از main قرار دادم ، ارور برنامه به یک کاهش یافت ولی ران نشد .
ماشین حساب زیر رو میخوام در turbo c++ اجرا کنم. خط while (len = getparm(parm, PARMLEN)) { ارور میده.
چطوری میتونم با turbo هماهنگش کنم ؟
کد:// Calc.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
void expr(void);
void term(void);
void factor(void);
void operand(void);
void unsigned_num(void);
void infix_postfix(void);
void evaluate(void);
void puttoken(int t);
void putnumber(char *i,int l);
void syntax_error(void);
int strhead(char *i,char *s);
int getparm(char s[], int lim);
#define PARMLEN 256
#define NFUN (sizeof(fun_tab)/sizeof(char *))
#define NCON (sizeof(con_tab)/sizeof(struct con_ent))
char parm[PARMLEN],*i;
char answer[25];
int token[PARMLEN];
double reg[PARMLEN/2+1];
int stack[PARMLEN/2+1];
int top;
int p,r,k;
int error;
char outline[PARMLEN+1];
static char *fun_tab[] = {
"abs", "acos", "asin", "atanh", "atan", "cosh", "cos", "exp",
"log2", "log10", "log", "sinh", "sin", "sqrt", "tanh", "tan"
};
static struct con_ent {
char *sym;
char *val;
} con_tab[] = {
{"pi", "3.141592653589793238"},
{"e", "2.718281828459045235"}
};
int len;
int main(int argc, char* argv[])
{
while (len = getparm(parm, PARMLEN)) {
error = 0;
i = parm;
p = r = 0;
expr();
if (i!=parm+len || error)
syntax_error();
else {
puttoken(1);
infix_postfix();
evaluate();
printf(" %s\n\n", answer);
}
}
return(0);
}
void expr(void)
{
term();
switch(*i) {
case('+'):
puttoken(3);
expr();
return;
case('-'):
puttoken(4);
expr();
return;
}
}
void term(void)
{
factor();
switch(*i) {
case('*'):
puttoken(5);
term();
return;
case('/'):
puttoken(6);
term();
return;
}
}
void factor(void)
{
operand();
if (strhead(i,"**")) {
puttoken(7);
factor();
}
}
void operand(void)
{
char c;
int k;
c = *i;
if (c=='-') {
puttoken(11);
operand();
} else if (c=='(') {
puttoken(2);
expr();
if (*i==')')
puttoken(8);
else
syntax_error();
} else if (c>='a' && c<='z') {
for (k = 0; k<NFUN; ++k)
if (strhead(i, fun_tab[k])) {
puttoken(k+12);
if (*i=='(')
operand();
else
syntax_error();
return;
}
for (k = 0; k<NCON; ++k)
if (strhead(i, con_tab[k].sym)) {
putnumber(con_tab[k].val, strlen(con_tab[k].val));
i += strlen(con_tab[k].sym);
return;
}
syntax_error();
} else
unsigned_num();
}
void unsigned_num(void)
{
static char *table[] = {
"d4.1", "d5", "d6+3-3", "d6", "d4.5e2", "d5e2", "d7", "d8", ""
};
int s,found;
char a,b;
char *j;
j = i;
s = 0;
found = 1;
while (found) {
found = 0;
k = 0;
a = *table[s];
b = *j;
while (!found && a!='\0') {
if (a=='d') {
if (b>='0' && b<='9')
found = 1;
} else
if (a==b)
found = 1;
k += 2;
a = *(table[s]+k);
}
if (found) {
++j;
s = *(table[s]+k-1)-'0';
}
}
if (s>3) {
putnumber(i,j-i);
i = j;
} else {
i = j;
syntax_error();
}
}
void infix_postfix(void)
{
int p,q,t;
stack[0] = 1;
top = 0;
t = token[0];
p = 1;
q = 0;
while (t!=1) {
if (t>50)
token[q++] = t;
else if (t>10 || t==2)
stack[++top] = t;
else if (t>2 && t<8) {
while (t<=stack[top])
token[q++] = stack[top--];
stack[++top] = t;
} else {
while (stack[top]!=2)
token[q++] = stack[top--];
--top;
}
t = token[p++];
}
while (stack[top]!=1)
token[q++] = stack[top--];
token[q] = 1;
}
void evaluate(void)
{
int p,t;
double op1,op2;
top = -1;
p = 0;
t = token[0];
while (t!=1) {
if (t>=50)
stack[++top] = t-50;
else if (t<11) {
op2 = reg[stack[top--]];
op1 = reg[stack[top]];
switch(t) {
case(3):
op1 = op1+op2;
break;
case(4):
op1 = op1-op2;
break;
case(5):
op1 = op1*op2;
break;
case(6):
op1 = op1/op2;
break;
case(7):
op1 = exp(log(op1)*op2);
}
reg[stack[top]] = op1;
} else {
op1 = reg[stack[top]];
switch(t) {
case(11):
op1 = -op1;
break;
case(12):
if (op1<0)
op1 = -op1;
break;
case(13):
op1 = acos(op1);
break;
case(14):
op1 = asin(op1);
break;
case(15):
op1 = log((1+op1)/(1-op1))/2;
break;
case(16):
op1 = atan(op1);
break;
case(17):
op1 = cosh(op1);
break;
case(18):
op1 = cos(op1);
break;
case(19):
op1 = exp(op1);
break;
case(20):
op1 = log(op1)/log((double)2);
break;
case(21):
op1 = log10(op1);
break;
case(22):
op1 = log(op1);
break;
case(23):
op1 = sinh(op1);
break;
case(24):
op1 = sin(op1);
break;
case(25):
op1 = sqrt(op1);
break;
case(26):
op1 = tanh(op1);
break;
case(27):
op1 = tan(op1);
}
reg[stack[top]] = op1;
}
t = token[++p];
}
_gcvt(reg[0], 16, answer);
}
void puttoken(int t)
{
token[p++] = t;
if (t==7)
i += 2;
else if (t<12)
++i;
else
i += strlen(fun_tab[t-12]);
}
void putnumber(char *i,int l)
{
char buf[PARMLEN];
int k;
for (k = 0; k<l; ++k)
buf[k] = *i++;
buf[k] = '\0';
reg[r] = atof(buf);
token[p++] = (r++)+50;
}
void syntax_error(void)
{
if (!error) {
printf("-----");
while (i--!=parm)
printf("-");
printf("*\nUnexpected Character.\n");
error = 1;
i = "";
}
}
int strhead(char *i, char *s)
{
while (*s!='\0' && *i++==*s)
++s;
return(*s=='\0');
}
int getparm(char s[], int lim)
{
int c,i;
i = 0;
do {
printf("===> ");
while (i<lim && (c = fgetc(stdin))!=EOF && c!='\n')
s[i++] = c;
if (i==lim) {
while ((c = fgetc(stdin))!=EOF && c!='\n')
;
if (c==EOF)
printf("\n");
printf("calc: Expression too long.");
if (c!=EOF)
printf("\n");
i = 0;
}
} while (c!=EOF && !i);
if (c==EOF)
printf("\n");
s[i] = '\0';
return(i);
}
چه اروری میده؟؟نقل قول:
نقل قول:محتوای مخفی: 1
چه اروری میده؟؟
دوستان من الان هر دو برنامه رو با Visual Studio کامپایل کردم مشکل ندارن.
فقط برنامه ی ماشین حساب چند تا فایل سرآیند کم داشت که اونم اضافه کردم درست شد.
کد کامل :
محتوای مخفی: Code
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
جای آکلاد ها مشکل داشت ، درست ران شد .نقل قول:
امام الان یک مشکلی هست ، برنامه وقتی اجرا میشود اول شماره دانشجویی را میگیرد و بعد نمره را و بلافاصله وقتی نمره بالای 15 بود ، همون شماره دانشجویی را پرینت میکند .
من میخواهم اول کل شماره دانشجویی و نمره 10 نفر را بگیرد و سپس شماره دانشجویی ها را چاپ کند .. ؟