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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) http://www.cyberforum.ru/cpp-beginners/thread1159651.html
Привіт усім. Перший раз пишу програму. Допоможіть, будь ласка. Ввела таке: int main (); { var a,b,c:integer; а програма вибиває помилку C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа). Підкажіть, що змінити.
C++ Поменять местами k-oe и n-ое слово в строке Строка состоит из слов. Слово – последовательность любых символов, расположенных между двумя пробелами. Поменять местами k-oe и n-ое слово в строке. http://www.cyberforum.ru/cpp-beginners/thread1159650.html
Указатели и ссылки C++
Экспериментируя с указателями пришел к вот таким выводам: int a; //переменная int *b; //указатель int &c = a //ссылка на <a> ...=a; // получим значение <a> ...=&a; // получим адрес <a> ...=b; // получим адрес, хранящийся в <b> ...=*b; // получим значение, хранящееся по адресу <b>
C++ В двумерном массиве хранится информация о зарплате 18 сотрудников
В двумерном массиве хранится информация о зарплате 18 сотрудников за каждый день (в первом столбце за пятое января, за втором). Определить среднюю зарплату плату.
C++ Не правильно работает sin() http://www.cyberforum.ru/cpp-beginners/thread1159624.html
Здравствуйте, есть задача: найти площадь треугольника разными способами. Во втором способе не правильно вычисляется синус угла, иногда выдает отрицательные значения. Как исправить? #include <iostream.h> #include <conio.h> #include <math.h> double ploschad_1(double, double); double ploschad_2(double, double, double); double ploschad_3(double, double, double);
C++ Бинарное дерево Помогите пожалуйста с программой. Нужно сделать обход, слева и справа(функции get_left и get_right), желательно обход в глубину. И реализовать «подъем» на верхний уровень(функция root), т.е. получение корня. #pragma once #include "stdafx.h" #include <iostream> using namespace std; подробнее

Показать сообщение отдельно
Владимирл
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 168
28.04.2014, 00:24     Подскажите как переделать программу , чтобы она считала количество не одного символа в строке ,а 2-х
Подскажите как переделать программу
Подскажите как переделать программу , чтобы она считала количество не одного символа в строке ,а 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();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru