С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
1 / 1 / 0
Регистрация: 03.03.2007
Сообщений: 11

Задача на строки(поправьте решение)

03.03.2007, 23:02. Показов 3937. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание.
Преобразовать строку, содержащую выражение на Си с операциями (=,==,!=,a+=), в
строку, содержащую эти же операции с синтаксисом языка Паскаль (:=,=,#,a=a+).

Пробовал решать " в лоб ", но не прокатило.
Моя попытка решения.
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
#include <stdio.h>
#include <string.h>
#include <conio.h>
 
void main(){
    int i,kod;
    char string[100];
 
    printf("Введите строку :\n");
    gets(string);
    for(i=0;i<strlen(string);i++){
        if(string[i]=='='){
            string[i]=':=';
        }
        else{
            if(string[i]=='=='){
                string[i]='=';
            }
            else{
                if(string[i]=='!='){
                    string[i]='#';
                }
                else{
                    if(string[i]=='a+='){
                        string[i]='a=a+';
                    }
                    else{
                        if(string[i]=='a-='){
                            string[i]='a=a-';
                        }
                    }
                }
            }
        }
    }
    puts(string);
    getch();
}
При замене меняется символ на символ, так что замена знака '=' на ':=' не пройдет т.к. заменится только на ':'(один символ меняется соответственно только на один символ). В связи с этим надо менять символ на строку. Еще не проходит фокус если присваиваю символьной переменной значение 'a=a+', т.к. больше двух символов char не хочет понимать=(( помогите с задачкой. Учюсь на первом курсе так что объясняйте хоть более менее понятно=)
P.S. Почему при написание сообщения текст выравнивается как я хочу, а при нажатии сохранить все выравнивается по левому краю?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.03.2007, 23:02
Ответы с готовыми решениями:

Поправьте программу pascal строки
Воопщем что то не могу понять надо написать программу которая после каждой буквы К ставит еще одну букву К вроде бы программу написал ну...

Поправьте пожалуйста код, выбирает последние строки в файле
Есть такой код: &lt;?php $domians = &quot;data/domain.txt&quot;; { if(IsSet($array, $filename)) { $fp = fopen($filename,...

СМА BOSCH WAB16262ME, ошибка E16, поправьте дамп, Ошибка E16, поправьте дамп епром
Принесли на ремонт плату. Из инфы пока эта. E-NR WAB16262ME/22 При любом повороте селектора сразу ошибка E16. Вроде на столе, без...

9
Администратор
 Аватар для mik-a-el
87827 / 53148 / 249
Регистрация: 10.04.2006
Сообщений: 13,761
03.03.2007, 23:37
Цитата Сообщение от SN@KE
При замене меняется символ на символ, так что замена знака '=' на ':=' не пройдет т.к. заменится только на ':'(один символ меняется соответственно только на один символ).
Используй не замену, а удаляй старый символ и вместо него вставляй новый, тогда будет без разницы, сколько их.

Цитата Сообщение от SN@KE
P.S. Почему при написание сообщения текст выравнивается как я хочу, а при нажатии сохранить все выравнивается по левому краю?
Используй тег [code] вокруг кода. Про остальные теги можно почитать здесь.
0
dogad
03.03.2007, 23:42
Цитата Сообщение от mik-a-el
удаляй старый символ и вместо него вставляй новый, тогда будет без разницы, сколько их.
Да, только перед этим сохраняй номер позиции старого символа, чтобы знать, куда вставлять.
1 / 1 / 0
Регистрация: 03.03.2007
Сообщений: 11
03.03.2007, 23:44  [ТС]
Ненавижу работу с указателями, без них моно. Если да то объяните как?
P.S.Дайте кусок кода для одной замены, если можете.
0
dogad
03.03.2007, 23:52
Цитата Сообщение от SN@KE
Ненавижу работу с указателями, без них моно. Если да то объяните как?
Есть функции замены подстроки - их и пользуй.
И никаких указателей
1 / 1 / 0
Регистрация: 03.03.2007
Сообщений: 11
04.03.2007, 00:00  [ТС]
Функцию замены подстроки не знаю.
Знаю следующие strcpy,strcat,strlen,strcmp,strchr,strst r.
Дайте пример кода пожалуйста, там дальше сам разберусь. Плиз очень надо, а то осталось токо эта задачка, и никак не осилю.
0
dogad
04.03.2007, 00:10
Цитата Сообщение от SN@KE
Функцию замены подстроки не знаю.
Знаю следующие strcpy,strcat,strlen,strcmp,strchr,strst r.
Функция-член replace() дает десять способов заменить одну подстроку на другую (их длины не обязаны совпадать). В двух основных формах replace() первые два аргумента задают заменяемую подстроку: в первом варианте в виде начальной позиции и длины, во втором – в виде пары итераторов на ее начало и конец. Вот пример первого варианта:

string sentence(
"An ADT provides both interface and implementation." );

string::size_type position = sentence.find_1ast_of( 'A' );
string::size_type length = 3;

// заменяем ADT на Abstract Data Type
sentence.repiace( position, length, "Abstract Data Type" );

position представляет собой начальную позицию, а length – длину заменяемой подстроки. Третий аргумент является подставляемой строкой. Его можно задать несколькими способами. Допустим, как объект string:

string new_str( "Abstract Data Type" );
sentence.replace( position, length, new_str );
1 / 1 / 0
Регистрация: 03.03.2007
Сообщений: 11
04.03.2007, 00:31  [ТС]
На чистом Си эта функция не работает, скорее её просто нет. Не понимает структуру string::syze_type
string sentence(
"An ADT provides both interface and implementation." );
Это строку понимаю как задание строковой переменной содержащей An ADT provides both interface and implementation.
Но на простом Си это никак не катит. Стринг там просто нет.
0
dogad
04.03.2007, 00:39
На чистом Си эта функция не работает, скорее её просто нет.
Хм... Тогда пишем свою функцию замены подстроки на строку
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void replacestr(char *st1, char *st2, char *st3)
{
char *j,*u,*k;
int i=0;
u=strstr(st1,st2);
if (*st2!=*st3)
while(u)
{
k=strchr(st1,'\0');
if (strlen(st2)>strlen(st3))
 for(j=u;j!=k;*j=*(j+((strlen(st2)-strlen(st3)))),j++);
if (strlen(st2)<strlen(st3))
 for(j=k;j!=u;*(k+((strlen(st3)-strlen(st2))-i))=*j,j--,i++);
strncpy(u,st3,strlen(st3));
k=NULL;i=0;
u=strstr(st1,st2);
}
}
};
1 / 1 / 0
Регистрация: 03.03.2007
Сообщений: 11
04.03.2007, 11:42  [ТС]
Там где то ошибка в коде, помоему пропущена открывающая скобка. И не могли бы вы объяснить как работает эта функция.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2007, 11:42
Помогаю со студенческими работами здесь

Задача о студентах - решение
На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. В первой строке сообщается количество...

Задача на решение функции
Пожалуйста помогите решить задачку. Она на фото. Заранее спасибо! Вот как я сделал, но паскаль выдаёт ошибку помогите, что не...

Задача на решение функции
Вычислить значение функции при A, B, C – константы (задать значение самостоятельно), х вводится с клавиатуры.

Задача на проценты и её решение
Доброго времени суток. Помогите пожалуйста правильно решить задачу. Костюм стоил 27 р. затем подорожал на 4 р. На сколько процентов...

Задача в паскале, ищу решение
Дело такое, поступил на заочное обучение... сейчас идет сессия, дали задачки по информатике... Вот она: Разработать, ввести в ЭВМ и...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru