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

Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781… - C++

Восстановить пароль Регистрация
 
Bloodcross
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 5
02.07.2012, 21:46     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781… #1
Даны натуральные числа k и n. Вычислить сумму чисел между k-ым и n-ым элементами последовательности степеней числа 3: 1392781…, но сами граничные элементы в сумму не включать.

Я предполагаю использование подстроки и atoi но никак не могу далеко уйти. у меня получился только ввод строки и К с N, а выделять подстроку не умею тк ещё не проходили и о ней я имею смутное представление. Пока я не смотрю на ввод последовательности как в задании, тк это могу сделать сам , мне интересно что же делать со строкой.

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
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{setlocale(LC_ALL,"Russian");
int i,k,n,w,e,r=0;
char A[100];
 
 
printf ("ввод");
scanf ("%[^\n]",A);
    for(int j=0;A[j+1] !='\0'; j++)
    {
        if (A[j]==' ')
        if (strcpy(&A[j],&A[j+1]))
        j--;
    }
    do {
        printf("Введи К и N\nПри условии K < N \n");
        scanf("%i%i",&k,&n);
    }while (k>n);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2012, 21:46     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781…
Посмотрите здесь:

Вычислить сумму элементов массива между первым и вторым положительными элементами C++
C++ вычислите сумму элементов, которая расположена между теми элементами,которые сами расположены между первым и последним отрицательными элементами.
Задан массив из N действительных чисел и нужно вычислить сумму между 1 и 2 отрицательными элементами C++
Дана последовательность из 7 различных чисел. Вычислить сумму каждого элемента последовательности с предыдущими элементами C++
Итераторы ( вычислить произведение элементов последовательности, расположенных между максимальным и минимальным элементами) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
02.07.2012, 21:53     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781… #2
Может быть как-то так?:
C++
1
2
3
4
5
6
7
8
int k, n, summ=0;
 
...  // вводим k и n
 
for (int i=k+1; i<n; i++)
   summ += pow(3, i);
 
cout << "Сумма равна " << summ << endl;
Bloodcross
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 5
02.07.2012, 22:20  [ТС]     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781… #3
извини мы не пользуемся cout итд если не сложно перепиши с использованием printf и scanа
да и вводим строку как char поэтому не думаю что они будут складываться просто так
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
02.07.2012, 22:35     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781… #4
Bloodcross, я тут задание не так понял.
То есть, есть просто строка, а в ней записана последовательность степеней тройки? Это тогда по-другому надо делать. Не могу понять как именно. Ведь там и однозначные и двузначные и трехзначные числа и их еще надо как-то разделить.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
02.07.2012, 22:36     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781… #5
ограничения на k и n какие?
Bloodcross
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 5
02.07.2012, 22:51  [ТС]     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781… #6
думаю в задании понятно написано n должно быть =< количеству элементов , а к < n

Добавлено через 10 минут
Цитата Сообщение от g-h Посмотреть сообщение
Bloodcross, я тут задание не так понял.
То есть, есть просто строка, а в ней записана последовательность степеней тройки? Это тогда по-другому надо делать. Не могу понять как именно. Ведь там и однозначные и двузначные и трехзначные числа и их еще надо как-то разделить.
они разделяются пробелом , а порядок я не знаю как реализовать я писал геометрическую прогрессию но преподша сказала надо использовать atoi и цифры вгонять в char наверно нужно будет сделать ещё , отсеивание других символов кроме цифр . а степени понял должны формироваться при вводе например ввёл 1 записалось 3 , вёл 3 получил 9 , но вот сейчас подумал что надо ограничить ещё ввод тех цифр которые не войдут , но это можно реализовать построив условие такое чтобы вводились только те символы которые в этой прогрессии имеются
таким образом можно ввести 1, 3,27 и получить 3, 9, 27*3 , а если ввести 2 , 4 и тд ничего не вводится .
на основании полученного результата уже выделить подстроку и сложить её элемента atoi ем
Bloodcross
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 5
01.08.2012, 17:04  [ТС]     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781… #7
Даны натуральные числа k и n. Вычислить сумму чисел между к ым и n ым элементами последовательности степеней числа 3: 1392781…, но сами граничные элементы в сумму не включать.


смысл такой: берём последовательность, выделяем из неё 2 элемента, выделяем подстроку между ними, и собсно складываем НО вот в чём проблема у меня складываются числа последовательности например 9+27=36 , однако преподша сказала сделать сложение через строку те не 9+27 а 9+2+7.
у меня уже фантиазии и извращения не хватает на решение этой задачи , поэтому можно не особо красивый код , но главное рабочий и хотя бы с базовыми пояснениями
вот мой код я в нём использовал 2 способа 1 закоментирован другой соответственно нет


\
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
83
84
85
86
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
 
 
 
/*
void substr(char v[], char A[], int n, int m,int k){
    
    
    //v= (char*)malloc(sizeof(m));
    int i,j,z;
   // for(i=0,j=n+1; j < (n+1+m); i++, j++)
for(i=k+1;i<n-1;i++) 
        //{v[i]=A[i];}
    
    
        printf ("%s",v[i]);
    
    
    z=atoi(v);
        printf ("dsvnsl  %i", z);
}*/
 
int _tmain(int argc, _TCHAR* argv[])
{setlocale(LC_ALL,"Russian");
int i,k,n,w=0,e,r=0;
char *A, v[100];
 
const double q= 3;
int a,*b;
char buffer[1024]; 
do {
        printf("Введи К и N\nПри условии K < N \n");
        scanf("%i%i",&k,&n);
    }while (k>n);
A=(char*)malloc(n*sizeof(char));
//int *b=new int[n];
b=(int*)malloc(n*sizeof(int));
b[0]=1;
 
itoa;
//printf("Геометрическая прогрессия:\n");
   for(i=1;i<n; i++)
   {
       b[i]=b[i-1]*q;
   //A[i]=b[i];
  }
 /*   memset(buffer,0,1024);
   for (i=0;i<n;i++)
   {
       itoa(b[i],A,10);
   strcat(buffer, A);
  v[i]=A[i] ;}
   printf("%s",v[i]);
   int u,z,x;
   
    u=n-k -1;*/
 //substr (v, buffer,n,u,k);
 
 
    /*for(i=k+1;i<n-1;i++) 
        printf ("dscfsdav   %s",buffer);
        */
   
   printf("Последовательность:  \n");
  for (i=0;i<n;i++)
  { printf ("%i",b[i]); } 
  printf("\n");
  printf("между k и n:  ");
  
    for(i=k+1;i<n-1;i++) 
    {   printf ("%i",b[i]);
    
        w+=b[i];}
    itoa(w,A,10);
    printf("\n");
    printf("данные: %i \nстрока: %s\n",b[i],A);
    
 
_getch();
    return 0;
}
wtf?
19 / 19 / 0
Регистрация: 03.10.2010
Сообщений: 48
01.08.2012, 19:05     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781… #8
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
#include "stdafx.h"
#include < iostream >
#include < cmath >
using namespace std;
int main()
{   
    int k = 0, n = 0;
    const double t = 3;
    int sum = 0;
    char value[15] = "";
    cout << "Enter k and enter n ( k < n)" << endl;
    cin >> k >> n;
    if(k > n)
    {
        cout << "Wrong values!!!" << endl;
        return 0;
    }
    for(int i = k+1; i < n; i++)
    {
        itoa(pow(t,i),value,10);//pow - возведение в степень; itoa - int в char
        for(int j = 0;value[j] != '\0';j++)
        {
            switch(value[j])
            {
            case 49: sum += 1; break;
            case 50: sum += 2; break;
            case 51: sum += 3; break;
            case 52: sum += 4; break;
            case 53: sum += 5; break;
            case 54: sum += 6; break;
            case 55: sum += 7; break;
            case 56: sum += 8; break;
            case 57: sum += 9; break;
            default: sum += 0; break;
            }
        }
        cout << "3 ^ " << i << "  = " << value << endl;
    }
    cout << "Sum = " << sum << endl;
 
 
 
    system("PAUSE");
    return 0;
}
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.08.2012, 11:36     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781… #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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <sstream>
#include <cmath>
#include <Windows.h>
using namespace std;
 
long long my_sum(char* instr) //ф-ция возвращает сумму цифр со строки
{
    long long retval;
    int i;
 
    retval = 0;
    for (; *instr; instr++) {
        retval+=(*instr - '0');
    }
    return retval;
}
 
int main()
{
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
 
    const int num = 3;
    //для начала генерируем последованости степеней числа num
    cout<<"Для какой степени будем считать (не больше 10)?: ";
    int pow_;
    while (!(cin>>pow_) || pow_<0 || pow_>10)
    {
        cin.clear();
        cin.sync();
        cout<<"Некоректное число. Попробуйте снова: ";
    }
    stringstream ss;
    for (int i = 0; i<pow_+1; i++)
        ss << static_cast<long long>(pow(num, i));
    cout<<"Наша последовательность: "<<ss.str()<<endl;
 
    cout<<"Теперь, введите диапазон для подсщета суммы цифр от k до n (от 0 до "<<ss.str().size()
        <<", k<n):\n";
    int k , n;
    while (!(cin>>k>>n) || k>n || n>ss.str().size())
    {
        cin.clear();
        cin.sync();
        cout<<"Некоректный диапазон. Попробуйте снова: ";
    }
    string temp = ss.str();  //закидываем нашу последовательность с потока в переменную string
    temp.erase(0, k+1); temp.erase(n-1, temp.back()); //отрезаем неужный кусок спереди и ссади
    char buffer[256];
    strcpy(buffer, temp.c_str());
    //считаем сумму всех цифр
    cout<<"Сумма всех цифр в последовательности не включая k и n: "<<my_sum(buffer)<<endl;
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2012, 11:15     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781…
Еще ссылки по теме:

C++ Найти сумму членов последовательности между максимальным и минимальным элементами
С++ Для вводимой последовательности целых чисел найти максимальную разность между соседними элементами C++
Вычислить сумму степеней в последовательности чисел C++

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

Или воспользуйтесь поиском по форуму:
Bloodcross
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 5
03.08.2012, 11:15  [ТС]     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781… #10
спасибо за коды но я забираю 1й , а во втором выдаётся 2 ошибки. спасибо за помощь
Yandex
Объявления
03.08.2012, 11:15     Вычислить сумму чисел между k ым и n ым элементами последовательности степеней числа 3: 1392781…
Ответ Создать тему
Опции темы

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