0 / 0 / 0
Регистрация: 05.04.2017
Сообщений: 23
1

Работа со строками через указатели

05.04.2017, 20:47. Показов 3917. Ответов 7

Студворк — интернет-сервис помощи студентам
прошу,помогите! нужно написать следующие программы,используя указатели: 1ЧАСТЬ :::: обьявить 2 строки,одну длинной 10 символов,другую - 5 . в первую записать свою фамилию,в другую скопировать ее,не превышая размер 2й строки.
2ЧАСТЬ::::: в массиве из 5 строк подсчитать количество букв "а" всего,и в каждой строке по отдельности.

обе с указателями
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2017, 20:47
Ответы с готовыми решениями:

Работа с массивами через указатели
прошу,помогите! нужно написать следующую программу,используя указатели: ввести целочисленный...

Работа с объектом через указатели
Всем привет, возникла необходимость работы с многочисленными объектами и их структурами - код...

Работа с массивом через указатели
Приветствую всех, форумчане! Проблемка у меня с данным кодом в следующем: что-то с указателями я...

Работа с массивом через пользовательские функции через указатели
Не хочет работать ( Выводит только последний элемент массива ) Help! #include <iostream> using...

7
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
05.04.2017, 21:08 2
Лучший ответ Сообщение было отмечено kirillgronin как решение

Решение

Вопрос так поставлен, что ничего не понятно.
Но все же, попробуем:
Часть 1;
C++
1
2
3
4
5
6
7
8
9
10
11
12
    char *str [2]; // Массив указателей на 2 строки.
    str[0] = new char[10]; // Создаем первую строку
    
    std::cout << "Введите фамилию: ";
    std::cin >> str[0];
    system ("cls");
    
    str[1] = new char (strlen(str[0])+1); // Создаем вторую строку для копирования из первой.
    std::strcpy (str[1], str[0]); // Копируем из первой строки во вторую.
 
    std::cout << "Во второй строке: ";
    std::cout << str[1] << std::endl;
А вот вторая часть, тоже интересная на мой взгляд:

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 <iostream>
#include <string>
#include <set>
#include <Windows.h>
 
 
int main(){
 
    SetConsoleCP (1251);
    SetConsoleOutputCP (1251);
    
    int count (0); // Счетчик
    char* str[10]; // Дан массив указателей типа Char на 10 строк.
 
    // Ради экономии времени, просто заполним все строки одним словом.
    for (int i(0); i!=10; i++){
        str[i] = new char [100]; // Строка на 100 символов
        std::strcpy (str[i], "Найти и сосчитать все буквы 'а'");
    }
    
    // Замечательно! Теперь, будем считать буковки:) 
    // Для удобства буду использовать переменные типа string
 
    for (int i(0); i!=10; i++){
        std::string mystr; // локальная переменная, которая удаляется при каждом новом повторе
        mystr += str[i]; // Копируем содержимое
 
        for (int i(0); i!=mystr.size(); i++){
            if(mystr[i] == 'а')
                count ++;
        }
        mystr.clear(); // Хотя, на всякий случай, очистим строку.
    }
 
    std::cout << "Количество букв 'а' составляет: " << count << std::endl;
 
    system ("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 05.04.2017
Сообщений: 23
05.04.2017, 21:22  [ТС] 3
благодарю,во 2й части пишет ошибку: 1>c:\users\admininstrator\documents\visual studio 2015\projects\consoleapplication5\consoleapplication5\source.cpp(18): error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

Добавлено через 6 минут
ДОБАВЛЕНИЕ #define _CRT_SECURE_NO_WARNINGS ничего вроде не дало...
0
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
05.04.2017, 21:50 4
Хотя, странно, что так себя ведет. Студия какая?
#pragma warning (disable : 4996);
0
0 / 0 / 0
Регистрация: 05.04.2017
Сообщений: 23
05.04.2017, 22:39  [ТС] 5
15я
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
05.04.2017, 23:06 6
Цитата Сообщение от Photofenix Посмотреть сообщение
str[0] = new char[10]; // Создаем первую строку
new char[11], '\0' забыли
0
411 / 146 / 48
Регистрация: 02.06.2016
Сообщений: 335
06.04.2017, 13:21 7
Цитата Сообщение от Photofenix Посмотреть сообщение
Для удобства буду использовать переменные типа string
Этот фрагмент без string:
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int i(0); i != 10; i++)
{
    char* mystr;
    mystr = str[i];
 
    while(*mystr)
    {
        if(*mystr == 'а')
            count ++;
       mystr++;     
    }
}
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
06.04.2017, 16:40 8
Цитата Сообщение от kirillgronin Посмотреть сообщение
ДОБАВЛЕНИЕ #define _CRT_SECURE_NO_WARNINGS ничего вроде не дало...
это должно быть объявлено до всех include.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2017, 16:40
Помогаю со студенческими работами здесь

Работа со структурами через указатели
Приветствую, форумчане. Не могу разобраться в следующем: есть массив структур. В структуре два...

Работа со строками через TStrings
Здравствуйте! вот есть у меня текстовый файл для проекта, в нем две колонки данных и делитель 4...

Работа с динамической памятью через указатели.
Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. Есть такая задача: Создать...

Работа со строками через динамический массив
помогите плз, вроде ничего сложного, а вот реализовать не могу... есть входной поток (файл), в нем...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru