zmiana C++ na C

marek12
Użytkownik
Użytkownik
Posty: 696
Rejestracja: 5 lut 2008, o 15:38
Płeć: Mężczyzna
Lokalizacja: marki
Podziękował: 165 razy
Pomógł: 20 razy

zmiana C++ na C

Post autor: marek12 »

Proszę o zminnę tego programu z C++ na C

Kod: Zaznacz cały


#include <iostream>

using namespace std;

const int maximum=200;

class ListaTab{
	int tab[maximum]; 
	public:
  	  ListaTab(){	  
         tab[0]=0;
      }

	void WstawElement(int x);
	void WypiszListe();
};

void ListaTab::WstawElement(int x)
{
if(tab[0]<maximum-1)
	tab[++tab[0]]=x;
}

void ListaTab::WypiszListe()
{
for (int i=1;i<=tab[0];i++)
	cout << tab[i] << " -> ";
cout << "."<< endl;
}



void macierz(int wymiar_macierzy);
void lista(int ile_list);


int main(){

    cout << "Podaj ilosc wierzcholkow: ";
    int liczba;   
    cin >> liczba;
    cout << "Wybierz sposob
"
            "    1) macierz
"
            "    2) lista
"
            "Moj wybor: ";
    int wybor;    
    cin >> wybor;
    if (wybor==1) 
        macierz(liczba);
    if (wybor==2) 
        lista(liczba);
    if (wybor!=1 && wybor!=2){ 
        cout << "Koniec dzialania programu.
";
        system("pause");
        return 1;
    }    
    system("pause");
    return 1;
}


void macierz(int wymiar_macierzy){
   
    int macierz_sasiedztwa[wymiar_macierzy][wymiar_macierzy]; 
    int i,j=0; 

    for(i=0;i<wymiar_macierzy;i++)
        for(j=0;j<wymiar_macierzy;j++)
            macierz_sasiedztwa[i][j]=0;

    for(i=0;i<wymiar_macierzy;i++){   
        cout << "Ilu sasiadow ma element " << i+1 << "?  ";
        int ile; 
        cin >> ile;
        if(ile>0){
            cout << "-> Podaj sasiadow " << i+1 << ": ";
            int tyle;  
            for(j=0;j<ile;j++){
                cin >> tyle; 
                macierz_sasiedztwa[i][tyle-1]=1; 
            }    
        }    
    }

    cout << "
Macierz sasiedztwa " << endl;          
    for(i=0;i<wymiar_macierzy;i++){
        for(j=0;j<wymiar_macierzy;j++)
            cout << macierz_sasiedztwa[i][j] << "    ";
        cout<<endl;
    }    
}


void lista(int ile_list){
    cout << "
lista sasiedztwa.
";
    ListaTab tablica_list[ile_list]; 
    cout << 
            "Podawaj sasiadow wpisujac ich numery i oddzielajac je spacja." << endl;
    int i,j; 
    for(i=0;i<ile_list;i++){   
        cout << "Ilu sasiadow ma element " << i+1 << "?  ";
        int ile; 
        cin >> ile;
        if(ile>0){
            cout << "-> Podaj sasiadow " << i+1 << ": ";
            int tyle;  
            for(j=0;j<ile;j++){
                cin >> tyle; 
                tablica_list[i].WstawElement(tyle); 
            }    
        }    
    }

    for(i=0;i<ile_list;i++){
        cout << "Sasiedzi numeru " << i+1 << ": "; 
        tablica_list[i].WypiszListe();
    }    
}
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

zmiana C++ na C

Post autor: kadiii »

Musisz jedynie zamienić klasę na strukturę - czyli zostawiasz składniki klasy(pola), funkcje składowe wyrzucasz poza i dodajesz argument funkcji jako np. wskaźnik na twoją strukturę(czyli funkcja pracuje na strukturze a nie jest wywoływana na rzecz obiektu) - np.

Kod: Zaznacz cały

void WypiszListe(struct ListaTab *TwojaLista)
No i jeszcze dodatkowo zamiana obsługi I/O cin/cout na scanf/printf. Do tego oczywiście potrzebna jest zamiana bibliotek. To by było na tyle. W razie problemów pisz(tylko wklej wtedy efekt swojej pracy).
marek12
Użytkownik
Użytkownik
Posty: 696
Rejestracja: 5 lut 2008, o 15:38
Płeć: Mężczyzna
Lokalizacja: marki
Podziękował: 165 razy
Pomógł: 20 razy

zmiana C++ na C

Post autor: marek12 »

zmieniłem tak ale mam jeszcze błąd
Ukryta treść:    
w tej linijce

Kod: Zaznacz cały

   ListaTab tablica_list[ile_list]; 
taki: `ListaTab' undeclared (first use in this function)
ODPOWIEDZ