PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل این برنامه چیه ؟



pishro
28-10-2013, 03:12
سلام. بر نامه یی که کدشو قرار دادم ، برنامه ییه که مشخصات و نمره ی n نفر رو می گیره و سپس مشخصات و نمره دانشجوی تاپ رو اعلام می کنه . این کدی که گذاشتم error نمی گیره ولی وقتی اجرا میشه خطا می ده . لطفا بهم بگید که اشکال کار کجاست .

#include "stdafx.h" #include "iostream" #include "conio.h" using namespace std; struct student{ char fname[20]; char lname[20]; float avg; }; int _tmain(int argc, _TCHAR* argv[]) { student *p; int n,top_stu; cout<<"How many students you have ?" <<endl; cin>>n; n--; p = new student[n]; for(int i=0;i<=n;i++){ cout<<endl<<"enter student ["<<i+1<<"] `s details : "; cin>>p->fname; cin>>p->lname; cin>>p->avg; p++; } float max=0; for(int i=0;i<=n;i++){ if((p+i)->avg > max){ max = (p+i)->avg; top_stu = i;} } cout<<(p+top_stu)->fname<<endl<<(p+top_stu)->lname<<endl<<max; delete [] p; _getch(); return 0; }

sadmonew
28-10-2013, 09:47
سلام
موقع اجرا چه خطايي ميده؟
لطفا فايل exe رو هم بذاريد.


#include "stdafx.h"
#include "iostream"
#include "conio.h"

using namespace std;

struct student{
char fname[20];
char lname[20];
float avg;
};

int _tmain(int argc, _TCHAR* argv[]) {
student *p;
int n,top_stu;

cout<<"How many students you have ?" <<endl;
cin>>n;
n--;
p = new student[n];
for(int i=0;i<=n;i++){
cout<<endl<<"enter student ["<<i+1<<"] `s details : ";
cin>>p->fname;
cin>>p->lname;
cin>>p->avg;
p++;
}
float max=0;
for(int i=0;i<=n;i++){
if((p+i)->avg > max){
max = (p+i)->avg;
top_stu =i;
}
}
cout<<(p+top_stu)->fname<<endl<<(p+top_stu)->lname<<endl<<max;
delete [] p;
_getch();
return 0;
}

hs_golpa
28-10-2013, 16:09
نکته اول اینکه شما اشاره گر به ساختار student را در هنگام ذخیره سازی افزایش دادید و حالا که میخواهید شروع کنید باید به ابتدای آن برگردید. بهترین کار استفاده از لیست پیوندیست به گونه ای که ساختار شما اشاره گر به ساختار بعدی را در خودش ذخیره کند.



for(int i=0;i<=n;i++){
cout<<endl<<"enter student ["<<i+1<<"] `s details : ";
cin>>p->fname;
cin>>p->lname;
cin>>p->avg;
p++;
}

در حقیقت برنامه به اینجا که میرسد به ازای i>0 اصلا ساختاری تعریف نشده که بخواهد متغییر avg را بخواند.



for(int i=0;i<=n;i++){
if((p+i)->avg > max){
max = (p+i)->avg;
top_stu =i;
}
}

hs_golpa
28-10-2013, 16:52
در ضمن به هنگام دریافت ورودی تعداد دانش آموزان حتما چک کنید که از یه حدی بیشتر نباشه مثلا 1000 دانش آموز. چون میتونه باعث سرریز پشته بشه.

ERSA
26-12-2013, 17:25
سلام

نخواستم تاپیک جدید ایجاد کنم.امروز یه برنامه ساعت دیجیتال نوشتم واسه دلخوشی.تو پروتئوس درست کار میکنه :

You can see links before reply


اما بعد از عملی بستن یه سری عدد نشون میده :

You can see links before reply



مشکل از کجا میتونه باشه؟فایل پروتئوس + هگز رو ضمیمه کردم.این هم کدم در اتمل استودیو :





#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"




int main(void)
{

//-----------------------
DDRD=0xff;
DDRB=0x00;
DDRC=0xff;
lcd_init(LCD_DISP_ON);
lcd_gotoxy(0,0);
//-----------------------

int hour,min,sec=0;
char a[5];
char b[5];
char c[5];

lcd_clrscr();

loop:
lcd_gotoxy(6,0);
lcd_puts(":");
lcd_gotoxy(9,0);
lcd_puts(":");


itoa(sec,a,10);
itoa(min,b,10);
itoa(hour,c,10);
lcd_gotoxy(4,0);
lcd_puts(c);
lcd_gotoxy(7,0);
lcd_puts(b);
lcd_gotoxy(10,0);
lcd_puts(a);
_delay_ms(200);
while(1){

if(PINB==1){

sec++;
lcd_clrscr();
goto loop;


}
if(PINB==2){

min++;
lcd_clrscr();
goto loop;
}

if(PINB==4){

hour++;
lcd_clrscr();
goto loop;
}

if(PINB==8){
break;
}









}



while (1){

sec++;

if(sec==60){

min++;
sec=0;
if(min==60){
hour++;
min==0;
}
if(hour==24){
hour = 0;
min=0;
sec=0;


}



}



lcd_gotoxy(6,0);
lcd_puts(":");
lcd_gotoxy(9,0);
lcd_puts(":");



itoa(sec,a,10);
itoa(min,b,10);
itoa(hour,c,10);
lcd_gotoxy(4,0);
lcd_puts(c);
lcd_gotoxy(7,0);
lcd_puts(b);
lcd_gotoxy(10,0);
lcd_puts(a);
_delay_ms(1000);
lcd_clrscr();




}








return 0;





}





:baad::baad::baad:

1nafar
26-12-2013, 20:28
اما بعد از عملی بستن یه سری عدد نشون میده :
سلام
احتمالا پایه های دیتا در lcd به صورت نادرست متصل شدن .

ERSA
26-12-2013, 21:17
سلام
احتمالا پایه های دیتا در lcd به صورت نادرست متصل شدن .

سلام.پایه هارو چک کردم مشکلی ندارند.برای اطمینان یه string هم اولش اضافه کردم به درستی نمایش داد اما بعد از اون که به اعداد رسید دوباره lov:

M_GH
26-12-2013, 23:39
مهندس این رو ی تست بزن !


int hour=0,min=0,sec=0;

:0013:

ERSA
27-12-2013, 00:06
مهندس این رو ی تست بزن !


int hour=0,min=0,sec=0;:0013:

مرسی نکته مهمی بود!:hi:

1nafar
29-12-2013, 07:21
مرسی نکته مهمی بود!:hi:
سلام
شما میتونید با انتشار تجریبات و روش حل مشکل ، سایر افرادی که ممکنه در اینده با مشکل شما روبرو بشن رو یاری کنید .
:wink: