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

дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no" - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
ImNaruto
0 / 0 / 0
Регистрация: 18.02.2010
Сообщений: 4
25.02.2010, 15:09     дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no" #1
Вот попробовал написать код но ошибку выдает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
    long Number;
    cout << "Enter the number: ";
    cin >> Number;
    char str[10];
 
    itoa(Number, str, 10);
    int mNumber[3];
    int i;
    for (i=0;i<3;i++)mNumber[i] = atoi(str[i]);
    int Sum[1];
    Sum[0]=mNumber[0]+mNumber[1];
    Sum[1]=mNumber[2]+mNumber[3];
    if(Sum[0]==Sum[1])cout<<"Yes";
    else cout<<"No";
    return 0;
}
Вот ошибка: error:invalid conversion from 'char' to 'const char*'
error: initializing argument 1 of 'int atoi(const char*)'

Вопрос: Почему ошибка и как исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2010, 15:09     дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no"
Посмотрите здесь:

Дано натуральное число. Найти сумму последних "n" цифр "n" числа, не применяя переменых значений C++
C++ Дано трехзначное число. Проверить истинность высказывания: "Цыфры даного числа образуют возрастающую или убывающую последовательность"."
C++ Дан массив из 9 целых чисел. Найти сумму элементов массива и, если она четная, вывести сообщение "Сумма четная", в противном случае напечатать "Сумма
Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO"; C++
C++ Подсчитать количество "счастливых" шестизначных автобусных билетов(сумма первых трех цифр равна сумме трех последних цифр)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
25.02.2010, 16:10     дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no" #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <stdlib.h>
 
int main(void){
    int num;
    char buf[5];
 
    printf("Number: ");
    if ( scanf("%d", &num) != 1 || num < 1000 || num > 9999 ){
        printf("Wrong number!\n");
        exit(1);
    }
    sprintf(buf, "%d", num);
    printf("%s\n", ((buf[0] + buf[1]) == (buf[2] + buf[3])) ? "yes" : "no");
 
    exit(0);
}
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
25.02.2010, 16:34     дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no" #3
в принципе тебе тут уже ответили ))))
но если хочешь конкретно по твоему коду, то ошибка в неверном типе в фукции atoi - нужно const char* а у тебя char
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
    long Number;
    cout << "Enter the number: ";
    cin >> Number;
    char str[10], ch[1];
    itoa(Number, str,10);
    int mNumber[4]; // массив не до 3 как было, а до 4 - ведь число четырехзначное
    int i;
    for (i=0;i<4;i++) {ch[0]=str[i]; //записываем символ в нужный нам тип char*, чтобы такой ошибки 
                                                // не было..и цикл до 4
                       mNumber[i] = atoi(ch);}
    int Sum[2];// суммы должно быть 2, поэтому тут массив из 2 элементов, а не из 1
    Sum[0]=mNumber[0]+mNumber[1];
    Sum[1]=mNumber[2]+mNumber[3];
    if(Sum[0]==Sum[1])cout<<"Yes";
    else cout<<"No";
    return 0;
}
ImNaruto
0 / 0 / 0
Регистрация: 18.02.2010
Сообщений: 4
25.02.2010, 16:56  [ТС]     дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no" #4
Спасибо но у мя вопрос почему у mNumber исправил массив на 4? ведь если считать по массиву 0,1,2,3-4числа?
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
25.02.2010, 17:07     дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no" #5
можеш оставить и 3, но тогда условие будет не i<4, a i<=3

Добавлено через 47 секунд
при i<3 получается 0 1 2 -----3_значное число
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
25.02.2010, 17:21     дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no" #6
Цитата Сообщение от ImNaruto Посмотреть сообщение
Спасибо но у мя вопрос почему у mNumber исправил массив на 4? ведь если считать по массиву 0,1,2,3-4числа?
ну да, 4 числа...
при объявлении массива мы указываем не индекс последнего элемента (в данном случае 3), а сколько должно быть элементов в массиве - в данном случае 4. Напишешь 3 - там будет всего 3 числа с индексами 0,1,2
а вот в цикле уже можешь писать индекс последнего элемента, но только включительно (как тут уже тебе сказали)
Yandex
Объявления
25.02.2010, 17:21     дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no"
Ответ Создать тему
Опции темы

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