Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2011, 20:27   #1
proag
Пользователь
 
Регистрация: 06.11.2010
Сообщений: 15
По умолчанию Не запускаеться программа

Задача состоит в нахождении количества чисел-палиндромов
Вот мой код, он запускается, но нечего не показывает


Код:
#include <iostream>
using namespace std;
bool for_pal(int arr[], int sz) // функция для проверки является ли число палиндромом
{
    int f;
for(f = 0; f < (sz / 2); f++) 
{
if(arr[f] == arr[sz - 1 - f])continue;
return false;
}
return true;
}
void main()
{
    setlocale(LC_ALL, "Rus");
    int *arr, kol_vo = 0, sz, g = 0;
    int i,j;
    int matrix[2][2] = {{777, 404}, {1991, -2091}};
    for(i = 0; i < 2; i++)
        for(j = 0; j < 2; j++) 
        {
            sz = 0; //начальный размер динамического массива(а так вообще можно? :) )
                                                     //пробывал с 1 , та же лажа
            arr = new int[sz]; // создаем динамический массив, в который заносим цифры элемента matrix[i][j]
            if(!arr) {cout<<"LOL!\n"; return;}
            while(matrix[i][j]) //заносит цифры в динамический массив
            {
                sz++; //увеличивает размер массива для внесения след. ел-та
                arr[g++] = (matrix[i][j] % 10); 
                matrix[i][j] /= 10;
            }

            if(for_pal(arr, sz) == true) kol_vo++; //проверка числа на палиндром

        delete[]arr; //удаление динамического массива для создание нового(пустого) для следующего эл-та matrix[i][j]
        }


cout<<"Количество чисел-палиндромов : "<<kol_vo<<endl;
}

В любом случае должно выводить хотябы 0, но не выводит нечего.

Последний раз редактировалось proag; 02.03.2011 в 20:39.
proag вне форума Ответить с цитированием
Старый 02.03.2011, 21:05   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

В лучшем случае вы забываете определять количество цифр в числе, прежде чем выделять память, поэтому у вас arr все время на ноль элементов; в худшем не понимаете динамику. И зачем тут матрица?
Не выводит ничего скорее всего, потому что new выбрасывает исключение, потому что зацикливания я не вижу. А также проверка if(!arr) бессмысленна, поскольку при таком вызове работает механизм исключений. Сделайте так:
Код:
#include <new>
// ...

arr = new(std::nothrow) int[sz];
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 02.03.2011, 21:47   #3
proag
Пользователь
 
Регистрация: 06.11.2010
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Syuf Посмотреть сообщение
В лучшем случае вы забываете определять количество цифр в числе, прежде чем выделять память, поэтому у вас arr все время на ноль элементов; в худшем не понимаете динамику. И зачем тут матрица?
Не выводит ничего скорее всего, потому что new выбрасывает исключение, потому что зацикливания я не вижу. А также проверка if(!arr) бессмысленна, поскольку при таком вызове работает механизм исключений. Сделайте так:
Код:
#include <new>
// ...

arr = new(std::nothrow) int[sz];
Количество цифр в числе определяется счетчиком sz, который и являеться размером промежуточного массива arr, после каждого занесения цифры он увеличивается , а после arr удаляеться для создания массива с новым количеством цифр, предварительно обнулив sz. А вот про std::nothrow я пока не слыхал, к сожалению. Если с std::nothrow работает, то хорошо. Ещё бы разобраться с этим nothrow
proag вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не запускаеться windows 7 gun_913 Windows 5 13.01.2011 10:17
Не запускаеться денвер( Lemo Помощь студентам 3 09.10.2010 15:22
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09
Программа создания файла, программа обработки файла [PASCAL] Виколяшка Помощь студентам 1 22.09.2009 22:56