Tabliczka mnożenia - undefined reference

0

Witam, niedawno zacząłem naukę C w liceum ogólnokształczącym.
Dostałem zadanie do domu aby zrobić tabliczkę mnożenia, jednak oczywiście gdzieś leży problem z uruchomieniem go.
Bebrałem się dość długo z conio2.h, aby zaczął mi działać na 64 bitowym systemie, ale już się udało.
Oto kod

#include <stdlib.h>
#include <stdio.h>
#include <conio2.h>
#include <time.h>
#include "ramka.c"
void tabliczka()
{
	 void ramka(int k,int w,int dl,int sz);
	 textattr(0x3E);
     gotoxy(1,1); insline();
     gotoxy(2,1); printf("Tabliczka mnozenia");
     int los1, los2;
     los1=1+rand()%10;
     los2=1+rand()%10;
     gotoxy(1,3);
     for(int w=1; w<11; w++){
     for(int k=1; k<11; k++){

     if(los1==k and los2==w or los1==w and los2==k)
     {textattr(0xEC);}
     else {textattr(0x07);}
     printf("%4d",k*w);
    }
    printf("\n\r");
   }
    textattr(0x0B);
    ramka(1,2,43,13);
    printf("\n\r");
    textattr(0x07);
    printf(" %d * %d = %2d",los1,los2,los1*los2);
    textattr(0x3E);
    gotoxy(1,15);
     insline();
     gotoxy(2,15); printf("Marcin Zakrzewski");
   }
   
//-----------------------------------
int main()
{
    srand(time(0));
    tabliczka();
    getch();
    return 0;
} 

a to ramka.c

void ramka(int k,int w,int dl,int sz)
{
	int i;
     for (i=0;i<dl-2;i++)
     {
         gotoxy(k+1+i,w); printf("%c",196);     //sciana gorna
         gotoxy(k+1+i,w+sz-2); printf("%c",196);//sciana dolna
     }
     for (i=0;i<sz-2;i++)
     {
         gotoxy(k,w+i); printf("%c",179);       //sciana lewa
         gotoxy(k+dl-2,w+i); printf("%c",179); //scaiana prawa
     }
     gotoxy(k,w); printf("%c",218);             //lewy gorny
     gotoxy(k+dl-2,w); printf("%c",191);        //prawy gorny
     gotoxy(k,w+sz-2); printf("%c",192);        //lewy dolny
     gotoxy(k+dl-2,w+sz-2); printf("%c",217);   //prawy dolny
 }

//----------------------------------- 

Problem leży w każdej linijce z gotoxy i textattr, a dokładniej "undefined reference to 'textattr' lub 'gotoxy'.
Koledze wszystko działa, więc jest szansa ze błąd leży gdzieś po stronie komputera ?

Pozdrawiam

0

(...)jest szansa ze błąd leży gdzieś po stronie komputera ?

Absolutnie.
Dodaj plik nagłówkowy z deklaracjami funkcji na początku ramka.c:

#include <conio2.h> 

Masz parę błędów w głównym pliku.
Nie dołączaj ramka. c tylko ramka.h.
Nie deklaruj funkcji wewnątrz innej funkcji:

void tabliczka()
{
     void ramka(int k,int w,int dl,int sz);
//...
} 

Zmienne deklaruj na początku funkcji:

tabliczka()
{
//...
for(int w=1; w<11; w++){
     for(int k=1; k<11; k++){
//...
} 
if(los1==k and los2==w or los1==w and los2==k) 

W C++ w C użyj && i ||.

0

Może tak? (c99)

void multable(int xpos, int ypos, unsigned width, unsigned height){
	for(int y = ypos; y < ypos+height; ++y){
		for(int x = xpos; x < xpos+width; ++x)
			printf("%d ", x*y);
		printf("\n");
	}
}
1

W C++ w C użyj && i ||.

#include <iso646.h>

1 użytkowników online, w tym zalogowanych: 0, gości: 1