Форум программистов, компьютерный форум CyberForum.ru

Подскажите что дабавить? - C++

Восстановить пароль Регистрация
 
Блондинка_)
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 23
29.01.2011, 07:16     Подскажите что дабавить? #1
В этой задаче выводится наибольшая цифра в числе,подскажите,пожалуйста что добавить чтобы выводилась не только наибольшая цифра,но она была бы еще и четной.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <ctime>
#include <cstdlib>
#include <cstdio>
#include <windows.h> 
int LeastDigit(const int &a_number) {
  int least_digit = a_number % 10;
  int current_number = a_number / 10;
  while (current_number != 0) {
    if (least_digit < current_number % 10)
      least_digit = current_number % 10;
    current_number /= 10;
  }
  return least_digit;
}
for (int i=o;i<6;i++)
if (least_digit%2 ==0)
least_digit = least_digit2;
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
 
  int number_count;
  //number_count = 50 + rand() % 10;
  printf("Vvedite kol-vo: ");
  scanf("%d", &number_count);
  int *numbers = new int[number_count];
 
  for (int i = 0; i < number_count; ++i) {
    // numbers[i] = rand() % 55535 + 10000;
    printf("Enter number %d: ", i);
    scanf("%d", &numbers[i]);
  }
 
  for (int i = 0; i < number_count; ++i)
    printf("Number: %d, least digit: %d.\n", numbers[i],
           LeastDigit(numbers[i]));
           
 
           
 
  int key;
  scanf("%d", &key);
  system("PAUSE");
  return 0;
}
Вопрос жизни и смерти..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
29.01.2011, 12:19     Подскажите что дабавить? #2
Вообще-то в представленной программе находится минимальная цифра в числе.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdio>
 
// возвращает максимальную четную цифру в числе
// или -1, если в числе нет четных цифр
// (0 считается четной цифрой)
char MaximumEvenDigit(const int a_number) {
  char maximum_even_digit = -1;
  int temporary_number = a_number;
  while (temporary_number != 0) {
    char digit = temporary_number % 10;
    if (digit % 2 == 0 && digit > maximum_even_digit)
      maximum_even_digit = digit;
    temporary_number /= 10;
  }
  return maximum_even_digit;
}
 
int main(int argc, char *argv[]) {
  printf("%d\n", MaximumEvenDigit(13570));
  return 0;
}
dxdy
 Аватар для dxdy
97 / 97 / 5
Регистрация: 14.06.2010
Сообщений: 283
29.01.2011, 12:36     Подскажите что дабавить? #3
lemegeton а почему вы начинаете работать с int а потом переходите на char? Если у вас 0 - четный, то на примере
C++
1
printf("%d\n", MaximumEvenDigit(0));
программа выдаст неверный результат.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
29.01.2011, 22:07     Подскажите что дабавить? #4
Нужно поменять цикл с пред-условием на цикл с пост-условием.
C++
1
2
3
4
5
6
7
8
9
10
11
char MaximumEvenDigit(const int a_number) {
  char maximum_even_digit = -1;
  int temporary_number = a_number;
  do {
    char digit = temporary_number % 10;
    if (digit % 2 == 0 && digit > maximum_even_digit)
      maximum_even_digit = digit;
    temporary_number /= 10;
  } while (temporary_number != 0);
  return maximum_even_digit;
}
Цитата Сообщение от dxdy Посмотреть сообщение
lemegeton а почему вы начинаете работать с int а потом переходите на char?
Уточните.
dxdy
 Аватар для dxdy
97 / 97 / 5
Регистрация: 14.06.2010
Сообщений: 283
30.01.2011, 10:45     Подскажите что дабавить? #5
C++
1
2
3
4
5
6
7
8
9
10
11
int MaximumEvenDigit(const int a_number) {
  int maximum_even_digit = -1;
  int temporary_number = a_number;
  do {
    int digit = temporary_number % 10;
    if (digit % 2 == 0 && digit > maximum_even_digit)
      maximum_even_digit = digit;
    temporary_number /= 10;
  } while (temporary_number != 0);
  return maximum_even_digit;
}
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
30.01.2011, 13:58     Подскажите что дабавить? #6
На подавляющем большинстве современных платформ sizeof(signed int) > sizeof(signed char). Насколько мне известно, нет таких платформ, на которых десятичная цифра не помещалась бы в char.

В данной задаче этот факт, безусловно, не играет роли.
Yandex
Объявления
30.01.2011, 13:58     Подскажите что дабавить?
Ответ Создать тему
Опции темы

Текущее время: 05:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru