واضح آرشیو وب فارسی:سایت ریسک: مشکل این برنامه ساده چیه؟ ninjavb 14 آذر 1387, 17:27با سلام من یه برنامه نوشتم که n تا عدد دریافت کنه و ماکزیمم و مینیمم رو نشون بده شرط خروج از حلقه هم وارد کردن عدد صفره ولی هر بار که اجراش میکنم باوارد کردن عدد صفر max ,min رو نشون میده ولی از برنامه خارج نمیشه و حلقه دوباره اجرا میشه نمیدونم دیگه چی کار باید بکنم؟ دیگه راهی به ذهنم نمیرسه در ضمن این حلقه حتما باید با for نوشته بشه و دستورات continue و از این چیزا نباید توش به کار بره! لطفا کمک کنید. اینم کدش #include <sdio.h> #include <conio.h> main { int max,min,n,i; clrscr(); printf("enter numbers with 0 to end:"); printf("enter number 1 "); scanf("%d",,&n); max=n; min=n; for (i=2;i!=0;i++){ printf("enter number%d",i); scanf("%d",&n); if (n!=0) if(n>max) max=n; else if (n<min) min#include <sdio.h> #include <conio.h> main { int max,min,n,i; clrscr(); printf("enter numbers with 0 to end:"); printf("enter number 1 "); scanf("%d",,&n); max=n; min=n; for (i=2;i!=0;i++){ printf("enter number%d",i); scanf("%d",&n); if (n!=0) if(n>max) max=n; else if (n<min) min=n; else { i=0; printf("max=%d,min=%d",max,min); } } getch(); }=n; else { i=0; printf("max=%d,min=%d",max,min); } } getch(); } ninjavb 15 آذر 1387, 10:12خواهشن اگه کسی میدونه بگه چون من باید این برنامه رو تا امروز حلش کنم فردا دیگه به دردم نمیخوره . the_king 15 آذر 1387, 11:38مورد اول) دیکته stdio.h را اشتباه نوشته بودید. مورد دوم) توابع در زبان C و ++C بایستی توسط پارانتر () مشخص شوند، حتی اگر پارامتر ورودی نداشته باشند. تابع main برنامه شما فاقد پارانتز ورودی است. مورد سوم) تابع ()main یا باید مقدار خروجی نداشته باشد (void) یا خروجی int داشته باشد، شما خروجی را مشخص نکردید. مورد چهارم) برای دریافت مقدار n و در تابع scanf بجای یک , از دو ,, استفاده کردید. مورد پنجم) در Paste کردن کد برنامه بخشی از کد را دوباره و تکراری paste کردید. مورد ششم) عملکرد else همواره برای آخرین if ای است که در محدوده اش قرار دارد، به همین دلیل، زمانی که if مورد نظر شما آخرین if نیست، بایستی توسط {} محدوده if ای که مورد نظرتان است را تعیین کرده باشید، از ابتدای if تا درست قبل از else ای که می خواهید بکار بگیرید. در مورد else ای که شما برای مقداردهی i = 0 نوشته بودید، این مساله رخ می دهد. آخرین if آنجایی بود که شرط n < min بررسی می شود و نه شرط n != 0 مورد هفتم) شرط ادامه حلقه را i != 0 قرار دادید، یعنی تا زمانی که i مخالف صفر باشد. اما توجه داشته باشید که در پایان اجرای هر دور حلقه مقدار i یک واحد افزایش می یابد. زمانی که شما در داخل حلقه مقدار i را برابر 0 قرار می دهید، هنوز دور پایان نیافته است. زمانی که حلقه برای دور بعدی آماده می شود، مقدار i افزایش یافته و به 1 تبدیل می شود. دلیل اینکه شرط حلقه شما درست عمل نمی کند، همین است. شما می بایستی از مقدار i = -1 بجای مقدار دهی 0 استفاده می کردید تا با یک واحد افزایش در انتهای دور حلقه به 0 مورد نظر برسد. علاوه بر این نیازی به تغییر مقدار i نبود، کافی بود شرط حلقه را از i != 0 به n != 0 تغییر می دادید. #include <stdio.h> #include <conio.h> void main() { int max,min,n,i; clrscr(); printf("enter number 1 (0 to end) : "); scanf("%d",&n); max=n; min=n; for (i=2;n!=0;i++) { printf("enter number %d (0 to end) : ",i); scanf("%d",&n); if (n!=0) { if(n>max) max=n; else if (n<min) min=n; } else printf("max=%d,min=%d ",max,min); } getch(); }
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 2439]