Jump to content

Препоръчан пост

Здравеите, извинявам се за отвратително написания текст и десетките грешки в него, но в компютърните зали няма друга клавятура,а не е позволено да се инсталира,а това е наи-доброто от транспонирането на кирилица онлине, имам да правя следната програма, но съм закъсала напълно, бих била благодарна на всякакъв съвет и обяснение,условието:

 

 

 

Набор от домино:Всяко домино има 2 различни номера всеки номер се появява осте два пъти.

1. Прочетете списък на домино от file като параметър на командния ред.Поставете доминото в единично свързан списък.

Файловият формат е както следва, за да изберете (виж също примерите.): Първият ред съдържа броя на

Камъни. Всеки допълнителен ред съдържа точките, разделени с точно един интервал.

2. Подредете домино, по такъв начин, че да докосва същите номера! Това води до един или повече

списъци, които трябва да бъдат изпълнени от Ринг списъци. Единично свързаният списък трябва да позволява достъпа до

списъците на пръстена. Имайте предвид, че камъните евентуално при поставянето трябва да бъдат завъртани

3. Покайете всички създадени кръгове,

4. Какво време на сложност имат отделните подзадачи?

Указания

Има много много начини, за да подредите домино в един или повече кръгове. 

трябва да се ограничите само до показване на масив от всички камъни.

Функции на библиотеки са разрешени само за реализиране на функционалността за въвейдане и показване на конзолата!

 


Liste

[1:23][11:42][23:42][1:11]

Kreise[1:23][23:42][42:11][11:1]

Пример 2:

Съдърйание:

7

1 3

3 5

2 6

6 23

23 42

2 42

1 5

На конзолата:

Liste

[1:3][3:5][2:6][6:23][23:42][2:42][1:5]

Kreise

[1:3][3:5][5:1]

[2:6][6:23][23:42][42:2]

Пример 3:

Съдърйание

2

1 2

1 2

На конзолата:

Liste

[1:2][1:2]

Kreise

[1:2][2:1]

 

Това ми е кодът:

 



#include <iostream>
#include <stdio.h>


struct dominostein { //Plochka za domino02 chasti s 2 chisla
int zahl1;
int zahl2;

};

struct meinesteinegesamt {//Cqla plochka za domino-Linearen list
dominostein info;   //Info= dvete chisla
meinesteinegesamt *next; //Ukazatel za sledvasht element v linearen list
};


struct meinesteinegesamt* next= NULL; //next = nullptr, zashtoto v nachaloto listyt e prazen
struct meinesteinegesamt* kopf=NULL; //head,ukazatel vyrhu pyrviq element ot lista
struct meinesteinegesamt* tail=NULL; //ukazatel vyrhu posledniq element ot lista
struct meinesteinegesamt* pData=NULL; //ukazatel vyrhu konkretnite danni

//File:
//4
//1 23
//11 42
//23 42
//1 11

meinesteinegesamt *readSteine (){ //Funkciq za prochitane na danni ot fail red po red
   FILE *datei;
   
   
   if((datei=fopen("datei.dat", "r") )==NULL) { //"r" für Lesen
      std::cout<<"Die Datei kann nicht geöffnet werden"<<std::endl; //Proverka za nalichieto na faila
      return kopf; //bzw return 0 //Vryshta head= nulev ukazatel-prazen list
   }else {
      int beginning; 
      int temp;
      fscanf(datei, "%d", &beginning); //Chete pyrvoto chislo ot faila,koeto pokazva kolko redove s dvoiki chisla
      //ima vyv faila
      
      for(int i=0; i<beginning; i++) {
         
         meinesteinegesamt *domino= new meinesteinegesamt(); //Syzdavane na nova plochka domino
         fscanf(datei, "%i", &temp);
         domino->info.zahl1=temp;  //Chete pyrvoto chislo ot matricata s chisla,orepratka kym pyrviq struct zahl1
         fscanf(datei, "%i", &temp);
         domino->info.zahl2=temp;////Chete pyrvoto chislo ot matricata s chisla,orepratka kym pyrviq struct zahl2
         printf("[%d:%d]", domino->info.zahl1, domino->info.zahl2);
         domino->next=0; //ukazatelq vyrhu posledniq element e nulev ukazatel
         if(i==0) {
            kopf=domino; //ukazatel vyrhu pyrviq element
         }else {
         tail->next = domino; //Memory access -greshka
         tail=domino;
         }
         
      
   }
   }return kopf;
   
}


meinesteinegesamt* loeschen () { //Triene na lista
   meinesteinegesamt* tmp;
   while(kopf != 0) { //bzw. NULL //Dokato head ne e nulev ukazatel (dokato ima elementi v lista)
      tmp=(kopf)->next; //Obhojdane na lista
      delete kopf;
      kopf=tmp;
   }
return kopf;   
}

meinesteinegesamt *readSteineRing (){ //Chetene na chislata kato ring list,taka che da bydat procheteni
   //po sledniq nachin: naprimer v dvoikite: [1:3][3:5][2:6][6:23][23:42][2:42][1:5]
//Plochki:
 //[1:3][3:5][5:1]
 //[2:6][6:23][23:42][42:2]
   
      meinesteinegesamt *domino= new meinesteinegesamt;
      //meinesteinegesamt *pData;
      if(kopf==0) {
         std::cout<<"Einfügen im Kopf"<<std::endl;
         pData->kopf=domino;
         pData->tail=pData->kopf;
      }else {
         std::cout<<"Einfügen im Tail"<<std::endl;
         domino->next=kopf;
         tail->next=domino;
         tail=domino;
      }
      return kopf;
   }


int main() {
   readSteine();
   readSteineRing();
   loeschen();

   
   return 0;
}


Благодаря предварително за всяка помощ и още веднъй се извинявам за вида на текста!

Link to comment
Сподели другаде



struct dominostein { 
int zahl1;
int zahl2;


};


struct meinesteinegesamt {
dominostein info;   
meinesteinegesamt *next; 
};




struct meinesteinegesamt* next= NULL; 
struct meinesteinegesamt* kopf=NULL;  




meinesteinegesamt *readSteine (meinesteinegesamt* kopf){
FILE *datei;
struct meinesteinegesamt* tail=NULL;


if((datei=fopen("datei.dat", "r") )==NULL) { //"r" für Lesen
std::cout<<"Die Datei kann nicht geöffnet werden"<<std::endl; 
return kopf; //bzw return 0 
}else {
int beginning; 
fscanf(datei, "%d", &beginning); 




for(int i=0; i<beginning; i++) {


meinesteinegesamt *domino= new meinesteinegesamt(); 
fscanf(datei, "%i", &domino->info.zahl1);
fscanf(datei, "%i", &domino->info.zahl2);
printf("[%d:%d]",
domino->info.zahl1,
domino->info.zahl2);
domino->next=NULL;
if(i==0) kopf=domino; 
else tail->next = domino; 
tail=domino;
}


  
   }return kopf;
}








meinesteinegesamt* loeschen (meinesteinegesamt *kopf) { 
meinesteinegesamt* tmp;
while(kopf != 0) { 
tmp=(kopf)->next; 
delete kopf;
kopf=tmp;
}
return kopf;
}.......

Link to comment
Сподели другаде

  • 1 month later...
Прилича ми на задача за края на 2ри семестъра на Уни в Германия, следващия път просто помоли студент колега. Голяма част от професорите не си смемят задачите, така че може и да поискаш решенията от по висок семестър. Struct в С++ рофл
Link to comment
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...