• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

لطفا در حل اين چند تمرين منو كمك كنيد

mohandes_milad

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
947
لایک‌ها
34
سن
37
سلام دوستان ممنونم ميشم بهم كمك كنيد

1-برنامه اي بنويسيد كه يك آرايه مرتب از اعداد را دريافت و سپس آنها را بطور معكوس در همان آرايه قرار دهد

اين برنامه رو نوشتم ولي نميدونم چرا درست كار نميكنه كامپايلرمم به هم خواسته استادمون Borland C++ 4.5 هستش

کد:
#include <stdio.h>
   const int size=100;
void main(){
 long int a[size];
 long int b[size];
 int n=0;
 int i=0;
 printf("Lotfan Tedade Adad Ra Vared Namaid n:");
 scanf("%d",&n);
 for(i=0;i<n;i++){
 printf("Lotfan Adad Ra Vared Namaid:");
 scanf("%d",&a[i]);
 }
 for(i=n;i>=0;i--){
 b[i]=a[i];
 }
 for(i=0;i<n;i++){
 printf("\nMakose Adad = %d",b[i]);
   }
 }

2- برنامه اي بنويسيد كه يك مجموعه از اعداد را دريافت و سپس يك عدد ديگر را دريافت كرده و تعييد كند اين عدد چند بار در مجموعه اعداد اوليه تكرار شده است

اين رو درست حل كردم و خوب كار ميكنه و مشكلي ندارم

کد:
[FONT=Tahoma][FONT=Tahoma]#include<stdio.h>[/FONT]
[FONT=Tahoma]void main()[/FONT]
[FONT=Tahoma]{[/FONT]
[FONT=Tahoma]int i, p=0, num[100], x, n;[/FONT]
[FONT=Tahoma]printf("Lotfan Tedade Adad Ra Vared Namaid:");[/FONT]
[FONT=Tahoma] scanf("%d",&n);[/FONT]
[FONT=Tahoma]printf("Adad Ra Vared Namaid:");[/FONT]
[FONT=Tahoma]for(i=0; i<n; i++)[/FONT]
[FONT=Tahoma]scanf("%d",&num[i]);[/FONT]
[FONT=Tahoma]printf("Yek Adad Be Delkhah Vared Namaid:");[/FONT]
[FONT=Tahoma]scanf("%d",&x);[/FONT]
[FONT=Tahoma]for(i=0; i<n; i++)[/FONT]
[FONT=Tahoma]if(x==num[i])[/FONT]
[FONT=Tahoma]p++;[/FONT]
[FONT=Tahoma] printf("\n%d Bar Dar in Majome Tekrar Shode Ast",p);[/FONT]
[FONT=Tahoma]}[/FONT]
[/FONT]


3- برنامه اي بنويسيد كه نام و معدل تعدادي دانشجو را خوانده و سپس بدون اينكه ترتيب دانشجويان را بهم بزند (آنها را جابجاكند) به آنها رتبه بدهد. معدلهاي يكسان ، رتبه يكسان خواهند گرفت

اين هم كار نميكنه

کد:
[FONT=Tahoma][FONT=Tahoma]#include<stdio.h>[/FONT]
[FONT=Tahoma]void main()[/FONT]
[FONT=Tahoma]{[/FONT]
[FONT=Tahoma]int namelist[100],temp[100],rotblist[100],temp1[100];[/FONT]
[FONT=Tahoma]int i,j,m,n;[/FONT]
[FONT=Tahoma]float avelist[100];[/FONT]
[FONT=Tahoma]printf("Lotfan Tedade Daneshjoyan Ra Vared Namaid :");[/FONT]
[FONT=Tahoma]scanf("%d",&n);[/FONT]
[FONT=Tahoma]for(i=1;i<=n;i++){[/FONT]
[FONT=Tahoma]printf("\nLotfan Name Va Moadel Ra Vared Namid :");[/FONT]
[FONT=Tahoma]scanf("%d %d",&namelist[i],&avelist[i]);[/FONT]
[FONT=Tahoma]}[/FONT]
[FONT=Tahoma]temp[i]=avelist[i];[/FONT]
[FONT=Tahoma]i=1;[/FONT]
[FONT=Tahoma]while(i<=n){[/FONT]
[FONT=Tahoma]j=1;[/FONT]
[FONT=Tahoma]while(j<=n){[/FONT]
[FONT=Tahoma]if(temp[i]<temp[j]){[/FONT]
[FONT=Tahoma]temp1[i]=temp[i];[/FONT]
[FONT=Tahoma]temp[j]=temp[i];[/FONT]
[FONT=Tahoma]temp1[i]=temp[j];[/FONT]
[FONT=Tahoma]}[/FONT]
[FONT=Tahoma]j++;[/FONT]
[FONT=Tahoma]i++;[/FONT]
[FONT=Tahoma]}[/FONT]
[FONT=Tahoma]}[/FONT]
[FONT=Tahoma]m=1;[/FONT]
[FONT=Tahoma]i=1;[/FONT]
[FONT=Tahoma]while(i<=n){[/FONT]
[FONT=Tahoma]j=1;[/FONT]
[FONT=Tahoma]while(j<=n){[/FONT]
[FONT=Tahoma]if(temp[i]=avelist[j]){[/FONT]
[FONT=Tahoma]rotblist[j]=m;[/FONT]
[FONT=Tahoma]}[/FONT]
[FONT=Tahoma]j++;[/FONT]
[FONT=Tahoma]if(temp[i]>temp[i+1]){[/FONT]
[FONT=Tahoma]m=m+1;[/FONT]
[FONT=Tahoma]}[/FONT]
[FONT=Tahoma]i++;[/FONT]
[FONT=Tahoma]}[/FONT]
[FONT=Tahoma]}[/FONT]
[FONT=Tahoma]printf("\nRotbeha %d",&rotblist[i]);[/FONT]
[FONT=Tahoma]}[/FONT]
[/FONT]


4- برنامه اي بنويسيد كه يك مارتيس مربعي را از كاربر دريافت و ترانهاده آن را محاسبه و چاپ نمايد

5-برنامه اي بنويسيد كه يك ماتريس مربعي را از كاربر دريافت و تعييد كند آيا پايين مثلثي است يا خير ؟ (ماتريس پايين مثلثي ماتريسي است كه تمام عناصر بالاي قطر اصلي آن 0 باشد ).
6-برنامه اي بنويسيد كه دو ماتريس را دريافت و حاصلجمع آن دو را محاسبه و چاپ نمايد .
7-يك شركت كه داراي 10 شعبه است ، اطلاعات فروش هر شعبه خود را براي 12 ماه سال دريافت كرده است . الگوريتمي بنويسيد كه اين اطلاعات را دريافت و موارد زير را محاسبه و چاپ نمايد :
- ميزان كل فروش هر شعبه
-ميزان كل فروش سه ماه تابستان كل شعب
-شعبه اي كه بيشترين فروش را در مهر ماه داشته است
8-اطلاعات مربوط به فروش 20 شركت كه هر يك داراي 10 شعبه هستند را در 12 ماه سال دريافت كرده ايم . الگوريتمي بنويسيد كه اين اطلاعات را دريافت و موارد زير را محاسبه و چاپ نمايد :
-ميزان كل فروش هر شركت به تفكيك
-ميزان كل فروش سه ماه تابستان هر شركت
-شركتي كه بيشترين فروش را در مهرماه داشته است
9- برنامه اي بنويسيد كه تعدادي عدد را دريافت و با استفاده از يك زير برنامه تعداد اعداد اول را شمارش نمايد
10-برنامه اي بنويسيد كه دو ليست يكي حاوي شماره دانشجويي و ديگري حاوي نام دانشجويان را بخواند . سپس با استفاده از يك زير برنامه ، با دريافت هر شماره دانشجويي ، نام دانشجو را چاپ كند . در پايان شماره دانشجوييها عدد صفر قرار گيرد

اين آخري ها هم نصف و نيمه نوشتم ولي هيچكدوم كار نكرد ميشه كمكم كنيد
 

AlgoBits

کاربر تازه وارد
تاریخ عضویت
16 سپتامبر 2010
نوشته‌ها
18
لایک‌ها
0
محل سکونت
SUT
توی تمرین اول جای که نوشین
کد:
 for(i=n;i>=0;i--){ 
 b[i]=a[i];
 }
این حلقه غلطه هم از نظر منطقی اشکال داره هم نحوی،
اشکال نحوی: چون متغیر i اصلا نباید مقدار n رو بگیره، چون حداکثر تعداد خانه های آرایه n هست و چون از صفر شروع میشه هیچ وقت برابر n نیست و باید n-1 باشه(این اشتباه توی برنامه سوم شما هم هست).

اشکال منطقیش: میخواییم که آرایه برعکس الان کد شما میاد آخرین خونه آرایه a رو داخل آخرین خونه آرایه b کپی میکنه که در نتیجه آرایه a و b میشن مثل هم نه عکس هم.
در ضمن صورت مساله خواسته که داخل خود همون آرایه برعکس بشه بنابراین لازم نیست آرایه b رو اصلا تعریف کنید.

حالا یه راهنمایی میکنم که با کمی فکر کردن راحت بتونید بنویسید برنامه رو، شما داخل قسمت شرط حلقه برای متغیر های کنترلی حلقه، یک متغیر بگیرین به اندیس اولین خونه آرایه اشاره کنه مثلا i=0 و یک متغیر هم به اندیس آخرین خونه آرایه اشاره کنه مثلا j=n-1 حالا به کمک این دوتا متغیر جای دوتا خونه آرایه رو عوض کنید و بعد یکی به i اضافه کنید و یکی هم از j کم کنید.
بقیه برنامه ها خیلی راحتن تا جاییکه میتونید بنویسید بعد کمک بگیرین.​
 
بالا