PDA

View Full Version : مشکل تکه کد درج شده چیست؟ (تمرین دانشجویی)



wilson
دوشنبه 16 دی 1392, 14:28 عصر
این دو برنامه یه سری اررور دارن که من نمیفهمم چطوری باید حل بشن لطفا کمک کنید.باید کامپایل بشن تا متوجه بشید.


برنامه ای بنویسید اطلاعات 20دانشجو شامل نام فامیلی نمره را گرفته و سپس مشخصات دانشجویی که نمره ان کنتر از 10 شده را چاپ و نمایش دهد.
#include<stdio.h>
#include<conio.h>
struct st
{
char name[20];
char family[40];
float mark;
}a[4];
int main()
{
for(int i=0;i<=4;i++)
{

gets(a[i].name);
printf("\n");

gets(a[i].family);
printf("\n");

scanf("%f",&a[i].mark);
printf("\n");

}
for(int i=0;i<=4;i++)

if(a[i].mark<10)
{
printf("name:\n");
puts(a[i].name);
printf("family:\n");
puts(a[i].family);
printf("mark:\n");
printf("%f",a[i].mark);
}

getch();
}



برنامه 2

برنامه ای بنویسید اطلاعات 20دانشجو شامل نام فامیلی شماره دانشجوی و معدل را گرفته و سپس مشخصات دانشجویی ها را بر اساس معدل چاپ کند نمایش دهد.

#include<stdio.h>
#include<conio.h>
struct
{
char name[20];
char family[40];
int num;
float ave;
}per[20],temp;
int main()
{
for(int i=0;i<20;i++)
{
gets(per[i].name);
gets(per[i].family);
scanf("%i",per[i].num);
scanf("%f",per[i].ave);
}
int k,s;
{
for(k=0;k<20;k++)

for(s=k+1;s<20;s++);
}
if(avg[k]>avg[s]){
temp=per[k];
per[k]=per[s];
per[s]=temp;
}
printf("%f %i %c",per[k].avg,per[k].num,per[k].name,per[k].family);
getch();
}

hamedlll
دوشنبه 16 دی 1392, 14:46 عصر
i رو خارج از for تعریف کن, یعنی دیگه داخل for اینت نباشه, درست میشه.

wilson
دوشنبه 16 دی 1392, 15:03 عصر
شما منظورتون کدوم برنامه هست بالایی یا پایینی کامپایل کردید خودتون ببینید درست میشه .
لطفا کامل کل برنامه رو برام بزارید.اصلاح شده ممنون.

hamedlll
دوشنبه 16 دی 1392, 15:45 عصر
اولی #include<stdio.h>
#include<conio.h>
struct st
{
char name[20];
char family[40];
float mark;
}a[4];
int main()

{
int i;
for(i=0;i<=4;i++)
{

gets(a[i].name);
printf("\n");

gets(a[i].family);
printf("\n");

scanf("%f",&a[i].mark);
printf("\n");

}
for(i=0;i<=4;i++)

if(a[i].mark<10)
{
printf("name:\n");
puts(a[i].name);
printf("family:\n");
puts(a[i].family);
printf("mark:\n");
printf("%f",a[i].mark);
}

getch();
}

دومی:
#include<stdio.h>
#include<conio.h>
struct
{
char name[20];
char family[40];
int num;
float ave;
}per[20],temp;
int main()
{
int i;
for(i=0;i<20;i++)
{
gets(per[i].name);
gets(per[i].family);
scanf("%i",per[i].num);
scanf("%f",per[i].ave);
}
int k,s;

for(k=0;k<20;k++)

for(s=k+1;s<20;s++);
if(per[k].ave>per[s].ave){
temp=per[k];
per[k]=per[s];
per[s]=temp;
}
printf("%f %i %c",per[k].ave,per[k].num,per[k].name,per[k].family);
getch();
}

wilson
دوشنبه 16 دی 1392, 16:15 عصر
این هم کار نکرد اگر ویژوال استودیو داری باید کامپایل کنی تا مشکل رو بفهمی.

کامبیز اسدزاده
دوشنبه 16 دی 1392, 17:02 عصر
این کد اول :


#include<stdio.h>
#include<conio.h>
struct st
{
char name[20];
char family[40];
float mark;
}a[4];
int main()

{
int i;
for (i = 0; i <= 4; i++)
{

gets_s(a[i].name);
printf("\n");

gets_s(a[i].family);
printf("\n");

scanf_s("%f", &a[i].mark);
printf("\n");

}
for (i = 0; i <= 4; i++)

if (a[i].mark<10)
{
printf("name:\n");
puts(a[i].name);
printf("family:\n");
puts(a[i].family);
printf("mark:\n");
printf("%f", a[i].mark);
}

_getch();
}


اینم کد دوم :


#include<stdio.h>
#include<conio.h>
struct
{
char name[20];
char family[40];
int num;
float ave;
}per[20], temp;
int main()
{
int i;
for (i = 0; i<20; i++)
{
gets_s(per[i].name);
gets_s(per[i].family);
scanf_s("%i", per[i].num);
scanf_s("%f", per[i].ave);
}
int k, s;

for (k = 0; k<20; k++)

for (s = k + 1; s<20; s++);
if (per[k].ave>per[s].ave){
temp = per[k];
per[k] = per[s];
per[s] = temp;
}
printf("%f %i %c", per[k].ave, per[k].num, per[k].name, per[k].family);
_getch();
}


مشکل شما در gets , getch بود که در نسخه های 10 به اینور C++ اینها منسوخ شده اند در ویژوال استدیو باید به صورت gets_s , _getch بنویسید.

wilson
دوشنبه 16 دی 1392, 17:15 عصر
دوست من why.darkness (http://barnamenevis.org/member.php?219337-why.darkness) ممنون از سعی شما وای باز کار نکرد عرض کردم که باید کامپایل بشه تا مشکلش مشخص بشه این بعد از for دوم اسم رو نمیگیره و دومی run time error داره.

کامبیز اسدزاده
دوشنبه 16 دی 1392, 17:18 عصر
دوست من why.darkness (http://barnamenevis.org/member.php?219337-why.darkness) ممنون از سعی شما وای باز کار نکرد عرض کردم که باید کامپایل بشه تا مشکلش مشخص بشه این بعد از for دوم اسم رو نمیگیره و دومی run time error داره.

بنده جفتشم کامپایل کردم و اجرا کردم :) کامپایلر و IDE شما چیه؟

wilson
دوشنبه 16 دی 1392, 18:08 عصر
تو برنامه اولی این مشکل هست ببین 4 نفر مشخصاتش باید کامل گرفنه بشه که برامن این طوری هست و باید فقط کسی که زیر 10 هست چاپ بشه مشخصاتش که همه رو میده.


114958

meisam12
جمعه 20 دی 1392, 02:05 صبح
تو برنامه اولی این مشکل هست ببین 4 نفر مشخصاتش باید کامل گرفنه بشه که برامن این طوری هست و باید فقط کسی که زیر 10 هست چاپ بشه مشخصاتش که همه رو میده.


114958

این برنامه را اصلاح کردم به این لینک http://www.uplooder.net/cgi-bin/dl.cgi?key=8cd0fb0976b928f184c3b11c75c14851 مراجعه کن.