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

Не могу найти ошибку - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Рекурсия (решение уравнений) http://www.cyberforum.ru/cpp-beginners/thread807537.html
Помогите написать программу используя рекурсию. Ниже прикреплён сам файл с уравнениями. За ранее спасибо.
C++ Ключ в сортировках часто вижу предложения с употреблением слова "Ключ", но как он выглядит или что он из себя представляет я понять не могу. http://www.cyberforum.ru/cpp-beginners/thread807535.html
Автоматизированная информационно-поисковая система «Справочник спортивного фаната» C++
(ООП) Автоматизированная информационно-поисковая система «Справочник спортивного фаната»
Сортировка слов в предложении по алфавиту C++
доброго времени суток! у меня такая проблема - нужно распечатать в алфавитном порядке слова из предложения. так вот, когда на английском вводятся слова, все норм, а на русском какие то закорючки... помогите пожалуйста добрые люди!:) вот код #include "stdafx.h" #include <iostream> #include <stdio.h> #include <string.h> #include <locale.h> void main() {
C++ Размер массива объектов http://www.cyberforum.ru/cpp-beginners/thread807496.html
Метод Count() подсчёта количества элементов массива (массив из сообщений) не правильно распознаёт элементы,заполняет и выводит правильно а если в методе обратиться к содержимому этого объекта то он не правильно работает // labar.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "iostream" #include "conio.h" using namespace std;
C++ Файлы. Подсчитать количество символов и строк Дан текстовый файл. Дописать в его конце следую¬щие данные: количество строк, количество символов в каждой строке, количество чисел в каждой строке. подробнее

Показать сообщение отдельно
Harutyunyan
1 / 1 / 0
Регистрация: 28.09.2012
Сообщений: 91
13.03.2013, 18:01  [ТС]     Не могу найти ошибку
Цитата Сообщение от ZoRT Посмотреть сообщение
C++
1
if(A[i] = 9)
это присваивание, сравнение ==
C++
1
2
A[i] += q;
A[i + 1] %= 10;
тут тоже что-то странное. может A[i + 1] надо было увеличить на 1, а A[i] присвоить 0?
только надо еще учесть, что A[i + 1] может быть равным 9
О спасибо, в условии у меня опечатка, а вот насчет второго я что то действительно налепил не то))


Вот сделал так:

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
#include <fstream>
 
bool Q(int *x, int q = 1)
{
    int A[7];
    for(int i = 0; i < 6; i++)
        A[i] = x[i];
 
    for(int i = 0; i < 6; i++)
        if(q > 0) 
        {
            if(A[i] == 9)
            {
                A[i] = 0;
                A[i + 1] += 1; 
            } else break;
        } else
            if(A[i] < 1)
                A[i] = 9;
            else {A[i + 1] -= 1; break;}
 
    int a = *A + A[1] + A[2],
    b = A[3] + A[4] + A[5];
 
    return (a == b);
}
 
int main()
{
    std::fstream I("input.txt"), O("output.txt", 2);
    char c;
    int a, b, n, k[7]; I >> n;
    while(n--)
    {
        for(int i = 0; i < 6; i++) 
            I >> c, k[5 - i] = c - 48;
        O << (Q(k) || Q(k, -1) ? "Yes\n" : "No\n");
    }
}
Уже стало разные ответы выдавать, но всеравно не те))

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
if(A[i] == 9)
{
// Вот тут как вы и сказали надо проверить что A[i + 1] 
// может быть равен девяти, как это можно сделать?
A[i] = 0;
A[i + 1] += 1; 
} else break;
Добавлено через 5 минут
Вот делаю так:

C++
1
2
3
4
5
6
7
8
9
10
11
if(A[i] == 9)
{
    A[i] = 0;
    if(A[i + 1] < 9)
        A[i + 1] += 1;
    else
    {
        A[i + 1] = 0;
        A[i + 2] += 1; // А тут может быть что A[i + 2] равен 9
    }
} else break;
Но так я буду в некторых случаях(например при номере билета: 199999) выходить за предеы массива.

Добавлено через 8 минут
Я тут вывожу массив при каждой вызове функции Q()
И смотрю что при входных данных:

715068 программа при сложении выдает такое результат: 715068, а при вычетании такой: 715058

445219 программа при сложении выдает такое результат: 445220, а при вычетании такой: 445209

012200 программа при сложении выдает такое результат: 012200, а при вычетании такой: 011299
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru