C++ fonksiyon kullanımı ve hatalar

Başlatan mhrm, 01 Kasım 2016 - 10:44:55

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

mhrm

arkadaşlar merhaba,C++'ta matematik ağırlıklı bir program yazmaktayım ve sıkıntı yaşadığım bir kısım var kısaca anlatmak gerekirse.
main fonksiyonu içinde tanımladığım bir ifade ve vektörü bir fonksiyon içerisine çağırıyorum ve fonksiyon içerisinde bazı işlemler sonunda bu ifadenin değeri belli oluyor ve sonrasında vektörün boyutu belirleniyor..
fonksiyon içerisinde bu vektörü yazdırğımda sıkıntı yok fakat fonksiyon sonlanınca main fonksiyonunda değerleri yazdırıp baktığımda değişmiş ve alakasız bir hal aldığını görüyorum..bu sıkıntı neden kaynaklanır ve nasıl düzeltebilirim..

travego0403

Fonksiyon içerisinden return ile tek bir değer döndürebilirsin. Eğer başka bir değişken falan döndürmeyeceksen buvektörü döndürüp devam edebilirsin. yok başka değerlerde döndürmem gerekiyor diyorsan o zaman vektörüne işaret eden bir göstericiyi(pointer) de fonksiyona argüman olarak aktarıp işlemleri bu gösterici üzerinden yapacaksın. bi başka yöntem ise main içerisinde tanımladığın vektörü argüman olarak fonksiyona aktaracaksın ama değer olarak değil referans olarak. Gerçi vektörler varsayılan olarak değer olarak mı yoksa referans  olarak mı aktarılıyordu onu hatırlamıyorum.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

mhrm

şu şekilde konuyu  açsam daha iyi olur heralde main de double *A diye bir şey tanımlayıp boyut vb. hiçbir işlem yapmadan fonk1(double *A) çağırdıktan sonra boyutunun belirlenmesi dahil birçok işlem yapıyorum ve son olarak foksiyon bitiminde istediğim hale gelen vektör fonksiyon bittikten sonra  değişmiş olarak görüyorum..
sanki fonksiyon bitince vektörün içerisine başka bir işlem yapılmış gibi.
görmek istediğim sayılardan çok farklı ve anlamsız değerlerle dolu olarak görüyorum.

travego0403

double tipinde bir işaretçi ile bir vektörü mü göstermeye çalışıyorsun?

"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

mhrm

double tipinde bir vektör sadece bir yer ayırma olarak kullandım adres tutuyorum ama ne kadarlık bir adres tutma kısmını fonksiyonun içinde yapıyorum yanlış bir durum mu var bunda

ekremsenturk

#5
İşlenecek değerleri diğer function'lar içinde belirle ve diğer funtion'lar içinde uygula ve main içinden çalıştır. Mantık  bu şekilde yürür. Main tek funtion ise, o zaman main içinde tüm işlemleri yapabilirsin.
topla(x,y)
  int = x
  int = y
  int = z
  z = x + y
return

main()
   cin x
   cin y
   topla(x,y)
   cout z
return


şeklinde

travego0403

Ne kadarlık bir adres tutma kısmını bırak program hesaplasın.
vector<double> *v  ile bir pointer oluşturdun.
fonksiyon(v) ile fonksiyona aktardın.
v= new vector<double>() ile bir nesne oluşturdun.
v->insert() ile eklemeler yaptın

Böyle bir senaryoda neden adres hesaplamalarına ihtiyaç duyuyorsun ki. Vektör zaten dinamik olarak büyüyüp küçülen bir veri yapısı değil mi?

C++ ustası değilim temel düzeyde biliyorum sadece yardımcı olmaya çalışıyorum.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

mhrm

evet bu şekilde daha önce düşünmemiştim işimi çözer diye düşünüyorum herkese teşekkür ederim sağolun..