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

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

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

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

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

C++ Вызов функции
C++ Вызов функции.
C++ Вызов функции
Вызов функции C++
C++ Вызов функции в C++
C++ Вызов функции!
вызов функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Модератор
Эксперт С++
6245 / 5848 / 1891
Регистрация: 18.12.2011
Сообщений: 14,982
Завершенные тесты: 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
Модератор
Эксперт С++
6245 / 5848 / 1891
Регистрация: 18.12.2011
Сообщений: 14,982
Завершенные тесты: 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++ Вызов функции
C++ Вызов функции
вызов функции из под функции C++

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

Или воспользуйтесь поиском по форуму:
Crudelis
Шаровик затейник
670 / 412 / 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     Вызов функции
Ответ Создать тему
Опции темы

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