Arama butonu
Bu konudaki kullanıcılar: 1 misafir
2
Cevap
481
Tıklama
0
Öne Çıkarma
Ödev Algoritma Yardım!
N
9 yıl
Çavuş
Konu Sahibi

Merhabalar.Bilgisayar Mühendisliği 1. Sınıf öğrencisiyim.c++ kullanarak Konsoldan bir algoritma yapmamız gerekiyor ödev için.
Bu algoritma kullanıcıdan bir sayı alıyor bu sayının içindeki tek sayıları sıralı bir şekilde örneğin 123456 yazıldığı zaman 135 çıkartması gerekiyor.
yaklaşık 3 saat bununla uğraşıyorum.Yaptığım şey aşağıda.Neyi yanlış yaptığımı söylerseniz sevinirim.(bu arada dizi,string yada fonksiyon kullanılmasına izin verilmiyor.)

#include <iostream>

using namespace std;

int main()
{
int number;
int digit;
int remainder;
int staticnumber;
cout<<"Enter The Number. \n";
cin>>staticnumber;
number = staticnumber;
cout<<"Odd numbers.....:";
while (number >= 10)
{
number=number / 10;
digit++;
}
int staticdigit;
staticdigit = digit;
for(int i=1;i<staticdigit;i++)
{
digit = 10*digit;

}
digit/=staticdigit;
cout<<digit;
int finalnumber;
while(staticdigit > 0)
{
finalnumber=staticnumber / digit;
digit /=10;
if (finalnumber % 2 == 1)
{
cout<<finalnumber;
}
}
}



D
9 yıl
Yüzbaşı

Önce int i tersine cevir. Daha sonra tek while ile sürekli 10 a böl ve sayının tek olup olmadığını kontrol et, eğer tek ise printf ile yazdır fakat newline atma. While bittiği zaman ise newline atarsin.

Tersine çevirme algoritması:

quote:


long reverse(long n) {
static long r = 0;

if (n == 0)
return 0;

r = r * 10;
r = r + n % 10;
reverse(n/10);
return r;
}




< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
O
9 yıl
Teğmen

 
#include <stdio.h>
int main()
{
// içindeki tek sayıları sıralı bir şekilde
//örneğin 123456 yazıldığı zaman 135 çıkartması gerekiyor.
//dizi,string yada fonksiyon kullanılmasına izin verilmiyor.==>dizi yada string kullanılamayacagından tek sayılardan tekrar bi sayı olusturup (istenilen sırada yazabilmek için ) sadece tek sayılar dese rakamları tanımlamaya yada 2. while 'i kullanmaya gerek yoktu!!!
int a;
int rakamlar;
printf("lutfen bir sayi giriniz?\n");
scanf("%d",&a);

while(a!=0)
{
if(a%10==1||a%10==3||a%10==5||a%10==7||a%10==9)
{
rakamlar+=a%10;
rakamlar*=10;
}

a/=10;
}

printf("\n");
rakamlar/=10;

while(rakamlar!=0)
{
printf("%d",rakamlar%10);
rakamlar/=10;
}

}



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.