Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/10: Рейтинг темы: голосов - 10, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 11.06.2009
Сообщений: 55
1

Cтроковые функции и указатели

21.09.2009, 11:09. Показов 1976. Ответов 15

Author24 — интернет-сервис помощи студентам
в общем задача такая
пользователь вводит ФИО, затем номер телефона в строковый массив
сколько угодно раз до нажатия определенного символа (допустим 0-exit)
затем предлагается найти по номеру ФИО или наоборот с помощью строковых функций...

пропустил 4 занятия в т.ч. и тему с указателями
не могу понять как правильно вводить данные в массив (как создавать и т.д.)
выборку из массива я сам сделаю...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2009, 11:09
Ответы с готовыми решениями:

Указатели на функции. Указатели на функции как формальные параметры у функциях высшего уровня
Найти наименьшее значение для функций используя функции и указатели на функции ...

Указатели на массивы. Указатели и функции
Вот задача: Даны два массива : А и B. Необходимо создать третий массив, в котором нужно...

Указатели и массивы. Указатели и функции
Никак не разберусь с указателями на функцию. Пишу в Visual Studio. Надо написать функцию...

Cтроковые операции(Pascal ABC)
1)Составить программу,вырезающую из строки S количество символов n, начиная с позиции i...

15
1 / 1 / 0
Регистрация: 15.07.2009
Сообщений: 25
21.09.2009, 11:28 2
Тебе поможет динамический массив и записи
Читай книги объектно ориентированное-программирование
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
21.09.2009, 11:31 3
kostarev, можно обойтись и без ООП, просто объявить
C++
1
2
3
4
5
struct User
{
    char FIO[90];
    int NPhone;
};
и с ней работать. Создать массив таких структур и все
0
0 / 0 / 0
Регистрация: 11.06.2009
Сообщений: 55
21.09.2009, 11:45  [ТС] 4
Цитата Сообщение от M128K145 Посмотреть сообщение
kostarev, можно обойтись и без ООП, просто объявить
C++
1
2
3
4
5
struct User
{
    char FIO[90];
    int NPhone;
};
и с ней работать. Создать массив таких структур и все
вся загвоздка что структуры мы еще не проходили и соответственно не могу решить используя данную конструкцию...
хотя класс struct значительно облегчил бы жизнь в данном случае.
0
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
21.09.2009, 12:24 5
А что вы проходили? стандарные контейнеры были? ИМХО, STL - просто, легко и надёжно.
0
0 / 0 / 0
Регистрация: 11.06.2009
Сообщений: 55
21.09.2009, 12:33  [ТС] 6
Цитата Сообщение от TanT Посмотреть сообщение
А что вы проходили? стандарные контейнеры были? ИМХО, STL - просто, легко и надёжно.
к сожалению нет
были указатели, функции, массивы, циклы (в обратном порядке ) вот сейчас начались строки и строковые функции и в связи с этим задали такую задачку
указатели и массивы динамические я пропустил в силу определенных обстоятельств
и теперь без них, хоть убей, не могу понять с чего начать
как выделить динамический массив и загонять туда данные =\
а ДЗ сдавать через 5-6 часов...
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
21.09.2009, 12:49 7
По простому:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <string.h>
#define MAXDATA 3
#define MAXLEN 256
 
int main(void)
{
    int i, ndata;
    char data[MAXDATA][MAXLEN], strfind[MAXLEN], *p;
 
    printf("Введите ФИО и номер телефона:\n");
    for(i = 0; i < MAXDATA; i++)
        if(fgets(data[i], MAXLEN, stdin) == NULL)
            break;
    ndata = i;
 
    printf("Что ищем? ");
    scanf("%s", strfind);
    for(i = 0; i < ndata; i++)
        if( (p = strstr(data[i], strfind)) != NULL)
            printf("Найдено: %s", data[i]);
    return 0;
}
1
0 / 0 / 0
Регистрация: 11.06.2009
Сообщений: 55
21.09.2009, 14:17  [ТС] 8
Добавлено через 40 минут
вобщем спасибо но множество ф-ций мы еще не проходили например fgets ((
0
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
21.09.2009, 14:22 9
указатели и массивы динамические я пропустил в силу определенных обстоятельств
Эт ты конечно зря, самое оптимально, по-моему, использовать здесь список. Примеров много в нете. но что-то мне подсказывает, что вы их тоже не проходили
0
0 / 0 / 0
Регистрация: 11.06.2009
Сообщений: 55
21.09.2009, 14:35  [ТС] 10
ладно...
попробуем по другому
мне нужен динамический двухмерный строковый массив
как выделить ему память не могу разобраться
C++
1
char *data = new char [];
это для одномерного как я понимаю...
а для двухменого как ?
0
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
21.09.2009, 15:49 11
C++
1
2
3
char **pArray = new char *[maxlen];
 
 pArray[i] = new char[];
1
0 / 0 / 0
Регистрация: 11.06.2009
Сообщений: 55
21.09.2009, 16:29  [ТС] 12
проблема ...
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 <iostream>
#include <string.h>
using namespace std;
void main()
{
    const int maxlen=256; 
    char **pArray = new char *[maxlen];
    char end;
    for (int i=0;i<maxlen;i++)
    {
        pArray[i] = new char[];
        cout<<"\nVvedite nomer F.I.O. i nomer telefona: ";
        gets(pArray[i]);
        cout<<"\nProdolzhaem vvod? (Y/N)";
        cin>>end;
        if (end=='n'||end=='N')
            break;
    }
}
на первой итерации могу ввести номер телефона
на второй программа пролетает и останавливается на выборе вводить дальше или нет =\
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
21.09.2009, 19:12 13
electromind, ты в одну строку должен вводить телефон и ФИО
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
21.09.2009, 19:23 14
electromind, в конце цикла поставь cin.ignore(), в потоке остается ненужный символ новой строки.
1
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
21.09.2009, 19:51 15
gets - это вроде не плюсовая функция. Если полностью на С++, то
так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void main()
{
    const int maxlen=256; 
    char pArray[maxlen][90];
    char end;
    for (int i=0;i<maxlen;i++)
    {
        cout<<"\nVvedite nomer F.I.O. i nomer telefona: ";
        cin.getline(pArray[i], 90);
        cout<<"\nProdolzhaem vvod? (Y/N)";
        cin>>end;
        if (end=='n'||end=='N')
            break;
        cin.ignore();
    }
}
0
0 / 0 / 0
Регистрация: 11.06.2009
Сообщений: 55
22.09.2009, 11:09  [ТС] 16
всем спасибо за помощь
проскакивает из-за того, когда вводится имя и номер, они разделяются пробелом... а т.к. cin работает до первого пробела и получается такая кака )))
еще раз благодарю всех за участие в обсуждении, тему можно закрывать.
0
22.09.2009, 11:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2009, 11:09
Помогаю со студенческими работами здесь

Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором функции
Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором...

Объявить массив из N указателей на функции, возвращающих указатели на функции, возвращающие указатель на char
Задание: Объявить массив из N указателей на функции, возвращающих указатели на функции,...

Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором функции
Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором...

Используя указатели на функцию вычислить значение функции в точке X в соответствии с выбором функции пользователем
Решил выложить свои лабораторные работы 1-10 за первый курс, первого семестра...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru