Konuyu açarken başlığa tam olarak ne yazdınız?Hocam, Dev-C++ 5.11 kullandırtıyor ve sizin yazdığınız kodların hiçbirini göstermedi yani yazdığınız kodları fazla anlayamadım.
Konuyu açarken başlığa tam olarak ne yazdınız?Hocam, Dev-C++ 5.11 kullandırtıyor ve sizin yazdığınız kodların hiçbirini göstermedi yani yazdığınız kodları fazla anlayamadım.
Konuyu açarken başlığa tam olarak ne yazdınız?
O zaman doğru cevap vermişim. Ya hocanıza gördüğünüzün C++ değil, C olduğunu öğretin ya da bunu siz öğrenin.Başlıkta gördüğünüz üzere;
C++ Yazılım Problemi
Örneğin kullanıcı 5 sayı girdi; 15,25,30,40,50 ardından -1 yazıp programı kapattı. Programın göstermesi gereken en büyük:50 en küçük:15 ama program en küçüğü -1 olarak gösteriyor.
Onun sebebi;
kullanıcıda her sayı istediğinde bir önceki sayıyı tutmuyor olman.
Algoritma şu şekilde olmalı;
-Kullanıcıdan 5 rakam girmesini isteyeceksin.
-5 Rakamı bir değişkene atacaksın.
-Sonra for ile dönüp en büyüğünü ve en kücüğünü bulacaksın.
Bu şekilde olmalı.
Senin şu anki kodun For içinde her döndüğünde aldığı sayıyı biliyor.
Yanlış anlamadıysam.
#include <stdio.h>
int main()
{
printf("*********************************************\n");
printf("Kullanici -1 yazana kadar program calisacak.\n");
printf("*********************************************\n");
int sayi, büyüksayi = 0, kücüksayi = 999999;
for(int i;; i++)
{
printf("%d. sayiyi giriniz:",i+1);
scanf("%d",&sayi);
}
if(sayi==-1){
break;
}
else{
if (sayi > büyüksayi)
{
büyüksayi = sayi;
}
if (sayi < kücüksayi)
{
kücüksayi = sayi;
}
}
printf("Büyük sayi:%d\nKücük sayi is:%d",büyüksayi,kücüksayi);
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main(){
cout<<"*************************************************"<<endl;
cout<<"Kullanici -1 yazana kadar program calisacak."<<endl;
cout<<"*************************************************"<<endl;
std::vector<int> V = {};
int girdi,sayac = 0,kucuk = INT32_MAX,buyuk = 0;
while(1){
cout<<sayac+1<<". sayiyi giriniz : ";
cin>>girdi;
if(girdi == -1){
break;
}
V.push_back(girdi); //Vektörümüzün sonuna girdi değişkenini koyar.
sayac++;
}
for(auto i = 0; i < sayac; i++){
if(V[i] < kucuk){
kucuk = V[i];
}
else if(V[i] > buyuk){
buyuk = V[i];
}
}
cout<<"En buyuk sayi : "<<buyuk<<", en kucuk sayi ise : "<<kucuk<<endl;
return 0;
}
#include <stdio.h>
int main()
{
printf("*********************************************\n");
printf("Kullanici -1 yazana kadar program calisacak.\n");
printf("*********************************************\n");
int sayi, büyüksayi = 0, kücüksayi = 999999;
for(int i;; i++)
{
printf("%d. sayiyi giriniz:",i+1);
scanf("%d",&sayi);
if (sayi > büyüksayi)
{
büyüksayi = sayi;
}
if (sayi < kücüksayi)
{
kücüksayi = sayi;
}
if(sayi==-1)
break;
}
printf("Büyük sayi:%d\nKücük sayi is:%d",büyüksayi,kücüksayi);
return 0;
}
C++:#include <stdio.h> int main() { printf("*********************************************\n"); printf("Kullanici -1 yazana kadar program calisacak.\n"); printf("*********************************************\n"); int sayi, büyüksayi = 0, kücüksayi = 999999; for(int i;; i++) { printf("%d. sayiyi giriniz:",i+1); scanf("%d",&sayi); } if(sayi==-1){ break; } else{ if (sayi > büyüksayi) { büyüksayi = sayi; } if (sayi < kücüksayi) { kücüksayi = sayi; } } printf("Büyük sayi:%d\nKücük sayi is:%d",büyüksayi,kücüksayi); return 0; }
Şöyle bir şey işinize yarayabilir belki hocam. C yada C++ bilmiyorum bu arada saçmalıyorsam kusura bakmayın mantık yürütmeye çalışıyorum.
Şu anki kodunuzu düzenleyip çalıştırınca (Örneğin değişkenlerde Türkçe karakterleri düzelttim vs.) -1 sayısını en küçük olarak görüyor. C++ ile yazıyorsanız vektörleri kullanmanızı tavsiye ederim. Dizilerin genişleyebilir halidir vektörler. Bilmediğinizi varsaydığım için kafa karışıklığı olmaması adına "iterator" kullanmadım.
C++:#include <iostream> #include <vector> using namespace std; int main(){ cout<<"*************************************************"<<endl; cout<<"Kullanici -1 yazana kadar program calisacak."<<endl; cout<<"*************************************************"<<endl; std::vector<int> V = {}; int girdi,sayac = 0,kucuk = INT32_MAX,buyuk = 0; while(1){ cout<<sayac+1<<". sayiyi giriniz : "; cin>>girdi; if(girdi == -1){ break; } V.push_back(girdi); //Vektörümüzün sonuna girdi değişkenini koyar. sayac++; } for(auto i = 0; i < sayac; i++){ if(V[i] < kucuk){ kucuk = V[i]; } else if(V[i] > buyuk){ buyuk = V[i]; } } cout<<"En buyuk sayi : "<<buyuk<<", en kucuk sayi ise : "<<kucuk<<endl; return 0; }
If döngülerini for döngüsünün içine aldığında çalışması lazım bende çalıştı.
Kod:#include <stdio.h> int main() { printf("*********************************************\n"); printf("Kullanici -1 yazana kadar program calisacak.\n"); printf("*********************************************\n"); int sayi, büyüksayi = 0, kücüksayi = 999999; for(int i;; i++) { printf("%d. sayiyi giriniz:",i+1); scanf("%d",&sayi); if (sayi > büyüksayi) { büyüksayi = sayi; } if (sayi < kücüksayi) { kücüksayi = sayi; } if(sayi==-1) break; } printf("Büyük sayi:%d\nKücük sayi is:%d",büyüksayi,kücüksayi); return 0; }
if ' leri ayri ayri degil; if-else if - else chain i seklinde yazman gerek. Mantik dogru if leri linklememissin.
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.