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

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

Восстановить пароль Регистрация
 
vruleb
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 17
22.06.2012, 07:46     Вызов функции #1
Имеется такая вот функция, и к ней нужно написать вызов.

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);
}
У меня ничего не выходит, компилятор ни в какую не хочет компилировать. Скажите, пожалуйста, где ошибка.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2012, 07:46     Вызов функции
Посмотрите здесь:

C++ Вызов функции
C++ Вызов функции.
C++ Вызов функции
Вызов функции C++
C++ Вызов функции!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
enk
 Аватар для 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; // здесь ты приравниваешь матрицу указателей на символ к указателю на указатель на символ(массив символов к массиву строк).
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);
}
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,169
Завершенные тесты: 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();
}
vruleb
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 17
22.06.2012, 10:46  [ТС]     Вызов функции #5
В лабораторной работе требовалось написать вызов именно к функции выше, и изменять её нельзя. Сейчас не знаю что делать, попробую спросить у преподавателя.
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,169
Завершенные тесты: 1
22.06.2012, 11:58     Вызов функции #6
Может быть имелось ввиду
char *F12(char **p, int n)
Тогда p можно интерпретировать как двумерный массив символов,
но создавать его надо динамически и необходимые размерности как-то передавать в функцию.
vruleb
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 17
22.06.2012, 17:00  [ТС]     Вызов функции #7
Проверил, в задании именно так, как и в первом посте.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2012, 22:35     Вызов функции
Еще ссылки по теме:

Вызов функции в возврате значения функции C++
C++ Вызов функции
Вызов функции в параметре другой функции C++

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

Или воспользуйтесь поиском по форуму:
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 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++)
Yandex
Объявления
22.06.2012, 22:35     Вызов функции
Ответ Создать тему
Опции темы

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