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

Подскажите как переделать программу , чтобы она считала количество не одного символа в строке ,а 2-х - C++

Восстановить пароль Регистрация
 
Владимирл
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 167
28.04.2014, 00:24     Подскажите как переделать программу , чтобы она считала количество не одного символа в строке ,а 2-х #1
Подскажите как переделать программу
Подскажите как переделать программу , чтобы она считала количество не одного символа в строке ,а 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <stdio.h> // необходим для работы printf()
#include <conio.h> // необходим для работы _getch()
#include <windows.h> // содержит определение типов BYTE, WORD, DWORD;
#include <iostream>
using namespace std;
 
DWORD lens(char *); // прототип функции, определяющей длину строки
 
 
 
char sourse[]="semblerrrraraar";
 
 
char numAsm(char simb )
{
 char count = 0;
 
 char* str;
 __asm{
 // задаем направление сканирования строки - 
 // сбрасываем флаг DF, то есть идем по строке 
 // в сторону возрастания адреса
 CLD;
 MOV EDI, str; // помещаем указатель на начало буферной строки в EDI
 MOV ESI, EDI; // помещаем в ESI указатель на начало строки
 MOV ECX, 0FFFFFFFFh; // помещаем в ECX максимальное 4-байтное число
 // определяем длину строки s1
 PUSH ESI; // помещаем адрес начального элемента строки в стек, 
 CALL lens;// результат будет храниться в EAX
 ADD ESP, 4; // освобождаем стек
 MOV EDX, EAX; // длину строки помещаем в EDX
 // закончили определение длины строки
 MOV ECX, EDX;
 MOV AL, simb;
 
 MOV BL, 0;
L1:
 REPNE SCASB; // ищем первый попавшийся символ "а"
 INC BL; // как только нашли, наращиваем счетчик
 PUSH EDI; // помещаем адрес текущего элемента строки в стек
 SUB EDI, ESI; // определяем, сколько элементов уже проверено
 CMP EDX, EDI; // сравниваем номер последнего проверенного элемента с длиной строки
 POP EDI; // возвращаем исходное значение EDI
 JA L1; // если не дошли до конца строки, то повторяем цикл
 
 MOV count, BL;
 }
 return count; 
}
 
 
 
// функция определения длины строки
DWORD lens(char* s )
{
 DWORD l=0;
 __asm{
 // задаем направление сканирования строки - 
 // сбрасываем флаг DF, то есть идем по строке 
 // в сторону возрастания адреса
 CLD;
 MOV EDI, s; // помещаем указатель на начало буферной строки в EDI
 MOV ESI, EDI; // помещаем в ESI указатель на начало строки
 MOV ECX, 0FFFFFFFFh; // помещаем в ECX максимальное 4-байтное число
 XOR AL, AL; // обнуляем AL. Следующей командой будем сравнивать
 // текущий элемент строки с нулевым байтом
 // (символ '/0' - конец строки)
 REPNE SCASB; // сканируем строку, адрес текущего элемента которой в EDI.
// Продолжаем до тех пор, пока не встретим '/0' в этой строке - то есть пока не достигнем // конца строки, или пока не будет равно 0 содержимое ECX
 SUB EDI, ESI; // находим длину строки
 DEC EDI; // исключаем из длины строки терминальный символ
 MOV l, EDI; 
 }
 return l;
}
 
 
 
 
 
int main ()
{
 
 
 
 
 
 
 
 
 
 cout<<numAsm(sourse)<<endl;
 
 
 _getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2014, 00:24     Подскажите как переделать программу , чтобы она считала количество не одного символа в строке ,а 2-х
Посмотрите здесь:

C++ Как зделать чтобы входная строка, если она не палиндром, делалась палиндромом, т.е. к строке добавлялись недостающие символы?
C++ Переделать программу под класс. Т.е. чтобы она работала так же, но с классом
написать программу,чтобы считала сколько слов в предложении до точки C++
C++ как сделать чтобы программа считала нормально
Как написать программу которая считала бы количество букв в string и количество гласных? C++
C++ Как сделать, чтобы функция считала с точностью до
Как написать чтобы программа считала и то и то ?! C++
C++ Готовая программа, нужно переделать ее чтобы она работала с УКАЗАТЕЛЯМИ

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 01:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru