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

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

Войти
Регистрация
Восстановить пароль
 
vruleb
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 17
#1

Вызов функции - C++

22.06.2012, 07:46. Просмотров 384. Ответов 7
Метки нет (Все метки)

Имеется такая вот функция, и к ней нужно написать вызов.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
char *F12(char **p[], int n)
{ int k,i,j;
for (k=i=0;p[i]!=NULL;i++)
    for(j=0;p[i][j]!=NULL;j++,k++)
        if (k==n) return(p[i][j]);
    return(NULL);}
int main(){
    int n=20;
    char *k[2][20], **p;
    gets(*k[0]);
    gets(*k[1]);
    p=k;
    F12(p, n);
}
У меня ничего не выходит, компилятор ни в какую не хочет компилировать. Скажите, пожалуйста, где ошибка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2012, 07:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вызов функции (C++):

Вызов функции внутри другой функции с передачей локальной переменной по ссылке - C++
Столкнулся с очень с интересной проблемой. Можно ли так делать? #include &lt;iostream&gt; using std::cout; void f(const int &amp;ref){...

Вызов родовой функции (нужно передать массив в качестве аргумента функции через указатель) - C++
#include &lt;iostream&gt; using namespace std; template &lt;class T1&gt; class mas { public: T1 n; T1 a; void input() ...

Вызов функции в возврате значения функции - C++
Есть функция: int function1(a) { ...... return function2(function1(b),function1(c)); } Как работает такая хитрая система?

Вызов функции в параметре другой функции - C++
программа: #include &lt;iostream&gt; using namespace std; struct E { E() {} }; void f(const E&amp; e)

вызов функции из под функции - C++
Добрый вечер. Такая ситуация: есть функция, назовем ее MainThreadFunc. Как можно сделать так, чтобы любая другая функция, которую я напишу,...

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

7
enk
45 / 44 / 7
Регистрация: 16.06.2012
Сообщений: 177
22.06.2012, 08:07 #2
Цитата Сообщение от vruleb Посмотреть сообщение
Имеется такая вот функция, и к ней нужно написать вызов.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
char *F12(char **p[], int n)
{ int k,i,j;
for (k=i=0;p[i]!=NULL;i++)
    for(j=0;p[i][j]!=NULL;j++,k++)
        if (k==n) return(p[i][j]);
    return(NULL);}
int main(){
    int n=20;
    char *k[2][20], **p;
    gets(*k[0]);
    gets(*k[1]);
    p=k;
    F12(p, n);
}
У меня ничего не выходит, компилятор ни в какую не хочет компилировать. Скажите, пожалуйста, где ошибка.
p=k; // здесь ты приравниваешь матрицу указателей на символ к указателю на указатель на символ(массив символов к массиву строк).
1
vruleb
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 17
22.06.2012, 08:32  [ТС] #3
Хм, тут кажется понял, но теперь программа крашится на 6 строке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
char *F12(char **p[], int n)
{ int k,i,j;
for (k=i=0;p[i]!=NULL;i++)
    for(j=0;p[i][j]!=NULL;j++,k++)
        if (k==n) return(p[i][j]);
    return(NULL);}
int main(){
    int n=4;
    char *k[2][20]={{"test1"},{"end"}}, **p;
    p=k[2];
    F12(&p, n);
}
0
zss
Модератор
Эксперт С++
6403 / 5969 / 1945
Регистрация: 18.12.2011
Сообщений: 15,370
Завершенные тесты: 1
22.06.2012, 10:16 #4
В коде перепутаны массивы и указатели.
Если использовать массивы, то у меня получилось такое
(не знаю,то ли хотелось автору):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <conio.h>
 
char F12(char p[2][20], int n)
{ int k,i,j;
for (k=i=0;i<2;i++)
    for(j=0;p[i][j]!=0;j++,k++)
        if (k==n) return(p[i][j]);
    return 0;
}
int main()
{
    int n=5;
    char k[2][20];
    gets(k[0]);
    gets(k[1]);
    char c=F12(k, n);
    putchar(c);
    getch();
}
0
vruleb
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 17
22.06.2012, 10:46  [ТС] #5
В лабораторной работе требовалось написать вызов именно к функции выше, и изменять её нельзя. Сейчас не знаю что делать, попробую спросить у преподавателя.
0
zss
Модератор
Эксперт С++
6403 / 5969 / 1945
Регистрация: 18.12.2011
Сообщений: 15,370
Завершенные тесты: 1
22.06.2012, 11:58 #6
Может быть имелось ввиду
char *F12(char **p, int n)
Тогда p можно интерпретировать как двумерный массив символов,
но создавать его надо динамически и необходимые размерности как-то передавать в функцию.
0
vruleb
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 17
22.06.2012, 17:00  [ТС] #7
Проверил, в задании именно так, как и в первом посте.
0
Crudelis
Шаровик затейник
674 / 416 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
22.06.2012, 22:35 #8
Цитата Сообщение от vruleb Посмотреть сообщение
C++
1
for(j=0;p[i][j]!=NULL;j++,k++)
возможно стоит изменить на такое выражение:
C++
1
for(j=0;p[i][j]!='';j++,k++)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2012, 22:35
Привет! Вот еще темы с ответами:

вызов функции - C++
как правильно вызвать данную функцию? typedef int key_t; typedef double value_t; value_t find(key_t key);

Вызов функции. - C++
Здрасти, у меня есть функция вычесления суммы цифр числа int sum_digit(int x) { int sum=0; while (x!=0){ ...

Вызов функции в C++ - C++
есть циклический вызов функции: for (int i=0; i&lt;start; i++) { if (classicZOT())...

Вызов функции - C++
Здравствуйте! Не могу вызвать функцию, объясните причину. template &lt;typename T&gt; void Calc_etalon (QDir &amp; DirTxt) { ...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
22.06.2012, 22:35
Ответ Создать тему
Опции темы

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