Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
alex290408
0 / 0 / 0
Регистрация: 15.02.2011
Сообщений: 2
#1

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

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

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

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

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

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

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

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

5
lemegeton
2933 / 1362 / 467
Регистрация: 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;
}
0
bimmerok
0 / 0 / 0
Регистрация: 18.02.2011
Сообщений: 4
20.02.2011, 23:34 #3
Но в программе с функцией нету ввода строк в массиве, тут единственный printf, а надо ввести кол-во строк, затем строки, затем должна вывести результат. Помогите, люди, сам не справлюсь, да и времени уже нет чтоб разобраться.
0
lemegeton
2933 / 1362 / 467
Регистрация: 29.11.2010
Сообщений: 2,725
21.02.2011, 22:11 #4
Цитата Сообщение от bimmerok Посмотреть сообщение
Но в программе с функцией нету ввода строк в массиве, тут единственный printf, а надо ввести кол-во строк, затем строки, затем должна вывести результат. Помогите, люди, сам не справлюсь, да и времени уже нет чтоб разобраться.
Вы вообще код видели? Программа принимает данные из стандартного ввода до символа конца файла, помещает их удвоенный вариант в безразмерный массив и выводит на стандартный вывод. Вводите столько строк, сколько нужно.
0
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);
}
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 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;
}
1
23.02.2011, 01:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2011, 01:02

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

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

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


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

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

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