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

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

Войти
Регистрация
Восстановить пароль
 
LILIE
Сообщений: n/a
#1

функция с указателем - C++

14.11.2012, 12:55. Просмотров 714. Ответов 10
Метки нет (Все метки)

насколько я поняла, то нужно с помощью функции(при этом используя указатели) написать код, который заменяет строчные буквы на заглавные
перевод задания особо не поняла, если что, то вот:

Write a function that will find and return most recent word in the given text.
The prototype of the function have to be the following void mostRecent(char *text,char *word)
In char *word your function hav.e to return the most recent word that occurce in the text.
Your program have to be not case-sensitive(ignore case - "Can" and "CAN" are the same words)
Also note than WORD is sequence of letters sepereated by whitespace
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 12:55     функция с указателем
Посмотрите здесь:

функция с указателем - C++
Плз, помогите.... :wall::help: надо написать на языке С Написать и протестировать функцию STRP ( str1, str2), которая возвращает...

Функция с указателем на void** не получается вернуть данные? - C++
Здорова! Есть код: #include <iostream> using std::cout; struct IMotion { virtual int& get_val()=0; };

Указатели на функцию. Задача 2: функция предикат с void указателем - C++
Сумму элементов массива, лежащих в пределах (a <b)

В чем разница между указателем и указателем на указатель? - C++
int x, *p, *q; x=10; p=&x; q=p; cout<<*q; int x, *p, **q; x=10; p=&x; q=&p;

Функция с указателем и индексом(Удаляет в строке лидирующие пробелы. Возвращает указатель на преобразованную строку.) - C++
Ребята помогите зачет получить, на парах не был..( Написать следующие функции в двух вариантах: с использованием индексов и...

Переделать функцию c указателем на int, на функцию с указателем на void - C++
Есть рабочий код qsort для int: void qsort(int *base, int n) { // Прекратить если количество элементов меньше либо равно единице....

Работа с указателем - C++
#include <ntddk.h> NTSTATUS PsLookupProcessByProcessId(__in HANDLE ProcessId, __out PEPROCESS *Process); static VOID...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
denys_l
52 / 52 / 4
Регистрация: 26.09.2011
Сообщений: 186
14.11.2012, 13:07     функция с указателем #2
Написать функцию, которая будет искать и возвращать "most recent" слово в заданном тексте. Прототип функции должен быть следующим:
C++
1
void mostRecent(char *text,char *word);
Параметр - char *word - сюда функция должна возвращать "most recent" слово, встречающееся в тексте. Программа не должна быть регистро зависимой (т.е. слова "Can" и "CAN" это одно и тоже слово). Любое слово - это последовательность символов, разделенных пробелом.

Как я понял, то здесь не нужно заменять строчные буквы на заглавные. Нужно возвратить какое-то слово. Не могу понять, что подразумевают под most recent
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6444 / 3083 / 306
Регистрация: 04.12.2011
Сообщений: 8,494
Записей в блоге: 4
14.11.2012, 13:10     функция с указателем #3
Цитата Сообщение от LILIE Посмотреть сообщение
The prototype of the function have to be the following void mostRecent(char *text,char *word)
In char *word your function hav.e to return the most recent word that occurce in the text.
Your program have to be not case-sensitive(ignore case - "Can" and "CAN" are the same words)
Also note than WORD is sequence of letters sepereated by whitespace
Вкратце вроде так: написать функцию принимающую С-строку через первый параметр и возвращающую наиболее часто встреченное в ней слово во второй параметр, тоже в С-строку (через указатель на char).
Прототип:
void mostRecent(char *text, char *word);
Pavell
14 / 14 / 0
Регистрация: 13.11.2012
Сообщений: 28
14.11.2012, 13:11     функция с указателем #4
совсем не правильно поняла, тут написано, что программа должна быть нечувствительна к регистру, т.е. слова Can и CAN для нее должны считаться одинаковыми словами. А вообще она должна возвращать слово из всего текста
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
14.11.2012, 13:41     функция с указателем #5
Цитата Сообщение от denys_l Посмотреть сообщение
Не могу понять, что подразумевают под most recent
Цитата Сообщение от Pavell Посмотреть сообщение
А вообще она должна возвращать слово из всего текста
Цитата Сообщение от IGPIGP Посмотреть сообщение
возвращающую наиболее часто встреченное в ней слово
Где вы английский учили? Функция должна возвращать указатель на позицию последнего слова в тексте.
denys_l
52 / 52 / 4
Регистрация: 26.09.2011
Сообщений: 186
14.11.2012, 13:47     функция с указателем #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Где вы английский учили? Функция должна возвращать указатель на позицию последнего слова в тексте.
Исхогдя из контекста было бы уместней написать the last word...
Pavell
14 / 14 / 0
Регистрация: 13.11.2012
Сообщений: 28
14.11.2012, 15:21     функция с указателем #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Где вы английский учили?
он у меня родной
подумаешь "последнее" пропустил, ну и да не само слово возвращать, а указатель на него (тут виноват)
denys_l
14.11.2012, 15:25
  #8

Не по теме:

в принципе, можно было по прототипу догадаться, какое слово возвращать...

IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6444 / 3083 / 306
Регистрация: 04.12.2011
Сообщений: 8,494
Записей в блоге: 4
14.11.2012, 16:21     функция с указателем #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Где вы английский учили? Функция должна возвращать указатель на позицию последнего слова в тексте.
Верно, resent, действительно последний. Спасибо. Что касается типа возврата, то делается же он в процедурном С-стиле. То есть строго говоря функция не имеет типа возврата или др. сл., имеет тип void. Второй параметр - указатель на чар и ему присваивается результат, так что с этим всё верно.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
14.11.2012, 16:27     функция с указателем #10
Цитата Сообщение от IGPIGP Посмотреть сообщение
Верно, resent, действительно последний. Спасибо. Что касается типа возврата, то делается же он в процедурном С-стиле. То есть строго говоря функция не имеет типа возврата или имеет тип void. Второй параметр - указатель на чар и ему присваивается результат, так что с этим всё верно.
Я тут задумался и понял, что был не прав насчёт "указатель на позицию последнего слова в тексте". Если мы в функции мы найдём, что посл.слово начинается с 7го символа, то согласно моему ответу должны будем сделать word=text+7; и выйти из функции. Но это не верно, т.к. значение переданного аргумента не изменится после выхода из функции. Нужно именно что возвращать копию последнего слова в тексте делать strncpy(word, text+7, n); и выйти из функции.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 20:33     функция с указателем
Еще ссылки по теме:

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

Цикл с указателем - C++
Программу, которая проверяет, сколько раз в строку входит знак ? нужно из такой #include <iostream> #include <string> using...

Калькулятор с указателем - C++
Доброго всем времени суток! Вот наваял калькулятор,а вот как в нем можно использовать вместо переменных один указатель? Зараннее благодарен...

Массив с указателем - C++
при формировании выходной строки каждый символ должен дублироваться. Например дана abc, а при выходе aabbcc/ Все это должно быть...

Непоняток с указателем - C++
Объясните пожалуйста надпись. Вот простенький пример. include <iostream> using namespace std; int cubeV (int *n) { *n = *n *...


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

Или воспользуйтесь поиском по форуму:
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6444 / 3083 / 306
Регистрация: 04.12.2011
Сообщений: 8,494
Записей в блоге: 4
14.11.2012, 20:33     функция с указателем #11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Я тут задумался и понял, что был не прав насчёт "указатель на позицию последнего слова в тексте". Если мы в функции мы найдём, что посл.слово начинается с 7го символа, то согласно моему ответу должны будем сделать word=text+7; и выйти из функции. Но это не верно, т.к. значение переданного аргумента не изменится после выхода из функции. Нужно именно что возвращать копию последнего слова в тексте делать strncpy(word, text+7, n); и выйти из функции.
Думаю можно выяснить длину (*text) потом установить word на конец text пройти цикл while декрементируя word пока не встретим "непробел" и потом еще один цикл пока не встретим пробел. Инкриментируем до break и в этом случае. И всё. И в обоих случаях совмещаем проверку с проверкой на валидность (вдруг строка из пробелов или одного слова)

Добавлено через 2 часа 3 минуты
Строго прототипу не получается. Просто решается если передать указатель на указатель.
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
#include<string>
#include <iostream>
using namespace std;
void mostRecent(char *text,char **word);
 
int main(){
    setlocale(0, "rus");
const int sz=1000;
string inpStr;
char buf[1000];
char* text;
cout<<"Введите строку до "<<sz<<" символов ";
text=   gets(buf);
cout<<"\nВвелено:\t"<<text;
char* word=text;
mostRecent(text, &word);
cout<<"\nЗаднее слово поцака - :\t"<<word<<"\nКю!";
std::cout << std::endl;
std::system("pause");
return 0;    
}
void mostRecent(char *text,char **word){
int textLen=0;
 
while(text[textLen]){
textLen++;
}
if(textLen&&textLen!=1){
for(int i=textLen-1;i>0; i--){
if(text[i]==' '){
*word=&text[i+1];
    break;
}
}
}else{
return;
}
return;
}


Добавлено через 1 час 26 минут
Вот так в соответствии с прототипом. Прав Kuzia domovenok копию и нужно присвоить.
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<string.h>
#include <iostream>
using namespace std;
void mostRecent(char *text,char *word);
int main(){
    setlocale(0, "rus");
const int sz=1000;
string inpStr;
char buf[sz];
char* text;
cout<<"Введите строку до "<<sz<<" символов ";
text=   gets(buf);
cout<<"\nВведено:\t"<<text;
char* word=new char[sz];
mostRecent(text, word);
cout<<"\nПоследнее слово - :\t"<<word;
std::cout << std::endl;
std::system("pause");
return 0;    
}
void mostRecent(char *text,char *word){
int textLen=0;
 
while(text[textLen]){
textLen++;
}
strcpy(word,&text[textLen]);
int ind=0;
if(textLen&&textLen!=1){
for(int i=textLen-2;i>0; i--){
if(i!= textLen-1 && (text[i]==' '&&text[i+1]==' ')) continue;
if(text[i]==' '){
ind=i+1;
    break;
}
}
}else{
cout<<"\nПоследнее слово - :\t";
std::cout << std::endl;
std::system("pause");
exit(1);
}
strcpy(word,&text[ind]);
return;
}
Добавлено через 10 минут
Думаю можно выяснить длину (*text) потом установить word на конец text пройти цикл while декрементируя word пока не встретим "непробел" и потом еще один цикл пока не встретим пробел. Инкриментируем до break и в этом случае. И всё. И в обоих случаях совмещаем проверку с проверкой на валидность (вдруг строка из пробелов или одного слова)

Добавлено через 2 часа 3 минуты
Строго прототипу не получается. Просто решается если передать указатель на указатель.
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
#include<string>
#include <iostream>
using namespace std;
void mostRecent(char *text,char **word);
 
int main(){
    setlocale(0, "rus");
const int sz=1000;
string inpStr;
char buf[1000];
char* text;
cout<<"Введите строку до "<<sz<<" символов ";
text=   gets(buf);
cout<<"\nВвелено:\t"<<text;
char* word=text;
mostRecent(text, &word);
cout<<"\nЗаднее слово поцака - :\t"<<word<<"\nКю!";
std::cout << std::endl;
std::system("pause");
return 0;    
}
void mostRecent(char *text,char **word){
int textLen=0;
 
while(text[textLen]){
textLen++;
}
if(textLen&&textLen!=1){
for(int i=textLen-1;i>0; i--){
if(text[i]==' '){
*word=&text[i+1];
    break;
}
}
}else{
return;
}
return;
}


Добавлено через 1 час 26 минут
Вот так в соответствии с прототипом. Прав Kuzia domovenok копию и нужно присвоить.
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
#include<string.h>
#include <iostream>
using namespace std;
void mostRecent(char *text,char *word);
int main(){
    setlocale(0, "rus");
const int sz=1000;
string inpStr;
char buf[sz];
char* text;
cout<<"Введите строку до "<<sz<<" символов ";
text=   gets(buf);
cout<<"\nВведено:\t"<<text;
char* word=new char[sz];
mostRecent(text, word);
cout<<"\nПоследнее слово - :\t"<<word;
std::cout << std::endl;
std::system("pause");
return 0;    
}
void mostRecent(char *text,char *word){
int textLen=0;
 
while(text[textLen]){
textLen++;
}
strcpy(word,&text[textLen]);
int ind=0;
if(textLen&&textLen!=1){
for(int i=textLen-2;i>0; i--){
if(i!= textLen-1 && (text[i]==' '&&text[i+1]==' ')) continue;
if(text[i]==' '){
ind=i+1;
    break;
}
}
}else{
if(textLen==1){
cout<<"\nПоследнее слово - :\t"<<word;
std::cout << std::endl;
std::system("pause");
}else{
cout<<"\nПоследнее слово - :\t";
std::cout << std::endl;
std::system("pause");
}
exit(1);
}
strcpy(word,&text[ind]);
return;
}
Yandex
Объявления
14.11.2012, 20:33     функция с указателем
Ответ Создать тему
Опции темы

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