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

Точки заменить их порядковым номером

21.04.2016, 17:09. Показов 1276. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание звучит так: заменить все точки цифрами, с соответствующими им номерами.
Написал этот код. Но тут проверка уже на самом выводе. Подскажите, как поменять в самой строке?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include "string.h"
#include "locale.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0, "RUS");
    char str[500];
    printf("Введите начальный текст (до 500 символов)\n");
    gets_s(str);
    printf("\nHачальный текст:\n");
    puts(str);
    printf("\nКонечный текст\n");
    for (int i=0; i < strlen(str); i++)
    {
        if (str[i] == '.')
            printf("%d", i+1);
        else printf("%c", str[i]);
    }
    _gettch();
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.04.2016, 17:09
Ответы с готовыми решениями:

Найти количество слов, начинающихся с заданного символа, и заменить эти слова их порядковым номером в строке, заключенным в фигурные скобки
условие Дана строка. Группы символов, разделенные пробелами (одним или несколькими) и не...

Вывести на экран все компоненты файла с порядковым номером кратным 3
Создать файл и записать в него обратные натуральные числа 1, 1/2, . 1/n. Вывести на экран все...

Найти элементы массива, в которых значение совпадает с порядковым номером и подсчитать их количество
Здравствуйте! Помогите пожалуйста с задачей. Дано линейный массив действительных чисел. Найти...

В тексте каждую букву заменить ее номером в алфавите
В тексте каждую букву заменить ее номером в алфавите. Текст вводится с клавиатуры.

26
 Аватар для Соловьёв_Егор
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242
22.04.2016, 00:03 2
По написанному условию заменить символ с индексом i на число i+1, предварительно преобразовав i+1 в символ.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12836 / 7572 / 1765
Регистрация: 25.07.2009
Сообщений: 13,969
22.04.2016, 03:01 3
Цитата Сообщение от Xiba Посмотреть сообщение
Введите начальный текст (до 500 символов)
то есть теоритически может быть 500 точек (ну или 499). Как при этом строка будет выглядеть и на сколько она увиличится, учитывать будем?
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 16
22.04.2016, 18:34  [ТС] 4
Цитата Сообщение от Соловьёв_Егор Посмотреть сообщение
По написанному условию заменить символ с индексом i на число i+1, предварительно преобразовав i+1 в символ.
Так не выйдет даже если точка просто стоит на 10+ позиции.

Добавлено через 1 минуту
Если все символы точки, то нужно будет отображать только номера их положения. Поэтому да, нужно учитывать
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
37457 / 20828 / 4281
Регистрация: 12.02.2012
Сообщений: 34,246
Записей в блоге: 14
22.04.2016, 18:38 5
Как почти всегда в таких задачах, формулировка некорректна. "Соответствующий номер" - это порядковый номер точки, как символа. или номер точки (первая точка - 1, вторая - 2 и т.п.)?
0
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
22.04.2016, 18:39 6
Цитата Сообщение от Xiba Посмотреть сообщение
с соответствующими им номерами
что имеется ввиду? номер как номер символа в строке? или порядковый номер только среди точек?

Добавлено через 47 секунд
упсссс....уже спросили
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 16
22.04.2016, 18:45  [ТС] 7
Как номер символа в строке
0
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
22.04.2016, 22:06 8
Xiba,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main()
{
    int i = 0;
    char c;
    puts("Enter text:");
    while((c = getchar()) != '\n'){
        if(c == '.'){
            printf("%d", i);
        }
        else
            putchar(c);
        i++;
    }
    return 0;
}
Добавлено через 16 минут
касательно вашего кода - то почему в строке 17
C
1
printf("%d", i+1);
?должно же быть
C
1
printf("%d", i);
Добавлено через 2 минуты
я ваш код немного адаптировал под свою среду - вполне работает
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include "string.h"
 
int main()
{
 
    char str[500];
    int i;
    printf("Введите начальный текст (до 500 символов)\n");
    gets(str);
    printf("\nHачальный текст:\n");
    puts(str);
    printf("\nКонечный текст\n");
    for ( i=0; i < strlen(str); i++)
    {
        if (str[i] == '.')
            printf("%d", i);
        else printf("%c", str[i]);
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 16
23.04.2016, 08:06  [ТС] 9
По сути, тут то же самое, что и в моем коде, а нужно заменять точки непосредственно в самой строке, а не на выводе
0
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
23.04.2016, 10:10 10
Цитата Сообщение от Xiba Посмотреть сообщение
нужно заменять точки непосредственно в самой строке, а не на выводе
ну так вас же спрашивали
Цитата Сообщение от easybudda Посмотреть сообщение
то есть теоритически может быть 500 точек (ну или 499). Как при этом строка будет выглядеть и на сколько она увиличится, учитывать будем?
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 16
23.04.2016, 10:13  [ТС] 11
Если все символы точки, то нужно будет отображать только номера их положения. Поэтому да, нужно учитывать
Так я же и ответил
0
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
23.04.2016, 10:26 12
Цитата Сообщение от Xiba Посмотреть сообщение
Так я же и ответил
совет бесплатный-когда вот так отвечаете,человек может быть и не в курсе что вы ему ответили,поэтому обращайтесь к конкретному форумчанину,когда ему пишете.
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 16
23.04.2016, 11:34  [ТС] 13
Цитата Сообщение от LFC Посмотреть сообщение
совет бесплатный-когда вот так отвечаете,человек может быть и не в курсе что вы ему ответили,поэтому обращайтесь к конкретному форумчанину,когда ему пишете.
Как скажете
0
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
23.04.2016, 11:58 14
C++
1
2
3
for(i=0; i < strlen(str); i++){
  if(str[i] == '.') str[i] = i;   
  printf("%c", str[i]);}
- так что-ли?
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 16
23.04.2016, 12:11  [ТС] 15
Цитата Сообщение от DemolitionMan Посмотреть сообщение
C++
1
2
3
for(i=0; i < strlen(str); i++){
  if(str[i] == '.') str[i] = i;   
  printf("%c", str[i]);}
- так что-ли?
Так оно не работает
0
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
23.04.2016, 12:21 16
Ну идри его мать, в какой строке ошибка и какая ошибка?
0
 Аватар для Соловьёв_Егор
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242
23.04.2016, 12:26 17
Цитата Сообщение от DemolitionMan Посмотреть сообщение
Ну идри его мать, в какой строке ошибка и какая ошибка?
В том, что вы пытаетесь в строку записать число без преобразования. Скорее всего, туда будет записан символ с кодом, равным i.
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 16
23.04.2016, 12:42  [ТС] 18
Цитата Сообщение от Соловьёв_Егор Посмотреть сообщение
В том, что вы пытаетесь в строку записать число без преобразования. Скорее всего, туда будет записан символ с кодом, равным i.
Именно. И на выводе будет символ с кодом, равным i
0
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
23.04.2016, 13:21 19
printf("%d", str[i]); - вот так что-ли надо?
Изучайте Си плотнее, а то уже детский сад уже какой-то пошел.
Скоро будут темы создавать: как мне завести переменную?
0
 Аватар для Соловьёв_Егор
60 / 60 / 53
Регистрация: 17.02.2013
Сообщений: 242
23.04.2016, 13:40 20
Лучший ответ Сообщение было отмечено Xiba как решение

Решение

Цитата Сообщение от DemolitionMan Посмотреть сообщение
printf("%d", str[i]); - вот так что-ли надо?
Изучайте Си плотнее, а то уже детский сад уже какой-то пошел.
Скоро будут темы создавать: как мне завести переменную?
Вы вообще задание читали? Преобразование должно происходить в самой строке, а не вывести на экран вместо символа его позицию.

Добавлено через 15 минут
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
int main(){
    setlocale(LC_ALL, "RUSSIAN");
 
    char *str, letter;
    int numOfLetters=0, i, pos, j, temp, ost, p=0;
 
    str=(char*)malloc(0);
 
    printf("Введите строку: ");
    do{
        letter=getchar();
        numOfLetters++;
        str=(char*)realloc(str, numOfLetters*sizeof(char));
 
        str[numOfLetters-1]=(letter=='\n' ? '\0' : letter);
    }while(letter!='\n');
    fflush(stdin);
 
    printf("Исходный текст: %s\n", str);
 
    numOfLetters--;
 
    str=(char*)realloc(str, (numOfLetters)*sizeof(char));
 
    printf("\nТекст после преобразования: ");
    for(i=0; i<numOfLetters; i++){
        if(str[i]=='.'){
            pos=0;
            temp=i-p;
 
            while((temp/=10)!=0){
                pos++;
                p++;
            }
 
            if(pos>0){
                temp=i-p+1;
                numOfLetters+=pos;
                str=(char*)realloc(str, numOfLetters*sizeof(char*));
                for(j=numOfLetters; j>i; j--){
                    str[j]=str[j-1];
                }
 
                for(j=pos; j>=0; j--){
                    ost=temp%10;
                    temp/=10;
                    str[i+j]=ost+'0';
                }
            }else{
                temp=i-p;
                str[i]=temp+'0';
            }
        }
    }
 
    str=(char*)realloc(str, (numOfLetters+1)*sizeof(char*));
    str[numOfLetters]='\0';
    printf("%s", str);
 
    free(str);
 
    return 0;
}
1
23.04.2016, 13:40
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.04.2016, 13:40
Помогаю со студенческими работами здесь

В матрице заменить буквы их порядковым номером
Дано NxN две матрицы, одна из символов одна из цифр. Например вот так : a b c //a=1...

Элементы с четным порядковым номером заменить на 02
Массив из восьми элементов. Элементы с четным порядковым номером заменить на 02. Помогите кому...

Каждую букву заменить ее порядковым номером в алфавите
Доброго времени. Очень нужна помощь с заданием. В тексте каждую букву заменить ее порядковым...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru