Öğrencilerin puanını büyükten küçüğe isim soyisimle beraber yazıcam puanları sıralayınca normal olarak isimler değişebiliyor bunu nasıl bi eklemeyle düzeltiriz kod şöyle
notları değiştirirken isimleride değiştirirsem sorun çözülür ama hata veriyor aynı türden atama yapılamaz diye
Sorunu su sekilde cozdum ama uzun oldu kolay yolu var midir? Bide ad soyadi dizi seklinde tanimlayip degisim yapinca ayni turden degisim yapilamaz hatasi veriyor fakat pointer seklinde tanimlayinca da hatasiz calisiyor ama program calisinca isim girince sapitiyor pointere dizinin baslangic adresini yollayip yapinca sorun cozuluyo neden boyle biri aciklayabilir mi?
Kod:
#include <iostream>
#include <locale.h>
using namespace std;
typedef struct hesap{
char ad[10],soyad[10];
int not1;
}kisi;
struct hesap sirala(struct hesap*);
int main()
{
setlocale(LC_ALL,"Turkish");
kisi t[3];
for (int i=0;i<3;i++)
{
cout<<i<<".öğrencinin ismini gir:";
cin>>t[i].ad;
cout<<i<<".öğrencinin soyadını gir:";
cin>>t[i].soyad;
cout<<i<<".öğrencinin notunu gir:";
cin>>t[i].not1;
}
sirala(t);
for (int i=0;i<3;i++)
cout<<"isim: "<<t[i].ad<<" soyadı:"<<t[i].soyad<<" puan:"<<t[i].not1<<endl;
}
struct hesap sirala(struct hesap *x){
int gecici;
for(int i=0;i<3;i++){
for(int j=0;j<2;j++){
if (x[j].not1<x[j+1].not1){
gecici=x[j].not1;
x[j].not1=x[j+1].not1;
x[j+1].not1=gecici;
}
}
}
}
Sorunu su sekilde cozdum ama uzun oldu kolay yolu var midir? Bide ad soyadi dizi seklinde tanimlayip degisim yapinca ayni turden degisim yapilamaz hatasi veriyor fakat pointer seklinde tanimlayinca da hatasiz calisiyor ama program calisinca isim girince sapitiyor pointere dizinin baslangic adresini yollayip yapinca sorun cozuluyo neden boyle biri aciklayabilir mi?
Kod:
#include <iostream>
#include <locale.h>
using namespace std;
typedef struct hesap{
char *ad1,*soyad1,ad[10],soyad[10];
int not1;
}kisi;
struct hesap sirala(struct hesap*);
int main()
{
setlocale(LC_ALL,"Turkish");
kisi t[3];
for (int i=0;i<3;i++)
{
cout<<i<<".öğrencinin ismini gir:";
cin>>t[i].ad;
t[i].ad1=t[i].ad;
cout<<i<<".öğrencinin soyadını gir:";
cin>>t[i].soyad;
t[i].soyad1=t[i].soyad;
cout<<i<<".öğrencinin notunu gir:";
cin>>t[i].not1;
}
sirala(t);
for (int i=0;i<3;i++)
cout<<"isim: "<<t[i].ad1<<" soyadı:"<<t[i].soyad1<<" puan:"<<t[i].not1<<endl;
}
struct hesap sirala(struct hesap *x){
int gecici;
char *isim,*soyadi;
for(int i=0;i<3;i++){
for(int j=0;j<2;j++){
if (x[j].not1<x[j+1].not1){
gecici=x[j].not1;
x[j].not1=x[j+1].not1;
x[j+1].not1=gecici;
isim=x[j].ad1;
x[j].ad1=x[j+1].ad1;
x[j+1].ad1=isim;
soyadi=x[j].soyad1;
x[j].soyad1=x[j+1].soyad1;
x[j+1].soyad1=soyadi;
}
}
}
}
Moderatör tarafında düzenlendi:

