Üzgünüm ama testcaselerde size yazılıyor.Bir kere C ve C++'ta dizi boyutunu kullanıcıdan alamazsın, ki olay zaten orada başlıyor. VS Code'a kodunu yapıştırır yapıştırmaz bağırmaya başladı zaten:
Eki Görüntüle 2044382
STL kütüphanesini kullanmana izin verilmiyor ise new operatörünü kullan. Bir kısıtlama yoksa da std::vector kullan.
Ayrıca derleyip çalıştırdım kodunu, algoritman da yanlış. Onu da sen bul, tüm ödevi ben yapamam. FakatO(n)zamanda bunu yapmanın bir yolu olabileceğini düşünüyorum.
Yazılmıyor demedim ki. Statik allokasyon ile dinamik allokasyonun ne anlama geldiğini biliyor musun?Üzgünüm ama testcaselerde size yazılıyor.
Madem "belirttiniz". Kod şöyle olmalıydı. Dediğim gibi sizinki hatalı ve okunaksız.Kodun ne yapması gerektiğini belirtmişim.
#include <iostream>
#include <array>
#include <string>
#include <sstream>
#define ARRAY_SIZE N
void getArrayInput(std::array<int, ARRAY_SIZE>& arr) {
std::string input;
std::getline(std::cin, input);
std::istringstream iss{ input };
for (auto i{ 0 }; i < ARRAY_SIZE; ++i) {
iss >> arr[i];
}
}
bool isArraySymmetric(std::array<int, ARRAY_SIZE>& arr) {
auto start{ arr.begin() };
auto end{ arr.rbegin() };
while (*start == *end) {
++start;
++end;
}
return start == arr.end();
}
int main() {
std::array<int, ARRAY_SIZE> arr;
getArrayInput(arr);
std::cout << "The array is " << (isArraySymmetric(arr) ? "symmetrical\n" : "asymmetrical\n");
return 0;
}
Bilse şunu dediğimde hatasını anlardı.Yazılmıyor demedim ki. Statik allokasyon ile dinamik allokasyonun ne anlama geldiğini biliyor musun?
O şekilde dinamik boyutlu C array'i oluşturamazsınız.
Fonksiyonlara daha geçmediğim için kendi yazdığım kodu attım.Ayrıca kurs türkçe değil.Türkçemin kötü olmasının sebebi hiç türkiyede yaşamamış olmam.Madem "belirttiniz". Kod şöyle olmalıydı. Dediğim gibi sizinki hatalı ve okunaksız.
Kod:#include <iostream> #include <array> #include <string> #include <sstream> #define ARRAY_SIZE N void getArrayInput(std::array<int, ARRAY_SIZE>& arr) { std::string input; std::getline(std::cin, input); std::istringstream iss{ input }; for (auto i{ 0 }; i < ARRAY_SIZE; ++i) { iss >> arr[i]; } } bool isArraySymmetric(std::array<int, ARRAY_SIZE>& arr) { auto start{ arr.begin() }; auto end{ arr.rbegin() }; while (*start == *end) { ++start; ++end; } return start == arr.end(); } int main() { std::array<int, ARRAY_SIZE> arr; getArrayInput(arr); std::cout << "The array is " << (isArraySymmetric(arr) ? "symmetrical\n" : "asymmetrical\n"); return 0; }
Bilse şunu dediğimde hatasını anlardı.
#include <iostream>
#include <array>
#include <string>
#include <sstream>
#define ARRAY_SIZE N
int main(){
std::array<int, ARRAY_SIZE> arr;
std::string input;
std::getline(std::cin,input);
std::istringstream iss{input};
for(auto i{0};i<ARRAY_SIZE;++i){
iss>>arr[i];
}auto start{arr.begin()};
auto end{arr.rbegin()};
while (*start==*end){
++start;
++end;
}
std::cout<<"The array is "<<(start==arr.end()?"symmetrical\n":"asymmetrical\n");
}
O şekilde dinamik boyutlu C array'i oluşturamazsınız.
Nerede gördünüz ısrar etdiğimi?Yanlışta ısrar etmek de ayrı bir mantalite, öğrenmek mi istiyorsunuz yoksa bildiğinizi okumak mı? Forum sakinleri için problem yok, günün sonunda zararlı çıkan yine siz olacaksınız. Bu ve önceki konuda yazılanlara dikkat edip, öğrenmeye çalışın yoksa bir cacık gelişemezsiniz.
Kodum doğru olsa neden sizinle paylaşayım ki zaten?Kod okunuyor.Türkçenize laf eden olmadı. Aradaki yazım farkını göremiyorsanız bir de şöyle deneyelim. Daha okunaklı oldu gerçekten. Hem daha az satır var. JS kodu gibi hızlı da çalışır.
Gözlerim kanadı.
Kod:#include <iostream> #include <array> #include <string> #include <sstream> #define ARRAY_SIZE N int main(){ std::array<int, ARRAY_SIZE> arr; std::string input; std::getline(std::cin,input); std::istringstream iss{input}; for(auto i{0};i<ARRAY_SIZE;++i){ iss>>arr[i]; }auto start{arr.begin()}; auto end{arr.rbegin()}; while (*start==*end){ ++start; ++end; } std::cout<<"The array is "<<(start==arr.end()?"symmetrical\n":"asymmetrical\n"); }
Ne öğrendiğinizi, neleri kullanma izniniz olduğunu söylemediniz. Hatalı ve okunmayan bir kod paylaştınız. Üçüncü kez belirtiyorum.
Kodun neresinin okunmadığını tam olaray söyleye bilirmisiniz?Türkçenize laf eden olmadı. Aradaki yazım farkını göremiyorsanız bir de şöyle deneyelim. Daha okunaklı oldu gerçekten. Hem daha az satır var. JS kodu gibi hızlı da çalışır.
Gözlerim kanadı.
Kod:#include <iostream> #include <array> #include <string> #include <sstream> #define ARRAY_SIZE N int main(){ std::array<int, ARRAY_SIZE> arr; std::string input; std::getline(std::cin,input); std::istringstream iss{input}; for(auto i{0};i<ARRAY_SIZE;++i){ iss>>arr[i]; }auto start{arr.begin()}; auto end{arr.rbegin()}; while (*start==*end){ ++start; ++end; } std::cout<<"The array is "<<(start==arr.end()?"symmetrical\n":"asymmetrical\n"); }
Ne öğrendiğinizi, neleri kullanma izniniz olduğunu söylemediniz. Hatalı ve okunmayan bir kod paylaştınız. Üçüncü kez belirtiyorum.
Kod:#include <iostream> #include <array> #include <string> #include <sstream> #define ARRAY_SIZE N void getArrayInput(std::array<int, ARRAY_SIZE>& arr) { std::string input; std::getline(std::cin, input); std::istringstream iss{ input }; for (auto i{ 0 }; i < ARRAY_SIZE; ++i) { iss >> arr[i]; } } bool isArraySymmetric(std::array<int, ARRAY_SIZE>& arr) { auto start{ arr.begin() }; auto end{ arr.rbegin() }; while (*start == *end) { ++start; ++end; } return start == arr.end(); } int main() { std::array<int, ARRAY_SIZE> arr; getArrayInput(arr); std::cout << "The array is " << (isArraySymmetric(arr) ? "symmetrical\n" : "asymmetrical\n"); return 0; }
Kod:#include <iostream> #include <array> #include <string> #include <sstream> #define ARRAY_SIZE N int main(){ std::array<int, ARRAY_SIZE> arr; std::string input; std::getline(std::cin,input); std::istringstream iss{input}; for(auto i{0};i<ARRAY_SIZE;++i){ iss>>arr[i]; }auto start{arr.begin()}; auto end{arr.rbegin()}; while (*start==*end){ ++start; ++end; } std::cout<<"The array is "<<(start==arr.end()?"symmetrical\n":"asymmetrical\n"); }
TamamŞu ikisi arasındaki farkı anlayamayan birine diyeceğim tek şey benimkiyle farklı olan her yanı yanlış.
Size okunabilen kodunuzla mutluluklar.
Kodun neresinin okunmadığını tam olaray söyleye bilirmisiniz?
Fonksiyonlara gelmediğinizi belirttiğiniz için fonksiyonlar dışında her şeyden bahsedeceğim, fakat normal şartlar altında fonksiyonların her şeyden önce konuşulması ve kullanılması taraftarıyım. Neyse, geçelim.C++:int main() { int size; cin>>size; int counter = 0 ; int array[size]; for(int f = 0 ; f<size ; ++f) { cin >> array[f] ; } bool marker = false ; for (int f = 0 ; f < size ; ++f) { for (int s = size ; s == 0 ; --s) { if (array[f] == array[s]) { marker = true ; } if (marker) { ++counter ; } } } if (counter==size) { cout << "Symmetrical" << endl ; } else { cout << "Not Symmetrical" << endl ; } }
#include<iostream>
#include<array> //C++ 11 Array
#define ARRAY_SIZE 1024
int main(void) {
std::array<int, ARRAY_SIZE> array;
int size = 0;
std::cout << "Lütfen array boyutunu belirtin." << std::endl;
std::cin >> size;
for(int i = 0; i < size; i++) {
//Arrayle bir şeyler yapın
}
}
int main() {
int size;
cin >> size;
int counter = 0 ;
int array[size];
for(int f = 0 ; f<size ; ++f) {
cin >> array[f] ;
}
bool marker = false ;
for (int f = 0 ; f < size ; ++f) {
for (int s = size ; s == 0 ; --s) {
if (array[f] == array[s]) {
marker = true ;
}
if (marker) {
++counter;
}
}
}
if (counter==size) {
cout << "Symmetrical" << endl;
}
else {
cout << "Not Symmetrical" << endl;
}
return 0;
}
using namespace std;. Genel alan adı tanımlarından kaçınılmalı. İlla kısaltmak isteniyorsa scope içerisinde tanımlama yapılabilir ancak öyle bir durumda bile yine de kaçınılması gerekilir. Aynı isme sahip fonksiyonların kafa karışıklığı yaratabilme durumu olduğu gibi okumayı da zorlaştırır.