Witam,
Pisze program, który stworzony jest z dwoch modułów. Moduł główny stworzony jest w C. Jego zadaniem jest pobranie od użytkownika danych, które zostaną przekazane do modułu napisanego w asemblerze. Moduł w asemblerze wykonuje obliczenia, a następnie zwraca wyniki, które zostają wypisane przez moduł główny.
Oto moj kod w C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
extern "C" near void licz_sr( int* );
extern "C" near void licz_znaki( char* );
int *tablica_liczb_dynamiczna;
char tablica_znakow[28]; //[0] = ilosc, [1] = kod szukany, [27] = ilosc wystapien
int wielkosc_tablicy = 0;
int kod;
int menu(), losuj_liczby(), losuj_znaki(), licz_srednia(), sprawdz_ilosc_znakow();
void wczytaj_liczby(), wczytaj_znaki();
int main() {
srand(time(NULL));
//tablica_liczb[0] = 5;
tablica_znakow[0] = 25;
menu();
return 0;
}
int menu(){
printf("\n\n\nCo mam zrobic?\nW = Wyliczyc srednia z losowej tablicy\nP = Policzyc ilosc znakow w losowej tablicy\nX = Wyjsc z programu\n");
kod = getchar();
getchar();
if (kod == 87 || kod == 119) {
//losuj_liczby();
wczytaj_liczby();
//licz_srednia();
}
else if (kod == 80 || kod == 112){
//losuj_znaki();
wczytaj_znaki();
sprawdz_ilosc_znakow();
}
else if (kod == 88 || kod == 120){
return 0;
}
menu();
}
void wczytaj_liczby()
{
printf("Ile znakow wprowadzic? ");
scanf("%d",&wielkosc_tablicy);
printf("wielkosc tab: "); printf("%d",wielkosc_tablicy);
tablica_liczb_dynamiczna = (int*)malloc(wielkosc_tablicy * sizeof(int));
for(int i = 0; i < wielkosc_tablicy; i++){
tablica_liczb_dynamiczna[i] = NULL;
}
printf("\n\nWczytaj liczby:");
for(int j = 0; j < wielkosc_tablicy; j++)
{
scanf("%d", &tablica_liczb_dynamiczna[j]);
printf("\n");
printf("%d", j);printf("element tab "); printf("%d",tablica_liczb_dynamiczna[j]);
printf("\n");
tablica_liczb_dynamiczna[j] = tablica_liczb_dynamiczna[j]-48;
}
licz_srednia();
}
*/
void wczytaj_znaki()
{
for (int i =2; i < tablica_znakow[0]+2; i++)
{
tablica_znakow[i] = NULL;
}
printf("\n\nWczytaj znaki:");
char polecenie[25];
fgets( polecenie, 25, stdin );
for (int j =2; j < tablica_znakow[0]+2; j++)
{
tablica_znakow[j] = polecenie[j-2];
}
}
*/
int licz_srednia()
{
licz_sr(tablica_liczb_dynamiczna);
//printf("\n\nSrednia jest rowna: "); printf("%c", tablica_liczb[6]+48); printf(", a reszta jest rowna: "); printf("%c", tablica_liczb[7]+48);
printf("\n\nSrednia jest rowna: "); printf("%c", tablica_liczb_dynamiczna[6]+48); printf(", a reszta jest rowna: "); printf("%c", tablica_liczb_dynamiczna[7]+48);
//cout << "Srednia jest rowna: " << tablica_liczb_dynamiczna[6]+48 << ", a reszta: " << tablica_liczb_dynamiczna[7]+48 << endl;
return 0;
}
/* int sprawdz_ilosc_znakow()
{
printf("\n\nWystapienia jakiego znaku mam liczyc? ");
tablica_znakow[1] = getchar();
getchar();
//printf("\n\n");
licz_znaki(tablica_znakow);
printf("\nZnak \""); printf("%c", tablica_znakow[1]); printf("\" wystapil "); printf("%c", tablica_znakow[27]+48);
if (tablica_znakow[27] != 1) printf(" razy.");
else printf(" raz.");
}*/