C++ İçin Yardım
-
yazmıs oldugum programda 3 kisinin ad-soyad- vize - final ve ortalamasını aldırıyorum.
ad ve soyad dizi degiskenlerini char olarak tanımladım.
yapmak istedigim kayıtları ad a göre aratmak istiyorum.
fakat aranan isim kayıtlarda bulundugunda
sadece o kayıta ait olan vize + final + ortalama vb.. bilgilerin ekranda görüntülenmesibi istiyorum.
yardım edebilecek arkadas var mı ?
Program kodları şöyleKod:/* AD VE SOYAD EKLENEREK ARAMALAR GERÇEKLEŞTİRİLECEK */ #include<iostream.h> #include<conio.h> #include <iomanip.h> char ad[3][12]; char soyad[3][12]; int vz[3],fnl[3]; float ort[3]; void fKayitGiris() { int i1; int i2; for (i1=1;i1<=3;i1++) { cout<<i1<<". Kişinin Adını Giriniz = "; cin>>ad[i1]; cout<<i1<<". Kişinin SoyAdını Giriniz = "; cin>>soyad[i1]; cout<<i1<<". Kişinin Vizesini Giriniz = "; cin>>vz[i1]; cout<<i1<<". Kişinin Finalini Giriniz = "; cin>>fnl[i1]; for (i2=1;i2<=3;i2++) { ort[i1]=vz[i1]*0.4+fnl[i1]*0.6; } } } void fKayitGoruntuleme() { int i3; cout<<"Sıra Ad Soyad Vize Final Ortalama Durum\n"; cout<<"---- ----------- ----------- ---- ----- -------- -----\n"; for (i3=1;i3<=3;i3++) { cout<<setw(4)<<i3<<setw(12)<<ad[i3]<<setw(12)<<soyad[i3]<<setw(5)<<vz[i3]<<setw(6)<<fnl[i3]<<setw(9)<<ort[i3]; if (fnl[i3]>=50 && ort[i3]>=60) cout<<" Geçti\n"; else cout<<" Kaldı\n"; } getch(); } void fKayitBulmaSira() { int ara; cout<<"Aranan Kaydın Sırasını Giriniz = "; cin>>ara; cout<<"Sıra Ad Soyad Vize Final Ortalama Durum\n"; cout<<"---- ----------- ----------- ---- ----- -------- -----\n"; cout<<setw(4)<<ara<<setw(12)<<ad[ara]<<setw(12)<<soyad[ara]<<setw(5)<<vz[ara]<<setw(6)<<fnl[ara]<<setw(9)<<ort[ara]; if (fnl[ara]>=50 && ort[ara]>=60) cout<<" Geçti"; else cout<<" Kaldı"; getch(); } void fKayitBulmaAd() { char bul[0][12]; cout<<"Aranan Kaydın Adını Giriniz = "; cin>>bul[0]; if (bul[0][12] == ad[3][12]) { cout<<"Sıra Ad Soyad Vize Final Ortalama Durum\n"; cout<<"---- ----------- ----------- ---- ----- -------- -----\n"; cout<<setw(4)<<"sira"<<setw(12)<<ad[]<<setw(12)<<soyad[]<<setw(5)<<vz[]<<setw(6)<<fnl[]<<setw(9)<<ort[]; if (fnl[]>=50 && ort[]>=60) cout<<" Geçti\n"; else cout<<" Kaldı\n"; } } else {cout<<"Kayit Bulunamadi"<<"\n";} getch(); } main(void) { int sec,tbn,us; setlocale(LC_ALL, "Turkish"); do { system("cls"); cout<<"**************************"<<"\n"; cout<<"*1-Kayıt Giriş *"<<"\n"; cout<<"*2-Kayıt Görüntüleme *"<<"\n"; cout<<"*3-Kayıt Bulma(Sıraya Göre) *"<<"\n"; cout<<"*4-Kayıt Bulma(Ada Göre) *"<<"\n"; cout<<"*5-ÇIKIŞ >=5 *"<<"\n"; cout<<"*****************************"<<"\n"; cout<<"Seçiminiz Nedir (1,2,3,4,5) = "; cin>>sec; system("cls"); if (sec==1) fKayitGiris(); else if (sec==2) fKayitGoruntuleme(); else if (sec==3) fKayitBulmaSira(); else if (sec==4) fKayitBulmaAd(); } while (sec<5); }void fKayitBulmaAd() fonksiyonu kısmında girdiğim kişi bilgilerini isme gör aratması gerkli fakat Kırmızı ve kalın yazılı olan kısımı kaldıgımda program calsısıyor arama yaptırdıgmıda aramayı yapıyor ama aradıgım kişinin ismini ve bilgilerini göstermiyor. Kırmızı kısmı eklediğimde ise sorunn cıkıyor kişi bilgilerini yazıyor ama yalnış bilgi cekiyo doğru bilgileri çekmiyor
bilgisi olan varsa yardım edebilirmi acil...
Ekran çıktısı

1 kayıt giris bölümünü acıyor
2 kayıtları listeleyerek gösteriyor
3 kayıtları sıra numarasına göre arama bölümünü açıyor
4 kayıtları isme göre arama bölümünü açıyor
5 cıkıyo -
5e kadar yetismesi lazim
C++ cilar nerede :S
-
main.cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std; int main(int argc, char *argv[]) { Ogrenci x = {"Yeni", "Harman", 30, 90}; Ogrenciler.push_back(&x); OgrenciEkle("bu", "ikinci ogrenci", 10,40); OgrencileriYazdir(); OgrenciBul("bu"); OgrenciBul("Yeni"); cout << "Press the enter key to continue ..."; cin.get(); return EXIT_SUCCESS; }
DataUtils.hpp#ifndef DATAUTILS_H #define DATAUTILS_H #include #include #include typedef struct Ogrenci { std::string Ad; std::string Soyad; int Vize; int Final; }ogr; std::vector<Ogrenci*> Ogrenciler; void OgrenciBul(std::string ad) { std::vector<Ogrenci*>::const_iterator c_it; for(c_it = Ogrenciler.begin(); c_it < Ogrenciler.end(); ++c_it) { if ( (*c_it)->Ad == ad ) { std::cout << "Adi " << ad << " olan ogrenciler:" << "\n----------------------------------------------" << std::endl << "Ad: " << (*c_it)->Ad << std::endl << "Soyad: " << (*c_it)->Soyad << std::endl << "Vize: " << (*c_it)->Vize << std::endl << "Final: " << (*c_it)->Final << std::endl << "Ortalama: " << (*c_it)->Vize * 0.4 + (*c_it)->Final * 0.6 << std::endl << "----------------------------------------------" << std::endl; } } } void OgrencileriYazdir() { std::vector<Ogrenci*>::const_iterator c_it; for(c_it = Ogrenciler.begin(); c_it < Ogrenciler.end(); ++c_it) { std::cout << "----------------------------------------------" << std::endl << "Ad: " << (*c_it)->Ad << std::endl << "Soyad: " << (*c_it)->Soyad << std::endl << "Vize: " << (*c_it)->Vize << std::endl << "Final: " << (*c_it)->Final << std::endl << "Ortalama: " << (*c_it)->Vize * 0.4 + (*c_it)->Final * 0.6 << std::endl << "----------------------------------------------" << std::endl; } } void OgrenciEkle(std::string ad, std::string soyad, int vize, int final) { Ogrenci * tmp = new Ogrenci; tmp->Ad = ad; tmp->Soyad = soyad; tmp->Vize = vize; tmp->Final = final; Ogrenciler.push_back(tmp); } #endifYeniHarman tarafından 21/Kas/12 16:06 tarihinde düzenlenmiştir
Geri kalan düzenlemeleri de siz yaparsınız.
