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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
alex290408
Сообщений: n/a
#1

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

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

Народ,спасайте! Не могу написать программу!
Написать функцию, которая удваивает каждый символ строки. Заголовок функции: void doubleChar (char * s); Написать программу, которая принимает от пользователя набор строк (массив строк), удваивает каждый символ каждой строки и выводит преобразованные строки на экран!
Пожалуйста,кто может,помогите!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2011, 23:32     Написать функцию, которая удваивает каждый символ строки
Посмотрите здесь:

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

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

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

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

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

Написать функцию, которая определяет, сколько раз в стеке встречается заданный символ - C++
Написать функцию, которая определяет, сколько раз в стеке встречается заданный символ (СИМВОЛ ЗАДАЕТСЯ С КЛАВИАТУРЫ)

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
19.02.2011, 14:29     Написать функцию, которая удваивает каждый символ строки #2
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;
}
bimmerok
0 / 0 / 0
Регистрация: 18.02.2011
Сообщений: 4
20.02.2011, 23:34     Написать функцию, которая удваивает каждый символ строки #3
Но в программе с функцией нету ввода строк в массиве, тут единственный printf, а надо ввести кол-во строк, затем строки, затем должна вывести результат. Помогите, люди, сам не справлюсь, да и времени уже нет чтоб разобраться.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
21.02.2011, 22:11     Написать функцию, которая удваивает каждый символ строки #4
Цитата Сообщение от bimmerok Посмотреть сообщение
Но в программе с функцией нету ввода строк в массиве, тут единственный printf, а надо ввести кол-во строк, затем строки, затем должна вывести результат. Помогите, люди, сам не справлюсь, да и времени уже нет чтоб разобраться.
Вы вообще код видели? Программа принимает данные из стандартного ввода до символа конца файла, помещает их удвоенный вариант в безразмерный массив и выводит на стандартный вывод. Вводите столько строк, сколько нужно.
bimmerok
0 / 0 / 0
Регистрация: 18.02.2011
Сообщений: 4
23.02.2011, 00:09     Написать функцию, которая удваивает каждый символ строки #5
Спасибо за помощь. Видимо уровень знаний в с++ у меня не велик, не смог разобраться в вашей программе. Но ваш пример очень помог, у меня получилось так
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);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2011, 01:02     Написать функцию, которая удваивает каждый символ строки
Еще ссылки по теме:

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

Заполнить 2 двухмерных массива символами. Написать функцию которая ставит символ пробела в старшем и младшем...(Использование директив) - C++
Задание: Заполнить 2 двухмерных массива разной длины символами. Написать функцию которая ставит символ пробела в старшем и младшем байте...

Написать функцию, которая объединяет строки - C++
Доброго времени суток ! Нужно написать функцию которая объединяет сроки( nstrcat). Не понимаю почему она работает некорректно....

Написать функцию которая сцепляет 2 строки - C++
Здравствуйте, требуется написать функцию которая &quot;сцепляет&quot; (конкатенация) 2 строки. Обязательно использование адресной арифметики. Как...

Написать функцию, которая возвращается True, если символ, полученный функцией в качестве аргумента, является гласной буквой русского алфавита - C++
Люди добрые помогите исправить ошибки, а то в Си не оч) Написать функцию, которая возвращается True, если символ, полученный функцией...

Написать функцию которая печатает строки полиндром - C++
Привет всем! Помогите разобратса в задаче.:( Написать функцию которая печатает строки полиндром (тоесть с право на лево с лева на...


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

Или воспользуйтесь поиском по форуму:
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
23.02.2011, 01:02     Написать функцию, которая удваивает каждый символ строки #6
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;
}
Yandex
Объявления
23.02.2011, 01:02     Написать функцию, которая удваивает каждый символ строки
Ответ Создать тему
Опции темы

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