Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
alex290408

Написать функцию, которая удваивает каждый символ строки

18.02.2011, 23:32. Показов 3757. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ,спасайте! Не могу написать программу!
Написать функцию, которая удваивает каждый символ строки. Заголовок функции: void doubleChar (char * s); Написать программу, которая принимает от пользователя набор строк (массив строк), удваивает каждый символ каждой строки и выводит преобразованные строки на экран!
Пожалуйста,кто может,помогите!
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2011, 23:32
Ответы с готовыми решениями:

Написать функцию, которая удваивает каждый символ строки.
Ребята, помогите! Написать функцию, которая удваивает каждый символ строки. Заголовок функции: void doubleChar (char * s); Написать...

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

Написать функцию, которая удаляет из строки символ с заданным номером
Здравствуйте, помогите решить задачу - Написать функцию, которая удаляет из строки символ с заданным номером. Какой здесь применять...

5
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
19.02.2011, 14:29
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 <stdlib.h>
#include <string.h>
#include <stdio.h>
 
void DoubleSymbols(char *string) {
  char *doubled = (char*)malloc(strlen(string) * 2 + 1);
  char *source = string, *destination = doubled;
  for (; *source != '\0'; source++, destination += 2)
    *(destination + 1) = *destination = *source;
  *destination = '\0';
  strcpy(string, doubled);
  free(doubled);
}
 
int main(int argc, char *argv[]) {
  const int buffer_size = 65536;
  char buffer[buffer_size];
 
  int array_recap = 1024;  // Jedi force
  int array_size = 0;
  int array_capacity = array_recap;
  char **array = (char**)malloc(sizeof(char*) * array_capacity);
 
  int i;  // счетчик
  while (!feof(stdin)) {
    if (fgets(buffer, buffer_size / 2, stdin)) {
      buffer[strlen(buffer) - 1] = '\0'; // удаление переноса строки
      DoubleSymbols(buffer);
      if (array_size == array_capacity) {
        char **new_array = (char**)malloc(sizeof(char*) * (array_capacity += array_recap));
        for (i = 0; i < array_size; ++i) new_array[i] = array[i];
        free(array);
        array = new_array;
      }
      array[array_size++] = strcpy((char*)malloc(strlen(buffer) + 1), buffer);
    }
  }
 
  for (i = 0; i < array_size; ++i) {
    printf("%s\n", array[i]);
    free(array[i]);
  }
  free(array);
  return 0;
}
Добавлено через 14 часов 15 минут
Без буфера и функции. Символ с потока на вход -- два символа на выход, кроме переноса строки.
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main(int argc, char *argv[]) {
  char symbol;
  while (!feof(stdin)) 
    if ((symbol = fgetc(stdin)) != EOF) {
      fputc(symbol, stdout);
      if (symbol != '\n')
        fputc(symbol, stdout);
    }
  return 0;
}
0
0 / 0 / 0
Регистрация: 18.02.2011
Сообщений: 4
20.02.2011, 23:34
Но в программе с функцией нету ввода строк в массиве, тут единственный printf, а надо ввести кол-во строк, затем строки, затем должна вывести результат. Помогите, люди, сам не справлюсь, да и времени уже нет чтоб разобраться.
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
21.02.2011, 22:11
Цитата Сообщение от bimmerok Посмотреть сообщение
Но в программе с функцией нету ввода строк в массиве, тут единственный printf, а надо ввести кол-во строк, затем строки, затем должна вывести результат. Помогите, люди, сам не справлюсь, да и времени уже нет чтоб разобраться.
Вы вообще код видели? Программа принимает данные из стандартного ввода до символа конца файла, помещает их удвоенный вариант в безразмерный массив и выводит на стандартный вывод. Вводите столько строк, сколько нужно.
0
0 / 0 / 0
Регистрация: 18.02.2011
Сообщений: 4
23.02.2011, 00:09
Спасибо за помощь. Видимо уровень знаний в с++ у меня не велик, не смог разобраться в вашей программе. Но ваш пример очень помог, у меня получилось так
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
#include <iostream>
#include <conio.h>
using namespace std;
void doubleChar (char *s);
    int main (){
    int rows;
    cout<<"Enter number of rows"<<endl;
    cin>>rows;
    cin.get();
    
    char **s=new char *[rows];
    for (int i=0; i<rows; i++)
    {
        cout<<"Enter String"<<endl;
        s[i]=new char [255];
        cin.getline(s[i],255);
    }
    for (int i=0; i<rows; i++)
        {doubleChar(s[i]);
    cout <<"Doubled strings:"<<endl<<s[i]<<endl;
    }
    _getch();
    return 0;
}
void doubleChar(char *string) {
  char *doubled = (char*)malloc(strlen(string) * 2 + 1);
  char *source = string, *destination = doubled;
  for (; *source != '\0'; source++, destination += 2)
    *(destination + 1) = *destination = *source;
  *destination = '\0';
  strcpy(string, doubled);
  free(doubled);
}
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
23.02.2011, 01:02
bimmerok, Вообще в С++ стоит пользоваться С++, а не мешать С++ с Си...
В С++ будет выглядеть например так...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
 
int main()
{
    std::vector<std::string> vec((std::istream_iterator<std::string>(std::cin)), std::istream_iterator<std::string>());;
    for(std::vector<std::string>::iterator iter=vec.begin(); iter != vec.end(); ++iter)
    {
         for(std::string::iterator it=iter->begin(); it != iter->end(); ++it)
         {
              it=iter->insert(it, *it);
              ++it;
         }
    }
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.02.2011, 01:02
Помогаю со студенческими работами здесь

Написать функцию, которая выводит строку, состоящую из одинаковых символов. Длина строки и символ являются параметрами процедуры
Написать функцию, которая выводит строку, состоящую из одинаковых символов. Длина строки и символ являются параметрами процедуры.

Создать функцию, которая на вход получает строку символов и один символ, функция печатает те слова строки, в которых встречается этот символ.
Здраствуйте, вы не могли б мне помоч, у меня проблема з задачей, в коде постоянно выдаёт ошыбки на мове С, , и это еще перевести в...

Написать функцию которая проверяет на уникальность каждый номер
Решите пожалуйста Добавлено через 4 минуты Написать функцию которая проверяет табельный номер студента

Написать функцию, которая определяет, является ли введенный символ буквой
5.9 Составить функцию, которая принимает символ. Если символ на входе - не буква, функция просто возвращает его же. В противном случае,...

Определить функцию, которая получает каждый второй элемент из строки Х
Определить функцию, которая вылучает каждый второй элемент из строки Х


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru