Προς το περιεχόμενο

Σκάλωμα σε C


C_Starter

Προτεινόμενες αναρτήσεις

Δημοσ.

Παιδια θέλω τα φώτα σας! Θα ήθελα να φτιάξω έναν δυσδιαστατο πινακα που θα έχω την δινατότητα να τον κάνω σαν πινακα Καρνώ, όχι υποχρεωτικα μονο με 0 και 1!

 

Αρχική επιλογή του χρήστη X , Z:

 

Έστω θέλει να χρησιμοποιησει 0 και 1 (δλδ X=1) και να κανει Ζ=3 συνδιασμους!

 

Δλδ

000

001

010

011

100

101

110

111

...........................

...........................

 

Έστω θέλει να χρησιμοποιησει 0 ,1 και 2 (δλδ X=2) και να κανει Ζ=2 συνδιασμους!

 

Δλδ

00

01

02

10

11

12

20

21

22

 

Mε μαλλοκ κανω έναν (X+1)^ZxZ πινακα...

Απο δώ και πέρα έχω φάει τρελό σκαλωμα! Δεν μπορω να βρώ με τπτ μια συνθήκη που να ικανοποιηει τα παραπάνω για να τους σχεδιασω..

 

Μπορειτε να μου δώσετε τα φώτα σας? Ευχαριστώ!!

Δημοσ.

Φερτο στα μετρα σου.

>#define ELE_MAX -1

int element_plus(int* arr,int sz,int max)
{
if(sz - 1 >=0)
{
	if(++arr[sz-1] >max)
	{
		arr[sz-1] = 0;
		return element_plus(arr,sz-1,max);
	}
	return 0;
}
else
	return ELE_MAX;
}
int main()
{

int arr[3] = {0,0,0};
do
{
	printf("%d%d%d\n",arr[0],arr[1],arr[2]);
}
while(element_plus(arr,3,1)!= ELE_MAX);


return 0;
}

 

Δημοσ.

Για να το κάνω πιο απλό έστω οτι default x=2 (άρα χρησιμοποιούμε μονο 0 και 1 για τον πινακα) (αν ήταν 3 θα έιχαμε 0,1,2 κοκ) και ο χρήστης μας δινει τον Z (αριθμος στηλών)

 

Εγώ θέλω να φτιάξω τον πίνακα που θα προσεγγιζει την ιδιοτητα του καρνώ δλδ:

 

00

01

10

11

 

Και αντιστοιχα με οτι χ και z δώσει ο χρήστης θα αυξανονται οι στηλες και το πληθος των στοιχειων (0,1,2,3 κοκ)

 

Φερτο στα μετρα σου.

>#define ELE_MAX -1

int element_plus(int* arr,int sz,int max)
{
if(sz - 1 >=0)
{
	if(++arr[sz-1] >max)
	{
		arr[sz-1] = 0;
		return element_plus(arr,sz-1,max);
	}
	return 0;
}
else
	return ELE_MAX;
}
int main()
{

int arr[3] = {0,0,0};
do
{
	printf("%d%d%d\n",arr[0],arr[1],arr[2]);
}
while(element_plus(arr,3,1)!= ELE_MAX);


return 0;
}

 

thnax 8α το τσεκαρω τωρα!

Δημοσ.

χωρίς αναδρομή και με αποθηκευση τιμών σε πίνακα.

 

>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(){
   int X,Z,i,j,count=1,ii;
   char ** karno;
   int * numbers;
   printf("\ngive X:");
   scanf("%d",&X);getchar();
   printf("\ngive Z:");
   scanf("%d",&Z);getchar();
   double grammes1=pow( (X+1) , Z);//γραμμές πίνακα Καρνώ
   int grammes=(int) grammes1;
   int stiles=Z;//στήλες πίνακα Καρνώ
   numbers=(int *) malloc((X+1)*sizeof(int));
   for (i=0;i<=X;i++)//Δημιουργία πίνακα με τους αριθμούς -->0,1,...,X
       numbers[i]=i;
   karno=(char **) malloc(grammes*sizeof(char *));
   for (i=0;i<grammes;i++){//δυναμικός πίνακας καρνώ
       karno[i]=(char *)malloc((stiles+1)*sizeof(char));
       karno[i][stiles]='\0';//για να σχηματισθεί string
   }
   //fill karno
   for (j=stiles-1;j>=0;j--){//stiles
       int a=0;
       double count1=pow(X+1,stiles-1-j);//(X+1)^0=1,....,(X+1)^Z
       count=(int)count1;
       for (i=0;i<grammes;i=i+count){//γραμμές πίνακα
               for (ii=i;ii<i+count;ii++)
                   karno[ii][j]=(char) numbers[a]+'0';  
           if (++a>X)//αν τελειώσουν οι αριθμοί πάμε από την αρχή (0,...Χ)
               a=0;  
       }
   }
   for (i=0;i<grammes;i++)//τυπώνει τα αποτελέσματα
       printf("\n%s",karno[i]);
   getchar();
   return 0;
}

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...