Belirsiz sayıdaki bir öğrenci grubu için çift yönlü bağlantılı liste yapısı oluşturunuz.Listede öğrencilerin adı, numarası, vizesi, finali ve ortalması mecuttur.
a)Listeye eleman ekleyen
b)Adın alfabetik sırasına göre araya ekleyen
c)Listenin ad ve ortalama kısmınıbir diziye aktarıp diziyi ortalaması yüksek olandan düşük olana doğru sıralayan
d)Listeyi görüntüleyen
e)Numaraya göre eleman silen
bir C++ programı yazınız.
#include < stdio.h >
#include< stdlib.h >
#include< string.h >
struct dllist
{
int no,vize,final;
float gn;
char kelime[20];
struct dllist *on,*arka;};
struct dllist2
{float not;
char ad[20];};
static dllist *bas,*son;
void elemanekle(struct dllist *ct)
{struct dllist *p;
if(bas==NULL)
{
bas=ct;
ct->arka=NULL;
ct->on=NULL;
return;
}
else
for(p=bas;p->arka!=NULL;p=p->arka);
p->arka=ct;
ct->on=p;
ct->arka=NULL;}
void listele()
{
struct dllist *p;
p=bas;int s=0;
do
{
s++;
printf("%d. eleman \n ad:%s \n",s,p->kelime);
printf(" no: %d \n",p->no);
printf(" vize: %d \n",p->vize);
printf(" final: %d \n",p->final);
printf(" ortalama: %f \n",p->gn);
p=p->arka;}while(p!=NULL);
}
void notsirala()
{
struct dllist *q;
struct dllist2 not[50],noty;
int r=0,i,j;for(q=bas;q!=NULL;q=q->arka)
{
r++;
strcpy(not[r].ad,q->kelime);
not[r].not=q->gn;
}for(i=1;i<=r;i++)
for(j=i+1;j<=r;j++)if(not[i].not
for(i=1;i<=r;i++)
{
printf("%d. eleman\n ad:%s\n",i,not[i].ad);
printf("not:%f",not[i].not);}
}
void arayaekle(struct dllist *p)
{
struct dllist *q,*once;if(bas==NULL)
{
bas=p;
p->arka=NULL;
p->on=NULL;
return;
}for(q=bas;q!=NULL;q=q->arka)
if(strcmp(p->kelime,q->kelime)==-1)
{once=q->on;
break;
}if(q->on!=NULL&&q->arka!=NULL)
{
p->on=once;
p->arka=q;
q->on=p;
once->arka=p;
return;
}if(q->on==NULL)
{
q->on=p;
p->on=NULL;
p->arka=q;
bas=p;return;
}
if(q->arka==NULL)
{
q->arka=p;
p->arka=NULL;
p->on=son;
son=p;return;
}
}
void sil(int e)
{
struct dllist *ogr;
for(ogr=bas;ogr->arka==NULL;ogr=ogr->arka)
if(ogr->no==e)
break;
if(ogr->on==NULL)
bas=ogr->arka;
else if(ogr->arka==NULL)
ogr->on->arka=NULL;
else
{
ogr->on->arka=ogr->arka;
ogr->arka->on=ogr->on;
}
}
void main()
{
int sec,a;
float ort;
struct dllist *m;
do
{printf("\n 1. eleman ekle");
printf("\n 2. listele");
printf("\n 3. ada göre sıralı ekle");
printf("\n 4. ortalamaya göre sırala");
printf("\n 5. Numaraya göre eleman silme");
printf("\n 6. ‡kŸ");
printf("\nseciminiz: ");
scanf("%d", &sec);
switch(sec){
case 1:
m=(struct dllist *)malloc(sizeof(dllist));
printf("ad giriniz: ");
scanf("%s",&m->kelime);
printf("no giriniz: ");
scanf("%d",&m->no);
printf("vize giriniz: ");
scanf("%d",&m->vize);
printf("final giriniz: ");
scanf("%d",&m->final);
ort=float(0.4*m->vize+0.6*m->final);
m->gn=ort;
elemanekle(m);
break;
case 2:
listele();
break;
case 3:
m=(struct dllist *)malloc(sizeof(dllist));
printf("ad giriniz: ");
scanf("%s",&m->kelime);
printf("no giriniz: ");
scanf("%d",&m->no);
printf("vize giriniz: ");
scanf("%d",&m->vize);
printf("final giriniz: ");
scanf("%d",&m->final);
ort=float(0.4*m->vize+0.6*m->final);
m->gn=ort;
arayaekle(m);
break;
case 4:
notsirala();
break;
case 5:
printf("\nKaydını silmek istediğiniz öğrencinin numarasını giriniz");
scanf("%d",&a);
sil(a);
case 6:exit(0);
}
}while(1);
}
Yorumlar10
programda not diye değişken tanımlanmış, not diye değişken tanımlanamaz.. başka da bi sıkıntı yok.. not kelimesini notu diye değiştirin çalışır...
Derleyici kaynaklı bir hata. Öğrenci arkadaşlarımıza yardımcı olsun diye hatayı düzeltip tekrar koyuyorum.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct dllist
{
int no,vize,final;
float gn;
char kelime[20];
struct dllist *on,*arka;
};
struct dllist2
{
float notu;
char ad[20];
};
static dllist *bas,*son;
void elemanekle(struct dllist *ct)
{
struct dllist *p;
if(bas==NULL)
{
bas=ct;
ct->arka=NULL;
ct->on=NULL;
return;
}
else
for(p=bas;p->arka!=NULL;p=p->arka);
p->arka=ct;
ct->on=p;
ct->arka=NULL;
}
void listele()
{
struct dllist *p;
p=bas;int s=0;
do
{
s++;
printf("%d. eleman \n ad:%s \n",s,p->kelime);
printf(" no: %d \n",p->no);
printf(" vize: %d \n",p->vize);
printf(" final: %d \n",p->final);
printf(" ortalama: %f \n",p->gn);
p=p->arka;
}while(p!=NULL);
}
void notsirala()
{
struct dllist *q;
struct dllist2 notu[50],noty;
int r=0,i,j;
for(q=bas;q!=NULL;q=q->arka)
{
r++;
strcpy(notu[r].ad,q->kelime);
notu[r].notu=q->gn;
}
for(i=1;i<=r;i++)
for(j=i+1;j<=r;j++)
if(notu[i].notu<notu[j].notu)
{
noty=notu[i];
notu[i]=notu[j];
notu[j]=noty;
}
for(i=1;i<=r;i++)
{
printf("%d. eleman\n ad:%s\n",i,notu[i].ad);
printf("notu:%f",notu[i].notu);
}
}
void arayaekle(struct dllist *p)
{
struct dllist *q,*once;
if(bas==NULL)
{
bas=p;
p->arka=NULL;
p->on=NULL;
return;
}
for(q=bas;q!=NULL;q=q->arka)
if(strcmp(p->kelime,q->kelime)==-1)
{once=q->on;
break;
}
if(q->on!=NULL&&q->arka!=NULL)
{
p->on=once;
p->arka=q;
q->on=p;
once->arka=p;
return;
}
if(q->on==NULL)
{
q->on=p;
p->on=NULL;
p->arka=q;
bas=p;return;
}
if(q->arka==NULL)
{
q->arka=p;
p->arka=NULL;
p->on=son;
son=p;return;
}
}
void sil(int e)
{
struct dllist *ogr;
for(ogr=bas;ogr->arka==NULL;ogr=ogr->arka)
if(ogr->no==e)
break;
if(ogr->on==NULL)
bas=ogr->arka;
else if(ogr->arka==NULL)
ogr->on->arka=NULL;
else
{
ogr->on->arka=ogr->arka;
ogr->arka->on=ogr->on;
}
}
int main()
{
int sec,a;
float ort;
struct dllist *m;
do
{
printf("\n 1. eleman ekle");
printf("\n 2. listele");
printf("\n 3. ada göre sıralı ekle");
printf("\n 4. ortalamaya göre sırala");
printf("\n 5. Numaraya göre eleman silme");
printf("\n 6. ‡?k?Ÿ");
printf("\nseciminiz: ");
scanf("%d", &sec);
switch(sec)
{
case 1:
m=(struct dllist *)malloc(sizeof(dllist));
printf("ad giriniz: ");
scanf("%s",&m->kelime);
printf("no giriniz: ");
scanf("%d",&m->no);
printf("vize giriniz: ");
scanf("%d",&m->vize);
printf("final giriniz: ");
scanf("%d",&m->final);
ort=float(0.4*m->vize+0.6*m->final);
m->gn=ort;
elemanekle(m);
break;
case 2:
listele();
break;
case 3:
m=(struct dllist *)malloc(sizeof(dllist));
printf("ad giriniz: ");
scanf("%s",&m->kelime);
printf("no giriniz: ");
scanf("%d",&m->no);
printf("vize giriniz: ");
scanf("%d",&m->vize);
printf("final giriniz: ");
scanf("%d",&m->final);
ort=float(0.4*m->vize+0.6*m->final);
m->gn=ort;
arayaekle(m);
break;
case 4:
notsirala();
break;
case 5:
printf("\nKaydını silmek istediğiniz öğrencinin numarasını giriniz");
scanf("%d",&a);
sil(a);
case 6:exit(0);
}
}while(1);
}
hele o hata yok diyen kim allah için beri gelsin .. kardeş nasıl hata yok , her türlü derlemeye çalıştığımda hata veriyor , kullandığım derleyici dev c pp .. siz hangi derleyiciyi kullanıyorsunuz da hata almıyorsunuz ?
bkz. google/C/C++ complier mingw
mingw ile dosya uzantıalrını .cpp ve .hpp(veya .h) olarak bir klasöre kaydedersiniz ve indirdiğiniz mingw derleyici ile derleme işlemini (cmd - dos üzerinden) pekala yapabilirsiniz karşılaşacağınız en ağla problem de makefile dosyası hazırlamak olabilir...
bkz. google/ makefile dosyası oluşturma
bu kodlari .c uzantili nasil duzenleyip calistirabilirz
Yorumlarınızı Bekliyoruz
Yorum Yazın
Yorum Yapın