PDA

View Full Version : نمایش دو عدد بزرگتر از همه از بین 100 عدد صحیح



Iman7228
یک شنبه 28 آذر 1389, 10:48 صبح
سلام متخصصین گرامی...
یه زحمتی داشتم..:افسرده::افسرده:
راستش استادمون یه کدی بهم داد و گفت ایراد این کد رو بهش بگم... ولی آخرش به نتیجه ای نرسیدم.
البته خیلی تغییرات روش اعمال کردم ولی بالاخره گفتم دست به دامان برنامه نویس دات او آر جی شم...:چشمک:

سوالش این بود :
برنامه ای بنویسید که 100 مقدار صحیح از ورودی گرفته و سپس با استفاده از تابع ، دو مقداری که بزرگتر از همه باشند را پیدا کتد و در خروجی نمایش دهد...

اینم کدش.... بی زحمت همین کد رو برام تصحیحش کنین.... ممنون میشم...

#include <iostream.h>
Using namespace std;
void test(int[]);
int main(){
int a[100],i;
for (i=0;i<100;i++)
cin>>a[i];
test(a);
}
void test(int a[100]){
int i,j,x;
for(i=0;i<100;i++)
for(j=i+1;j<100;j++)
if (a[i]>a[j]){
x=a[i];
a[i]=a[j];
a[j]=x;
cout<<a[98]<<a[99];
}


درضمن من از Turbo C++ نسخه 4.5 استفاده می کنم... نمیدونم چرا به Using namespace std ایراد میگیره...

Salar Ashgi
یک شنبه 28 آذر 1389, 10:57 صبح
اصلا این تابع Test که شما نوشتید ، ارتباطی به ماکسیمم گیری ندارد ! بیشتر به Bubble Sort شبیه هست .
در ضمن این نکته را نیز در نظر داشته باشید که درخواست کد ، اکیدا" ممنوع است ، فقط درخواست راهنمایی کرده و
کدتان را خودتان بنویسید ، چراکه روال درست برنامه نویسی چنین است .

موفق باشید ./

Iman7228
یک شنبه 28 آذر 1389, 11:17 صبح
اولا ممنونم که زودی جواب دادین....

دوما من درخواست کد نکردم... کد رو نوشتم و گفتم اگه زحمتی نیست برام درستش کنید..

سوما منظور سوال هم همینه که اعداد رو مرتب میکنه و آخرسر دو عددی که بزرگتر از همه هست رو فقط نمایش میده...

CPPDeveloper
یک شنبه 28 آذر 1389, 11:39 صبح
از یکی از الگوریتم های مرتب سازی مثل bubble sort یا selection sort (http://www.algolist.net/Algorithms/)و ... برای مرتب کردن آرایه استفاده کنین. بعد از مرتب شدن دوتای آخر را در خروجی چاپ کنید.

Salar Ashgi
یک شنبه 28 آذر 1389, 17:17 عصر
منظور سوال هم همینه که اعداد رو مرتب میکنه و آخرسر دو عددی که بزرگتر از همه هست رو فقط نمایش میده...
این روش رایج ترین و معمول ترین روشی هست که میتوان واسه این مساله ارائه داد ، ولی خوب روشهایی هم هستند که
بدون استفاده از روشهای مرتب سازی و با مبتنی بودن بر مقایسه ، این مساله را حل میکنند .

موفق باشید ./

BeginnerProgrammer
یک شنبه 28 آذر 1389, 17:44 عصر
کد شما درسته فقط شما باید دستور چاپ در تابع تست رو بعد از پایان حلقه های for بذارین چون اول آرایه رو مرتب میکنید بعد این عناصر رو چاپ میکنید. و همچنین حلقه for اول نباید تا 99 بره چون اینجوری برای آخرین بار که i ، 99 میشه j صد میشه که از آرایه خارجه . بقیه کد درسته همین تغییرات کوچیک رو اعمال کنید درست اجرا میشه.
من با turbo کار نکردم ولی ویژوال باید u رو با حروف کوچیک بنویسید.

BeginnerProgrammer
یک شنبه 28 آذر 1389, 18:46 عصر
با ویژوال اجرا میشه (turbo ندارم)
اینم کدش


#include <iostream>
using namespace std;
void test(int[]);
int main(){
int a[100],i;
for (i=0;i<100;i++)
cin>>a[i];
test(a);
}
void test(int a[100]){
int i,j,x;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if (a[i]>a[j]){
x=a[i];
a[i]=a[j];
a[j]=x;
}
cout<<a[99]<<a[98];
}

Arcsinos
دوشنبه 29 آذر 1389, 00:09 صبح
دوستان یه کار خیلی راحت تر هم میتونید انجام بدید . اون اینه که دو تا متغیر تعریف کنید به نام های max1,max2 و بعد از اینکه max1 رو تو آرایه پیدا کردید اونو از تو آرایه حذف کنید و تو آرایه ی 99 تایی دنبال max2 بگردید .

یه کار دیگه اینکه یه تابع به نام int max بنویسید که یه آرایه میگیره و بزرگترین عدد رو بعد از پیدا کردن بر میگردونه و اونو از تو آرایه حذف میکنه . حالا تو int main با استفاده از یه حلقه هر چند تا عدد بزرگ میخوایید ، پیدا کنید . بدون اینکه مرتب سازی کرده باشد .