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

Реализовать код данной функции, но через рекурсию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Глассные буквы http://www.cyberforum.ru/cpp-beginners/thread844676.html
Нужно подсчитать все гласные буквы написал код, работает не нормально, исправьте плз. Спасибо. #include <iostream> #include <string.h> #include <stdio.h> using namespace std; int vowel(char *str) // Нахождение количества глассных букв в строке Line
C++ Проблемы с программой Недавно попросил знакомого помочь с программой, он написал, скинул но комментариев не оставил... курсовую нужно сдать завтра... Извините за эту тупую просьбу, просто очень нужно.. #include <stdlib.h> #include <stdio.h> #include <math.h> #include <conio.h> double a=0, b=1,c=1.5,d=3; void Sims(float); http://www.cyberforum.ru/cpp-beginners/thread844674.html
Функция-член принимает указатель на функцию-член C++
Задача состоит в следующем. Нужно реализовать функцию-член которая принимает указатель функцию-член из класса. Но встретился с такой ошибкой "Ошибка 7 error C2064: результатом вычисления фрагмента не является функция, принимающая 2 аргументов" Вот часть кода. class people { public: people (){} ~people(){} ....... bool sAge(people st1, people st2) {
Segmentation fault при работе с потоковым файлом C++
Здравствуйте , возникает проблема при чтении из файла fstream. Записывайте из списка нормально , а при попытке считать , она то выводит содержимое файла , но при попытке закрыть обращается куда-то не ту да в память , подскажите пожалуйста в чем проблема . int save_fst(fstream *f,list_head *list) { if (f->fail()){ cerr<<"File open error\n"; return 0; ...
C++ как реализовать остановку цикла с условием cin>>a http://www.cyberforum.ru/cpp-beginners/thread844663.html
Здравствуйте. Программа пишет не более двух элементов в вектор, после нажатия Enter - их выводит. Как сделать, чтобы она выводила их при появлении в потоке ввода символа "|" ? int main() { vector<double> d; double a=0; int j=0; while (cin>>a && j<2){ d.push_back(a);
C++ Ошибки класс Как исправить такое чудо? Checking project dependencies... Compiling Project1.cbproj (Debug, Win32) bcc32 command line for "..\..\..\Desktop\File1.cpp" c:\program files (x86)\embarcadero\rad studio\10.0\bin\bcc32.exe -D_DEBUG -D_RTLDLL -n.\Win32\Debug -I..\..\..\Desktop;"C:\Program Files (x86)\Embarcadero\RAD Studio\10.0\include\boost_1_39\boost\tr1\tr1";"C:\Program Files... подробнее

Показать сообщение отдельно
lj23lj
1 / 1 / 0
Регистрация: 15.11.2011
Сообщений: 34
22.04.2013, 15:33  [ТС]     Реализовать код данной функции, но через рекурсию
kravam, Спасибо за код. Я тут пытался скомпилировать с этими исправлениями. Подправил исходный код, удалил лишнее, но в одном месте ошибка. Но я подозреваю, что исправив её, получится ещё море их.

файл: function.cpp

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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <iostream>
#include <math.h>
#include "Function.h"
#define razmer 8
using namespace std;
 
 
int StrToInt(char * str) 
{
    int len=strlen(str);
    int temp=0;
    //переменная для формирования числа
    int i;
    if (str[0]!='-')
        i=0;
    //условие на проверку какое число: отрицательное или положительное
    else
        i=1;
    for (i;i<len;i++)
    {
        switch (str[i])
        {
            case '1':
                temp+=1*pow(10.0,double(len-i-1));
                break;
            case '2':
                temp+=2*pow(10.0,double(len-i-1));
                break;
            case '3':
                temp+=3*pow(10.0,double(len-i-1));
                break;
            case '4':
                temp+=4*pow(10.0,double(len-i-1));
                break;
            case '5':
                temp+=5*pow(10.0,double(len-i-1));
                break;
            case '6':
                temp+=6*pow(10.0,double(len-i-1));
                break;
            case '7':
                temp+=7*pow(10.0,double(len-i-1));
                break;
            case '8':
                temp+=8*pow(10.0,double(len-i-1));
                break;
            case '9':
                temp+=9*pow(10.0,double(len-i-1));
                break;
            case '0':
                temp+=0*pow(10.0,double(len-i-1));
                break;
        }
    }
    if (str[0]=='-')
        temp=-temp;
    //если число отрицательное
    return temp;
}
 
void AnalizingStr(char * str, int * arr1, int n)
{
    int i=0;
    char * tmpstr = new char [10];
    //временная строка для каждого числа из файла
    int j=0;
    int k=0;
    while (str[i]!='\0')
    {
        if (str[i]!=' ')
        {
            tmpstr[j]=str[i];
            j++;
            if ((str[i+1]==' ') || (str[i+1]=='\0'))
            {
                tmpstr[j]='\0';
                j=0;
                arr1[k]=StrToInt(tmpstr);
                //вызов функции перевода числа из символьного типа в числовой
                k++;
            }
        }
        i++;
    }
    delete [] tmpstr;
 
}
 
 
 
//Собсно сам массив
int arr1 [razmer]; 
 
//Это глобальная величина- произведение чисел
int pr; 
 
//параметр это индекс числа в массиве
//(в нашем случае индексы будут 0, 1, 2, 3) 
bool f (int index) {
 
 
 //В функции "сближаемся", идём от начала к концу,
 //если встретились- возвращаем true
 if (index==razmer/2)
  return true;
 else 
  if (arr1 [index]* arr1 [razmer- index- 1]!= pr) 
   return false;
  else 
   return (f(index+ 1));
 printf ("%d\n", f(1));  
 
}
файл: main.cpp
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
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include "Function.h"
#define razmer 8
 
using namespace std;
 
void main(int argc, char* argv[])
{
    char * filestr = new char [100];
    //строка для ввода адреса к файлу
    cout<<"Input address to file with data:"<<endl;
    cin>>filestr;
    FILE * fr = fopen(filestr,"r");
 
    if (!fr)
    {
        //если файл не был найден
        delete [] filestr;
        cout<<"File not found! Program will close!"<<endl;
        system("pause");
        return;
    }
    delete [] filestr;
    cout<<endl;
    int count=0;
    //переменная для количества чисел в файле
    int countch=0;
    //переменная для количества символов в файле
    char ch;
    while ((ch=fgetc(fr))!='\n')
    {
        countch++;
        if (ch==' ')
            count++;
    }
    if ((count+1)%2!=0)
    {
        //если количество чисел в файле не четное
        fclose(fr);
        cout<<"Amount of counts is not uneven. Please, correct the input data and restart this program."<<endl;
        return;
    }
    char * str = new char [countch+1];
    int * arr1 = new int [count+1];
    fseek(fr,0,SEEK_SET);
    //смещаем указатель на файл
    fgets(str,countch+1,fr);
    //считываем первую строку из файла с числами
    AnalizingStr(str,arr1,count+1);
    //вызов функции для анализа и перевода чисел из символьного типа в числовой
    
 
 
 
    cout<<"Input array:"<<endl;
    for (int i=0;i<count+1;i++)
        cout<<arr1[i]<<" ";
    //вывод исходного массива
    cout<<endl;
 
 
    int pr;
        //НАйдём произведение чисел
    pr= arr1[0]* arr1[razmer- 1];
    
    printf ("%d\n", f(1));                //ооошииибкааа
    
    delete [] str;
    delete [] arr1;
    //delete [] arr2;
    fclose(fr);
    getch();
}
Добавлено через 2 минуты
c 90 по 113 строку вставил Ваш кусок в файл Фанкшн
с 65 по 69 строку вставил Ваш кусок в файл Майн, ошибка в 69 строке. не определён индификатор пишет. Может из-за области видимости в мейне не передаётся эта функция?

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