Algoritma finaline çalışıyorum.Kafam durdu resmen. :)
Şöyle bir yapı var
typedef struct
{
char _ad[10];
int _yas;
int _not;
}ogrenci;
amaç öğrenci kayıdı yapmak
void ogrKayit(ogrenci * ogr, char ogrAd[], int ogrYas, int ogrNot, int ogrNo)
{
ogr[ogrNo]._ad = ogrAd;
ogr[ogrNo]._yas = ogrYas;
ogr[ogrNo]._not = ogrNot;
ogrNo++;
return;
}
int main()
{
ogrenci ogr[10];
char ogrIsim[10];
int ogrYas;
int ogrNot;
cout<< ogrNo + 1 << "Numarali Ogrenci Ismi : ";
cin>>ogrIsim;
cout<< ogrNo + 1 << "Numarali Ogreci Yasi : ";
cin>>ogrYas;
cout<< ogrNo + 1 << "Numarali Ogreci Notu : ";
cin>>ogrNot;
ogrKayit(&ogr, &ogrIsim, ogrYas, ogrNot, ogrNo);
Hata çıktısı şu çözemedim bir türlü
cd 'C:\Users\EKREM\Desktop\AlgoritmaCalısması'
C:\MinGW\msys\1.0\bin\make.exe -f Makefile CONF=Debug
"/C/MinGW/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make.exe[1]: Entering directory `/c/Users/EKREM/Desktop/AlgoritmaCal�smas�'
"/C/MinGW/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/algoritmacal_smas_.exe
make.exe[2]: Entering directory `/c/Users/EKREM/Desktop/AlgoritmaCal�smas�'
mkdir -p build/Debug/MinGW-Windows
rm -f "build/Debug/MinGW-Windows/main.o.d"
g++ -c -g -MMD -MP -MF "build/Debug/MinGW-Windows/main.o.d" -o build/Debug/MinGW-Windows/main.o main.cpp
main.cpp: In function 'void ogrKayit(ogrenci*, char*, int, int, int)':
main.cpp:16:20: error: incompatible types in assignment of 'char*' to 'char [10]'
ogr[ogrNo]._ad = ogrAd;
^
main.cpp: In function 'int main()':
main.cpp:51:63: error: cannot convert 'ogrenci (*)[10]' to 'ogrenci*' for argument '1' to 'void ogrKayit(ogrenci*, char*, int, int, int)'
ogrKayit(&ogr, &ogrIsim, ogrYas, ogrNot, ogrNo);
^
make.exe[2]: *** [build/Debug/MinGW-Windows/main.o] Error 1
make.exe[2]: Leaving directory `/c/Users/EKREM/Desktop/AlgoritmaCal�smas�'
make.exe[1]: *** [.build-conf] Error 2
make.exe[1]: Leaving directory `/c/Users/EKREM/Desktop/AlgoritmaCal�smas�'
make.exe": *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 1s)
ogr[ogrNo]._ad = ogrAd;
Bu şekilde char türünden bir diziye atama yapamazsın. "strcpy" ile veya "memcpy + null" ile yapmalısın.
Ups :)
teşekkürler hocam aşağıdaki gibi düzelttim.
void ogrKayit(ogrenciler ogr[], char *ogrAd, int ogrYas, int ogrNot, int ogrNo)
{
strcpy(ogr[ogrNo]._ad, ogrAd);
ogr[ogrNo]._yas = ogrYas;
ogr[ogrNo]._not = ogrNot;
ogrenciNo++;
return;
}
Rica ederim, kolay gelsin :)
Hocam bir sorum daha olacaktı.
Structure dizisini bir fonksiyona verip içerisindeki elemanları değiştirmek istiyorum.
Fonksiyonu kullanırken adresini vererek yapıyordum ama dizi olunca sanırım böyle olmuyor.
Hatam nerede acaba ?
typedef struct {
char name[10];
int age;
int note;
}Student_t;
Student_t students[10];
void StudentRecord(Student_t* student[], char *stName, int stAge, int stNote, int stNo)
{
strcpy(student[stNo]->name, stName);
student[stNo]->age = stAge;
student[stNo]->note = stNote;
stListNo++;
return;
}
StudentRecord(&students, stName, stAge, stNote, stListNo);
Sorunu şu şekilde çözdüm.
void StudentRecord(Student_t *students, char *stName, int stAge, int stNote)
{
strcpy(students->name, stName);
students->age = stAge;
students->note = stNote;
stListNo++;
return;
}
// Kullanım
StudentRecord(&students[stListNo], stName, stAge, stNote);