C++ kod hatası

Fuat Buyuk

Centipat
Katılım
18 Mayıs 2020
Mesajlar
5
#include <iostream>
using namespace std;
void swapArr(int* Arr, int sz)
{
for (size_t i = sz; i> 0; i = i--)
{
cout << Arr << ' ';
}

}
int main()
{
int myArray[] = { 10,20,30,40,50,60 };
int* ptr = myArray;
int sz = sizeof(myArray) / sizeof(int);
swapArr(ptr, sz);
system("PAUSE");
return 0;

}

Dizinin tüm elemanlarının yerini değiştirmek için dönüş değeri olmayan swapArr() adlı bir fonksiyon yazınız. Bu fonksiyonu kullanarak dizinin elemanlarını herhangi bir ek dizi oluşturmadan tersine çevirin. Ör: {0,10,20,30} dizisi swapArr()'den sonra {30,20,10,0} gibi olmalıdır.

Şeklinde bir vize sorum var arkadaşlar bayağıdır deniyorum ama yazdığım kod void olduğu için return edip durduramıyorum. 0'a eşitleyince nasıl değiştireceğim hakkında bilgisi olan varsa yazabilir mi?
 
Son düzenleyen: Moderatör:
#include <iostream>
using namespace std;
void swapArr(int Arr[], int sz)
{
for (int i = (sz-1); i > -1; i = i--)
{
cout << Arr << ' ';
}

}
int main()
{
int myArray[] = { 10,20,30,40,50,60 };
int* ptr = myArray;
int sz = sizeof(myArray) / sizeof(int);
swapArr(myArray, sz);
system("PAUSE");
return 0;

}
Bu şekilde yazınca zaten dizi bitince duruyor. Senin yazdığın kodda output dizi elemanlarının adresleri olur.
 
#include <iostream>
using namespace std;
void swapArr(int Arr[], int sz)
{
for (int i = (sz-1); i > -1; i = i--)
{
cout << Arr << ' ';
}

}
int main()
{
int myArray[] = { 10,20,30,40,50,60 };
int* ptr = myArray;
int sz = sizeof(myArray) / sizeof(int);
swapArr(myArray, sz);
system("PAUSE");
return 0;

}
Bu şekilde yazınca zaten dizi bitince duruyor. Senin yazdığın kodda output dizi elemanlarının adresleri olur.
dizinin 0. elemanını almak için i >=0 ifadesine çevirmem gerekiyo bunu yapıncada anlamadığım bir şekilde çıktı sonsuz bi şekilde dönüyo ve atıyor beni
 
Sorunu doğru anladıysam sonsuz döngüye girmemesi için 0 dan başlatıp i-- şeklinde yaparsan döngü durmaz sz'ye hiçbir zaman ulaşamayacağı için. Bu yüzden arr[sz] yani dizinin son elemanından başlatarak 0. elemana gelince durdurman lazım.
for (size_t i = Arr[sz]; i >= 0; i--)
{
cout << Arr << ' ';
}
böyle birşey yazdım ama gene hata verdi nerelerde değişiklik yapmam gerekiyo
ayrıca çok teşekkür ederim :)))

Kod:
#include <iostream>
using namespace std;
void swapArr(int* Arr, int sz)
{
    for (size_t i = Arr[sz]; i >= 0; i--)
    {
        cout << Arr[i] << ' ';
    }

    

    


}
int main()
{
    int myArray[] = { 10,20,30,40,50,60 };
    int* ptr = myArray;
    int sz = sizeof(myArray) / sizeof(int);
    swapArr(ptr, sz);
    system("PAUSE");
    return 0;

}
Kodu direkt paste yapmak yerine code olarak ekleyebilirseniz daha rahat okuyabiliriz.
ekledim hocam
 
Son düzenleme:
for (size_t i = Arr[sz]; i >= 0; i--)
{
cout << Arr << ' ';
}
böyle birşey yazdım ama gene hata verdi nerelerde değişiklik yapmam gerekiyo
ayrıca çok teşekkür ederim :)))
Burada i değişkeni size_t değil int türünden olmalı. Zaten aşağıda i'ye atadığın değerlerin hepsi integer. Ayrıca for döngüsü içinde Arr[sz] değil sz'ye eşitlenmeli. Dizinin son elemanını değil boyutunu vermelisin döngünün başlangıcına. Bu değişikleri yapıp derleyince hata almadım ben online compiler üzerinde.
 
teşe
Kod:
#include <iostream>
using namespace std;
int main()
{
    int *myArr;
    int n;
    int i = 0;
    while (i<100)
    {
        for (int n = 0; n <=100 ; n++)
        {
            if (n%10==0)
            {
                myArr[i] = n;
                i++;
            }
        }
    }
    for (size_t i = 0; i < 100; i++)
    {
        cout << myArr[i] << ' ';
    }


    

    system("PAUSE");
    return 0;
}
Burada i değişkeni size_t değil int türünden olmalı. Zaten aşağıda i'ye atadığın değerlerin hepsi integer. Ayrıca for döngüsü içinde Arr[sz] değil sz'ye eşitlenmeli. Dizinin son elemanını değil boyutunu vermelisin döngünün başlangıcına. Bu değişikleri yapıp derleyince hata almadım ben online compiler üzerinde.
teşekkür ederim hocam programı çalıştırdım size bir soru daha sorabilirmiyim
Tam sayı türünden boyutu belirtilmemiş ve içerisinde 0-100 arasındaki sayılardan 10'un katları olan sayıları (0,10,...,90,100 gibi) tutan bir dizi oluşturunuz. şöyle bir sorum daha var ama dizinin içine döngü kuramam nasıl yapıcağım hakkında bir fikriniz varmı acaba
Şu diğer konuya yazdığım çözüme bakabilir misiniz? Sanırım iki soru aynı.

https://www.technopat.net/sosyal/konu/c-veya-c-oedevim.930147/#post-5810705
hocam içerik için çok teşekkür ederim c++ la çözebildim konuyu sonunda yalnız
Tam sayı türünden boyutu belirtilmemiş ve içerisinde 0-100 arasındaki sayılardan 10'un katları olan sayıları (0,10,...,90,100 gibi) tutan bir dizi oluşturunuz.
şöyle bir soru var bunda takıldım dizinin içine nasıl tanımlıyacağım 0-100 arasındaki sayıları
 
Son düzenleme:
hocam içerik için çok teşekkür ederim c++ la çözebildim konuyu sonunda yalnız
Tam sayı türünden boyutu belirtilmemiş ve içerisinde 0-100 arasındaki sayılardan 10'un katları olan sayıları (0,10,...,90,100 gibi) tutan bir dizi oluşturunuz.
şöyle bir soru var bunda takıldım dizinin içine nasıl tanımlıyacağım 0-100 arasındaki sayıları

Recursive function ile yapılabilir.
 
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı