crackedboy86 Mesaj tarihi: Aralık 6, 2009 Paylaş Mesaj tarihi: Aralık 6, 2009 Arkadaşlar merhaba, C de polinom işlemlerini yapan bir program hazırlıyorum. Şurada takıldım yardımınıza ihtiyacım var. Şimdi kullanıcı polinom ifadesini sadece katsayı ve üs şeklinde değil, uzun olarak tam string giriyor. Mesela şöyle: -x^3 -6x^2 + 4x + 22. Ben bu ifadeyi alıp bir işlemden geçirerek içindeki fazla boşlukları temizliyor ve şu hale getiriyorum. -x^3-6x^2+4x+22. Daha sonra ifadeyi biraz parçalamak istedim. Amacım önce -x^3, sonra -6x^2, sonra 4x gibi elde etmek. Fakat benim yazdığım koda göre doğal olarak + ve - işaretlerine göre parçalanma yapıyor sonuçlar ise işaret kaygısı olmadan x^3, 6x^2 şekline geliyor. Benim mantığa göre ifade nasıl parçalanır ? Veya amacıma daha uygun nasıl elde edebilirim katsayı ve üsleri işaretleri (+,-) dikkate alarak. Yardımlarınız için şimdiden teşekkür ederim. Parçalama yapan kodum şu: dst değişkeni polinom ifadesi içeren string. char *pch = strtok (dst," +-" ); // Delimiters while (pch != NULL) { printf (" %s",pch ); pch = strtok (NULL, " +-" ); } Polinom => 2x^4 + 5x^3 -2x^ -4 Ekran çıktısı => 2x^4 5x^3 2x^ 4 Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
riglous Mesaj tarihi: Aralık 6, 2009 Paylaş Mesaj tarihi: Aralık 6, 2009 Pardon soruyu yanlis anlamisim.. Ama asagidaki, ileride karsilasacagin bir sorun.. Simdi ki cozumun basit. Her ifadede - olmasi aslinda iki ifade arasinda + olmasindan kaynaklanir. Yani sen -'lerin hepsini +-'lerle replace edersen, daha sonra bolerken de +'lara gore bolersen, sorunun cozulecektir. Matematikte parantezlerin +-'ye gore ustunlugu vardir. Insanlar ust olarak (4+2) yazarsa ve sen +'lara gore bolersen yanlis olur. Yapman gereken isaretlere gore ayirmak. Bu konuya precedence denir. http://en.wikipedia.org/wiki/Order_of_operations#Programming_languages Senin ihtiyacin olan 1, 3, 4 ve 14 Expression'lari bunlara gore grupla, tercihen recursive olarak. Ayrica daha once yapilan uygulamalarin ust ve carpan almalarinin bir nedeni var.. Senin de gruplaman bence ilk olarak ust ve carpanlarina gore olmali. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Brigand Mesaj tarihi: Aralık 6, 2009 Paylaş Mesaj tarihi: Aralık 6, 2009 Reverse Polish notation diye arat Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
crackedboy86 Mesaj tarihi: Aralık 7, 2009 Konuyu açan Paylaş Mesaj tarihi: Aralık 7, 2009 Arkadaşlar tavsiyeleriniz sayesinde bir basamak daha çıkabildim. Şimdi girilen ifade terimlerine ayrılmış olarak elde edilebiliyor. Yani ifade 2x^4 + 5x^3 -2x^ -4 ise çıktı olarak her birim terim şu şekilde gözüküyor. 2x^4 5x^3 -2x^ -4. Şimdi, riglous usta ben bu her terim için katsayı ve üslere nasıl ulaşacam string içindeler hala. Aynı zamanda mesela katsayı 1 için adam direk 1x değilde x giriyor veya en sona direk 4 rakamını yazıp bitiriyor gibi. Biraz daha akıl vermen mümkün müdür? Ben buradaki üs ve katsayıları tek tek alıp bir linked list içinde tutacam, tabii önce bu + lara göre parçaladığımız ifadedeki sayılara ulaşmam lazım. Yardımlarını bekliyorum, teşekkürler, saygılar Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Aralık 7, 2009 Paylaş Mesaj tarihi: Aralık 7, 2009 Bir gramer yazıp ona göre parse edebilirsin. Mesela: A : B | C^ | C^N B : N | -N C : D | -D D : x | Nx N : [0-9] | [0-9]N İlk önce string içinde x var mı diye bakarak başlayabilirsin. X yoksa sabittir (B), varsa C^ ya da C^N. Sonra C'nin başında - var mı diye bakarsın. Sonra x'ten önce rakam var mı diye bakarsın vs. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
riglous Mesaj tarihi: Aralık 7, 2009 Paylaş Mesaj tarihi: Aralık 7, 2009 Oldu... prolog dersi de ver istersen adam daha baslamadan CS'i biraksin :) Terimlere tek tek bak. Sen neyin exponent, neyin coefficient oldugunu nasil anliyorsun? Yani sana birisi boyle bir text verse, nelere dikkat ederek anliyorsun? once biraz dusun, cevabi bulamazsan bakarsin x varsa, onundeki sayiyi aliyorsun; tum string'in basindan, x'in oldugu noktaya kadar. Exponent oldugunu nasil anliyorsun? ^ karakteri var mi diye bakiyorsun, varsa o karakterden, tum string'in sonuna kadar ne var ne yoksa aliyorsun. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
di Mesaj tarihi: Aralık 7, 2009 Paylaş Mesaj tarihi: Aralık 7, 2009 Bu tip durumlarda hep "regular expressions'in gozunu seveyim" diye daliyorum ben olaya. Kendim cikaramasam bile illaki oluyor benzer bi ornegi. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
crackedboy86 Mesaj tarihi: Aralık 20, 2009 Konuyu açan Paylaş Mesaj tarihi: Aralık 20, 2009 Ustalar merhabalar, yardımlarınız için çok teşekkür ederim. Vize haftası olduğu için bir süre bakamadım polinom projesine. Şu ana kadar polinom toplama, çıkarma, çarpma, evaluate vs. yaptım onları. Son olarak Polinom fonksiyonu için grafik çizme işi kaldı. X için değer aralığı ve ifade veriliyor, ben ifade ve X aralığına göre Y leri hesaplatıyorum. Buraya kadar tamam. Şimdi ekrana çizmek için iki boyutlu bir array kullanıyorum. İki boyutlu diziyi iç içe iki for döngüsüyle gezerken o "kutucuğa * karakteri basmalı mıyım basmamalı mıyım?" kısmında takıldım, kontrolü sağlayamadım. Array [25][80] şeklinde, gelen fonksiyonda örnek olarak şu olsun: 0.004x^3 + 0.04x^2 - 1.5x - 4.3. X için aralık şu: -30 __ +30 Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Fly Mesaj tarihi: Aralık 20, 2009 Paylaş Mesaj tarihi: Aralık 20, 2009 tam anlamadım dediğini, en bodoslama şekliye şöyle grafik çizdirebilirsin : polinomun x'in verilen değer aralığında değerlerini alırsın, mesela -30'dan 1 arttıra arttıra 30'a kadar. ne kadar sık olursa o kadar detaylı olur ardından bu değerlerin max/minini belirle, grafiği satır satır çizeceğimiz için (klasik printf vsden başka bir yöntem yoksa) üstten başlayacağız, ihtiyacımız var. grafiği büyüklüğüne bağlı bir for döngüsü, en uğraştırmayan şekliyle en büyük ve küçük değer arası ne kadar sayı olduğuna bağlı miktarda (100 -200 arası çıkıyorsa 300 veya orantılı miktarda yani) döndürürsün. tabi ondan önce her döngünün hangi sayı aralığını kapsadığını da belirlemen lazım, en düşük sayıyı 0'a itecek şekilde belirle (üstteki örneğe göre 300,0 olsun yani), ardından misal 150 döngü olsun dediysen, k. döngü için (150-(k-1))*2>sayi>=(150-k)*2 aralığındaki tüm sayıları göze alabilirsin örnek olarak. son olarak döngü dönerken de sırayla x'leri tarayacak, x'in değeri istenen sayı aralığındaysa bir nokta, değilse boşluk bırak şeklinde ilerlet. tabi boşluk ve nokta aynı miktarda mı yer kaplıyor o kadarını bilmiyorum. x=0 ve döngü tam y=0 a denk geliyorken de |, -- vs ile de eksen çizgilerini çizdirtebilirsin gerekiyorsa . . . . . . . . . gibi bişeyler olur yani -4,4 aralığı için |x| grafiği Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
grobary Mesaj tarihi: Aralık 27, 2009 Paylaş Mesaj tarihi: Aralık 27, 2009 Arkadaşlar benim de acilen C de bağlantılı listelerle polinomları toplayıp çarpan programa ihtiyacım var.Yardımcı olursanız çooook sevinirim Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
riglous Mesaj tarihi: Aralık 27, 2009 Paylaş Mesaj tarihi: Aralık 27, 2009 Yapmak istedigini tam olarak anlatirsan yardimci olabiliriz tabii ki ama "bana odev lazim" diye bir mesaja pek cevap veremiyoruz. Nasil olacak program, basta bunu anlatman lazim. Ilk bakista benim aklima gelen, "listeyi topla() diye bir fonksiyona veriyorsun, sana sonucunu donduruyor" gibi bir program. Bir de dedigim gibi, spesifik sorular sorarsan daha yararli olur senin icin. Ha bir de, biz odev yapmiyoruz. De ki odev yaptirmak gerekti, o zaman da "bana su lazim" demen bir sey ifade etmiyor; projelendirilmis taslagini buraya koymadan kimse bir sey yapamaz. Son olarak da okul ve ders belirtirsen sevinirim. Dusunmeye baslaman icin bir nokta vermek lazim. Tahminim, her bir node tek bir ifadeyi temsil edecek. Buna gore her bir node'un ozellikleri ne olabilir sence? katsayi, ust bilgisi Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar