76 lines
1.4 KiB
C
76 lines
1.4 KiB
C
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <string.h>
|
||
|
||
|
||
int check_old_pc(int pc, int list_pc[])
|
||
{
|
||
int ret = 0, i = 0;
|
||
while (!ret && i <= 1024 && list_pc[i] >= 0)
|
||
{
|
||
if (list_pc[i] == pc)
|
||
ret = 1;
|
||
i++;
|
||
}
|
||
return ret;
|
||
}
|
||
|
||
void init_list_pc(int list_pc[])
|
||
{
|
||
for (int i = 0; i < 1024; i++)
|
||
list_pc[i] = -1;
|
||
}
|
||
|
||
void prem_partie(FILE *ptr)
|
||
{
|
||
int i = 0, a = 0, pc = 0, nbpc = 0;
|
||
int list_pc[1024];
|
||
char *buffer = NULL, *ope;
|
||
char *all_ope[1024];
|
||
size_t size_buffer = 0;
|
||
for (int j = 0; j < 1024; j++)
|
||
all_ope[j] = (char *) malloc(sizeof(char) * 1024);
|
||
init_list_pc(list_pc);
|
||
while (!feof(ptr))
|
||
{
|
||
getline(&buffer, &size_buffer, ptr);
|
||
if (*(buffer + strlen(buffer) - 1) == '\n')
|
||
*(buffer + strlen(buffer) - 1) = '\0';
|
||
strcpy(all_ope[i], buffer);
|
||
i++;
|
||
}
|
||
|
||
free(buffer);
|
||
|
||
while (!check_old_pc(pc, list_pc))
|
||
{
|
||
list_pc[nbpc] = pc;
|
||
nbpc++;
|
||
buffer = (char *) calloc(1024, sizeof(char));
|
||
strcpy(buffer, all_ope[pc]);
|
||
const char *espace = " ";
|
||
ope = strtok(buffer, espace);
|
||
if (!strcmp(ope, "acc"))
|
||
{
|
||
ope = strtok(NULL, espace);
|
||
a += atoi(ope);
|
||
pc++;
|
||
}
|
||
else if (!strcmp(ope, "jmp"))
|
||
{
|
||
ope = strtok(NULL, espace);
|
||
pc += atoi(ope);
|
||
}
|
||
else
|
||
pc++;
|
||
|
||
free(buffer);
|
||
}
|
||
|
||
for (int j = 0; j < 1024; j++)
|
||
free(all_ope[j]);
|
||
|
||
printf("L’accumulateur contient la valeur %d\n", a);
|
||
}
|
||
|
||
void deux_partie(FILE *ptr) {}
|