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;
Ö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ı >
#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);