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

Удалить строки, сумма цифр которых является числом Фибоначчи - C++

Восстановить пароль Регистрация
 
kaznachey1993
-66 / 3 / 0
Регистрация: 24.11.2011
Сообщений: 97
12.06.2012, 12:56     Удалить строки, сумма цифр которых является числом Фибоначчи #1
Задан двумерный массив целых чисел.Удалить те строки, которые сумма цифр которых я числом Фибоначчи

Добавлено через 6 минут
плз,помогите=(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2012, 12:56     Удалить строки, сумма цифр которых является числом Фибоначчи
Посмотрите здесь:

Является ли сумма цифр числа двузначным числом C++
Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу C++
Цикл: Определить все числа, принадлежат промежутку [10,99], сумма цифр которых является простым числом. C++
C++ В двумерном массиве удалить все строки, в которых среднее арифметическое элементов является двузначным числом.
C++ Удалить все строки, в которых среднее арифметическое элементов массива является двузначным числом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сапожок
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 34
12.06.2012, 14:20     Удалить строки, сумма цифр которых является числом Фибоначчи #2
Удалить те строки, которые сумма цифр которых я числом Фибоначчи
Может, сумма цифр которых является числом Фибоначчи?

Добавлено через 1 час 17 минут
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
#include <cstdio>
using namespace std;
 
int main(){
    int const a = 3, b = 4;
    int target[a][b];   //Данный массив
    for( int _a = 0; _a != a; _a++ ){           //Количество итераций равно количеству колонок
        for( int _b = 0; _b != b; _b++ ){       //Количество итераций равно количеству строк
            cin >> target[_a][_b];          //Заполнение массива
        }
        cout << "\n";
    }
    int max_summ = 0;       //Максимальная сумма чисел в строке. Нужна для того, чтобы вычислить, сколько требуется чисел Фибоначчи
    int maymax_summ = 0;
 
    for( int c1 = 0; c1 != a; c1++ ){
        for( int c2 = 0; c2 != b; c2++ ){
            maymax_summ += target[c1][c2];
        }
        if (maymax_summ > max_summ) max_summ = maymax_summ;
        maymax_summ = 0;                                        //Здесь происходило вычисление максимальной суммы чисел в строке
    }
    int size_fibon = 0;     //Размер массива ряда Фибоначчи
 
    int first_fibon = 0;
    int second_fibon = 1;
    int summ_fibon = 0;
 
    for( int mayfibon = 0, index; mayfibon < max_summ; size_fibon++ ){
        summ_fibon = first_fibon + second_fibon;
        first_fibon = second_fibon;
        second_fibon = summ_fibon;
        mayfibon = summ_fibon;
    }
    int *fibon = new int[size_fibon];
    first_fibon = 0;
    second_fibon = 1;
    summ_fibon = 0;
 
    for( int i = 0; i != size_fibon; i++){
        summ_fibon = first_fibon + second_fibon;
        first_fibon = second_fibon;
        second_fibon = summ_fibon;
        fibon[i] = summ_fibon;
    }
    int final[a][b] = {};       //Конечный массив с удаленными строками
    int summ_str = 0;
    int i_final = 0;
    bool pr = true;
    for( int c1 = 0; c1 != a; c1++){
        pr = true;
        for( int c2 = 0; c2 != b; c2++ ){
            summ_str += target[c1][c2];
        }
        
        for( int c3 = 0; c3 != size_fibon; c3++ ){
            if( summ_str == fibon[c3] ) {pr = false;}
        }
        summ_str = 0;
        
        if (pr == true) {
        for(int _c = 0; _c != b; _c++){
            final[i_final][_c] = target[c1][_c];
        }
        
        i_final++;
        }
    }
 
    for( int _a = 0; _a != i_final; _a++ ){
        for( int _b = 0; _b != b; _b++ ){
            cout << final[_a][_b] << " ";
        }
        cout << "\n";
    }
 
 
    int s;
    cin >> s;
    return 0;
}
Ну вот...
Catstail
Модератор
 Аватар для Catstail
21492 / 10245 / 1670
Регистрация: 12.02.2012
Сообщений: 17,129
12.06.2012, 15:15     Удалить строки, сумма цифр которых является числом Фибоначчи #3
Вот еще решение:

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "iostream.h"
#include "windows.h"
 
int main(int argc, char* argv[])
{
    int i,j,sumstr,n,m,k,l;
    SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
    int Fib[30];
    // строим п-ть Фибоначчи заранее
    Fib[0]=1;
    Fib[1]=1;
    for (i=2; i<30; i++) Fib[i]=Fib[i-1]+Fib[i-2];
        // Выделяем массив и заполняем его 
    cout << "Введите к-во строк: ";
    cin >> m;
    cout << "Введите к-во столбцов: ";
    cin >> k;
        int **Matr = new int* [m];
    for (i=0; i < m; i++) Matr[i]=new int [k];
        for (i=0; i < m; i++)
    {
            for (j=0; j < k; j++)
        {
        cout << "Matr[" << i << "][" << j << "]= ";
        cin >> Matr[i][j];
        }
        cout << endl;
    }
    int *stri = new int[m];
    // считаем сумму каждой строки
        for (i=0; i < m; i++)   
    {
           sumstr=0;
           for (j=0; j < k; j++) sumstr+=Matr[i][j];
           // проверяем на попадание в п-ть Фибоначчи
           n=0;
           for (j=0; j < 30; j++)
        if (sumstr == Fib[j]) 
        {
            n=j+1;
            break;
        }
        stri[i]=n;
    }
    // Считаем, сколько строк оставить
    n=0;
    for (i=0; i < m; i++) 
            if (stri[i] == 0) n++;
    if (n > 0)
    {
           // Выделяем память под новый массив:
           int **NewMatr = new int * [n];
           for (i=0; i < n; i++) NewMatr[i]=new int [k];
           // Переносим из старого в новый
           l=0;
           for (i=0; i < m; i++)
        if (stri[i]==0)
        {
            for (j=0; j < k; j++) NewMatr[l][j]=Matr[i][j];
            l++;
        }
          // Печатаем результат
          cout << "Выходной массив:" << endl <<endl;
    for (i=0; i < n; i++)
    {
         for (j=0; j < k; j++)
                  cout << NewMatr[i][j] << " ";
             cout << endl;
    }
    // Удаляем выходной массив
    for (i=0; i<n; i++) delete [] NewMatr[i];
        delete [] NewMatr;
    }
    else
            cout << "Нет ни одной строки с суммой из ряда Фибоначчи!";
    // Удаляем исходный массив
    for (i=0; i < m; i++) delete [] Matr[i];
    delete [] Matr;
    return 0;
}
Сапожок
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 34
13.06.2012, 00:01     Удалить строки, сумма цифр которых является числом Фибоначчи #4
У меня лучше, у меня лууучше! Я делаю ряд Фибоначчи такого размера, который необходим. К примеру, если у вас сумма чисел в строке меньше 5, то зачем делать 30 чисел Фибоначчи, а если у вас сумма больше миллиарда, то 30 числами никак не обойтись. Хехе, Сапожки должны победить!..
Catstail
Модератор
 Аватар для Catstail
21492 / 10245 / 1670
Регистрация: 12.02.2012
Сообщений: 17,129
13.06.2012, 15:01     Удалить строки, сумма цифр которых является числом Фибоначчи #5
А ты пробовал вычислить, например, 50-й член ряда Фибоначчи? Попробуй... Могу подсказать: он равен 32951280099. А сотый равен 927372692193078999176. Не думаю, что у тебя получится их вычислить при типе int. А тогда зачем говорить, что твоя программа будет обрабатывать сумму больше миллиарда? Обе программы в этом смысле ограничены. Но мой код прозрачнее и отвечает принципам разумной достаточности. Вот так, дружок...

Добавлено через 51 минуту
Виноват, я не учел две первые единицы. 50-й член последовательности Фибоначчи = 12586269025,
а сотый - 354224848179261915075. Немного меньше тех, что я заявил выше. Но принципиально это ничего не меняет, ибо такие числа для типа int все равно великоваты.
Сапожок
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 34
13.06.2012, 17:11     Удалить строки, сумма цифр которых является числом Фибоначчи #6
А, ну тогда ладно.
Мне просто интересно было так сделать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2012, 17:15     Удалить строки, сумма цифр которых является числом Фибоначчи
Еще ссылки по теме:

C++ Удалить все строки матрицы, в которых среднее арифметическое элементов является двузначным числом
C++ Является ли сумма цифр числа двузначным числом
C++ Проверить является ли сумма цифр числом меньшим 15

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2012, 17:15     Удалить строки, сумма цифр которых является числом Фибоначчи #7
kaznachey1993, № тебя 3 подзадачи:
1. Сложение.
2. Тест на принадлежность ряда.,
3. Удаление.
Yandex
Объявления
13.06.2012, 17:15     Удалить строки, сумма цифр которых является числом Фибоначчи
Ответ Создать тему
Опции темы

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