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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kaznachey1993
-66 / 3 / 0
Регистрация: 24.11.2011
Сообщений: 97
#1

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

12.06.2012, 12:56. Просмотров 550. Ответов 6
Метки нет (Все метки)

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

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

Удалить все строки, сумма элементов которых является двузначным числом - C++
Дан массив, содержащий целые числа, размерностью n на n. Использовать дополнительные массивы нельзя. Выполнить следующие действия: ...

Цикл: Определить все числа, принадлежат промежутку [10,99], сумма цифр которых является простым числом. - C++
Помогите решить задачу: "Определить все числа, принадлежат промежутку , сумма цифр которых является простым числом." Здесь надо цикл на...

Определить количество элементов массива, в которых сумма первой и последней цифр является четным числом - C++
дан массив a(n). определить количество элементов массива , в которых сумма первой и последней цифр является четным числом

Удалить все строки, в которых среднее арифметическое элементов массива является двузначным числом - C++
2) В двумерном массиве, элементы которого - целые числа, произвести следующие действия:Удалить все строки, в которых среднее...

Удалить все строки матрицы, в которых среднее арифметическое элементов является двузначным числом - C++
В двумерном массиве, элементы которого целые числа, произвести следующие действия, удалить все строки, в которых среднее арифметическое...

Найти все простые числа, не превосходящие заданного числа, сумма цифр которых, также является простым числом - C++
Срочно нужен код программы в C++ (желательно с комментариями). Я бы разобрался и сам, но на это уйдет время, которого у меня нет :( ...

6
Сапожок
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;
}
Ну вот...
0
Catstail
Модератор
22640 / 11009 / 1785
Регистрация: 12.02.2012
Сообщений: 18,173
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;
}
0
Сапожок
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 34
13.06.2012, 00:01 #4
У меня лучше, у меня лууучше! Я делаю ряд Фибоначчи такого размера, который необходим. К примеру, если у вас сумма чисел в строке меньше 5, то зачем делать 30 чисел Фибоначчи, а если у вас сумма больше миллиарда, то 30 числами никак не обойтись. Хехе, Сапожки должны победить!..
0
Catstail
Модератор
22640 / 11009 / 1785
Регистрация: 12.02.2012
Сообщений: 18,173
13.06.2012, 15:01 #5
А ты пробовал вычислить, например, 50-й член ряда Фибоначчи? Попробуй... Могу подсказать: он равен 32951280099. А сотый равен 927372692193078999176. Не думаю, что у тебя получится их вычислить при типе int. А тогда зачем говорить, что твоя программа будет обрабатывать сумму больше миллиарда? Обе программы в этом смысле ограничены. Но мой код прозрачнее и отвечает принципам разумной достаточности. Вот так, дружок...

Добавлено через 51 минуту
Виноват, я не учел две первые единицы. 50-й член последовательности Фибоначчи = 12586269025,
а сотый - 354224848179261915075. Немного меньше тех, что я заявил выше. Но принципиально это ничего не меняет, ибо такие числа для типа int все равно великоваты.
0
Сапожок
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 34
13.06.2012, 17:11 #6
А, ну тогда ладно.
Мне просто интересно было так сделать.
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2012, 17:15 #7
kaznachey1993, № тебя 3 подзадачи:
1. Сложение.
2. Тест на принадлежность ряда.,
3. Удаление.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2012, 17:15
Привет! Вот еще темы с ответами:

В двумерном массиве удалить все строки, в которых среднее арифметическое элементов является двузначным числом. - C++
В двумерном массиве удалить все строки, в которых среднее арифметическое элементов является двузначным числом. Помогите сделать...

Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу - C++
Требуется помощь.. Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому...

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

Является ли сумма цифр числа двузначным числом - C++
Пользователь вводит двузначное число. Определить: а) является ли сумма его цифр двузначным числом; б) больше ли числа а сумма его...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
13.06.2012, 17:15
Ответ Создать тему
Опции темы

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