[Çözüldü] dizilerde hata veriyor

Başlatan İskender, 31 Ocak 2013 - 23:40:45

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

İskender



http://sta.sh/016pnkerk567

gördüğünüz gibi dizinin olduğu yerde hata veriyor yardım edebilirmisiniz..?

Birde //sonuc = sayi1 (islem[islemsec]) sayi2;olan yeri nasıl düzenlersem çalışır ??

egcodes

; koymamışsın.



int islem[5];
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d

ct

islem[5]'den sonra noktalı virgül olması gerek miyor mu? Sonuç için bir kontrol yazılsa + ise artı işlemi yapılsa daha güzel olabilir. Hatta ayrı bir sınıf da yazılabilir bunun için. Bu sınıf oluşturulurken mesela değer + ise ona göre kendi içindeki bir fonksiyonu/methodu çalıştırabilir.

İskender

@egcodes buyrun çıktı :srgnaras@pandora:~$ cd Masaüstü
srgnaras@pandora:~/Masaüstü$ g++ Rasgele.cpp -o Rasgele
Rasgele.cpp: 'int main()' fonksiyonunda:
Rasgele.cpp:12:16: hata: 'const char*' türünden 'int' türüne dönüşüm geçersiz [-fpermissive]
Rasgele.cpp:13:13: hata: 'const char*' türünden 'int' türüne dönüşüm geçersiz [-fpermissive]
Rasgele.cpp:14:13: hata: 'const char*' türünden 'int' türüne dönüşüm geçersiz [-fpermissive]
Rasgele.cpp:15:16: hata: 'const char*' türünden 'int' türüne dönüşüm geçersiz [-fpermissive]
Rasgele.cpp:21:46: hata: no match for 'operator>>' in 'std::operator<< <std::char_traits<char> >((* &(&(& std::cout.std::basic_ostream<_CharT, _Traits>::operator<< <char, std::char_traits<char> >(sayi1))->std::basic_ostream<_CharT, _Traits>::operator<< <char, std::char_traits<char> >(islem[((int)islemsec)]))->std::basic_ostream<_CharT, _Traits>::operator<< <char, std::char_traits<char> >(sayi2)), ((const char*)"=")) >> std::endl'
Rasgele.cpp:21:46: bilgi: candidates are:
In file included from /usr/include/c++/4.7/string:55:0,
                 from /usr/include/c++/4.7/bits/locale_classes.h:42,
                 from /usr/include/c++/4.7/bits/ios_base.h:43,
                 from /usr/include/c++/4.7/ios:43,
                 from /usr/include/c++/4.7/ostream:40,
                 from /usr/include/c++/4.7/iostream:40,
                 from Rasgele.cpp:2:
/usr/include/c++/4.7/bits/basic_string.tcc:998:5: bilgi: template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::basic_string<_CharT, _Traits, _Alloc>&)
/usr/include/c++/4.7/bits/basic_string.tcc:998:5: bilgi:   template argument deduction/substitution failed:
Rasgele.cpp:21:46: bilgi:   'std::basic_ostream<char>' is not derived from 'std::basic_istream<_CharT, _Traits>'
In file included from /usr/include/c++/4.7/istream:873:0,
                 from /usr/include/c++/4.7/iostream:41,
                 from Rasgele.cpp:2:
/usr/include/c++/4.7/bits/istream.tcc:957:5: bilgi: template<class _CharT2, class _Traits2> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT2*)
/usr/include/c++/4.7/bits/istream.tcc:957:5: bilgi:   template argument deduction/substitution failed:
Rasgele.cpp:21:46: bilgi:   'std::basic_ostream<char>' is not derived from 'std::basic_istream<_CharT, _Traits>'
In file included from /usr/include/c++/4.7/istream:873:0,
                 from /usr/include/c++/4.7/iostream:41,
                 from Rasgele.cpp:2:
/usr/include/c++/4.7/bits/istream.tcc:925:5: bilgi: template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT&)
/usr/include/c++/4.7/bits/istream.tcc:925:5: bilgi:   template argument deduction/substitution failed:
Rasgele.cpp:21:46: bilgi:   'std::basic_ostream<char>' is not derived from 'std::basic_istream<_CharT, _Traits>'
In file included from /usr/include/c++/4.7/iostream:41:0,
                 from Rasgele.cpp:2:
/usr/include/c++/4.7/istream:725:5: bilgi: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&)
/usr/include/c++/4.7/istream:725:5: bilgi:   template argument deduction/substitution failed:
Rasgele.cpp:21:46: bilgi:   'std::basic_ostream<char>' is not derived from 'std::basic_istream<char, _Traits>'
In file included from /usr/include/c++/4.7/iostream:41:0,
                 from Rasgele.cpp:2:
/usr/include/c++/4.7/istream:730:5: bilgi: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char&)
/usr/include/c++/4.7/istream:730:5: bilgi:   template argument deduction/substitution failed:
Rasgele.cpp:21:46: bilgi:   'std::basic_ostream<char>' is not derived from 'std::basic_istream<char, _Traits>'
In file included from /usr/include/c++/4.7/iostream:41:0,
                 from Rasgele.cpp:2:
/usr/include/c++/4.7/istream:772:5: bilgi: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char*)
/usr/include/c++/4.7/istream:772:5: bilgi:   template argument deduction/substitution failed:
Rasgele.cpp:21:46: bilgi:   'std::basic_ostream<char>' is not derived from 'std::basic_istream<char, _Traits>'
In file included from /usr/include/c++/4.7/iostream:41:0,
                 from Rasgele.cpp:2:
/usr/include/c++/4.7/istream:777:5: bilgi: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char*)
/usr/include/c++/4.7/istream:777:5: bilgi:   template argument deduction/substitution failed:
Rasgele.cpp:21:46: bilgi:   'std::basic_ostream<char>' is not derived from 'std::basic_istream<char, _Traits>'



@ct sınıf oluşturmayı bilmiyorum ve kontrol mevzusuna gelince c#da direk bu şekilde yapıyordum c++ da fazladan birşey eklemden yapamazmıyım ki?

ct

@İskender,

Sınıf kullanmayacaksanız ve öğrenmek istemiyorsanız neden C++ ve C# kullanıyorsunuz?

İskender

öğrenmicem demedim ki ben "sınıf kullanmayı bilmiyorum" dedim..  :P  @ct
özetlemem gierekirse öğrenciyim okulda c# görüyorum ama c++ a hevesim var.. orada ögrendiğimi c++'a uyguluyorum böylece azar azar öğreniyorum.. :)

ct

Öğrenmekten korkmayın ama :)

islem sanırım bir string döndürüyor. Javacıyım o yüzden C++'a tam hakim değilim ancak şuna bakalım: 1 "bu bir string" 1 ile 1 "+" 1 aynı şey oluyor ve bu 1+1'e eşit değil. Yani bir işlem olmuyor. Onun yerine her bir dizi değerini kontrol edip ona göre işlemler yaptırabilirsin. if - else kontrol blokları işini görecektir.

egcodes

@İskender selam.


; koyduktan sonra 11 satırdaki hata çözülmüş. Lakin integer'lardan oluşan bir diziye "+" string ataması yapıyorsun hataların sebebi onlar.




Kolay gelsin.
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d

İskender

@egcodes selamlar


sorunu çözdüm.. dizi kullanmadan yaptım ama olsun .. Şu an goto yapısı üzerinde çalışıyorum ama bazı sorunlarım var.. Onlarıda aşarsam bu programı tamamlayacağım..


#include <stdlib.h>
#include <iostream>
#include <time.h>
using namespace std;

int main()
{
    rastgele:
    srand (time(NULL));

    int sayi2=0,sayi1=0,islemsec=0,cevap=0,sonuc=0;
    int yeni,e,h;

    islemsec=rand()%5;
    sayi1=rand()%10;
    sayi2=rand()%10;

   /* cout<<islemsec<<endl;
    cout<<sayi1<<endl;
    cout<<sayi2<<endl;*/

    yanlis:

    if(islemsec==0)
    {
        cout<<sayi1<<"+"<<sayi2<<"=";
        cin>>cevap;
        sonuc=sayi1+sayi2;
    }
    if(islemsec==1)
    {
        cout<<sayi1<<"-"<<sayi2<<"=";
        cin>>cevap;
        sonuc=sayi1-sayi2;
    }
    if(islemsec==2)
    {
        cout<<sayi1<<"*"<<sayi2<<"=";
        cin>>cevap;
        sonuc=sayi1*sayi2;
    }
    if(islemsec==3)
    {
        cout<<sayi1<<"/"<<sayi2<<"=";
        cin>>cevap;
        sonuc=sayi1/sayi2;
    }

    if(sonuc==cevap)
    {
        cout<<"Bravo işlemi tamamladınız.."<<endl;
        cout<<"Yeni bir işlem yapmak ister misiniz?(e/h) :";
        cin>>yeni;
        if(yeni==e)
        {
            goto rastgele;
        }
    }
    else
    {
        cout<<"Yanlış cevap... Tekrar deneyin.."<<endl;
        goto yanlis;

    }


}

ikinci goto sonsuz döngüye giriyor 1. gotoda da cevap vermiyorum..

egcodes

c++ öğrenmek istediğini yazmışsın. O nedenle tavsiyem goto kullanmadan programı yeniden yazman. Şimdilik problemini çok güzel çözer ama ileride sana çok büyük zararları olur. Hem goto olmadan yazarsan c++ daha iyi öğrenmiş olursun.


İyi çalışmalar.
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d

İskender

goto yerine ne kullanabilirim ki ?


egcodes

if else else if yapıları ile yapmaya çalış. Konu c++ nasıl öğrenilir'e döndü ama bence program yazımına teoriye hakim olduktan sonra başla. Çünkü mesela int x[5]; olusturdugun diziye char atamaya çalışmak teori eksikliğini gösterir. Bu şekilde çok yol alamazsın.


İyi çalışmalar.
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d

İskender

teşekkürler :D haklısın konu iyice c++ nasıl öğrenilire döndü en iyisi kapatmak.. @ct, @egcodes teşekkürler