-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathprevisaodesviosumbit.cpp
54 lines (51 loc) · 1.46 KB
/
previsaodesviosumbit.cpp
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
#include<bits/stdc++.h>
using namespace std;
/*
Algoritmo de previsão dinâmica de desvios considerando 2 bits.
Aluno: Jairo de Sousa Júnior.
4º Período - IFSULDEMINAS.
Disciplina: Arquitetura e Organização de Computadores.
*/
int main()
{
FILE *entrada;
//Entrada de dados pelo arquivo dados.txt
entrada = fopen("dados.txt", "r");
char s[100000];
//Leitura do arquivo
fscanf(entrada," %s",&s);
fclose(entrada);
//Encerramento da entrada de dados.
//Inicialização das variáveis de acertos e erros.
int e=0,a=0;
int contador = 0;
int est = 0;
//Mapa só para controlar os true e false.
map<char,int>mapa;
mapa['N'] = 0;
mapa['T'] = 1;
//Laço para percorrer a string.
for(int i=0;i<strlen(s);i++)
{
//printf("%d %d %d i\n",i,mapa[s[i]],est);
//Se o estado atual for igual á letra atual, o número de acertos aumenta e o contador zera.
if(mapa[s[i]] == est)
{
a++;
contador=0;
}
else //Se o estado atual for diferente da letra atual, o número de erros aumenta e o contador de erros aumenta,
{
e++;
contador++;
}
if(contador == 1) //Se o meu contador chegar a um, ele muda de estado e zera o contador.
{
est= (est+1)%2;
contador=0;
}
}
printf("Numero de acertos: %d\n",a);
printf("Numero de erros: %d\n",e);
return 0;
}