C_Starter Δημοσ. 11 Ιανουαρίου 2011 Δημοσ. 11 Ιανουαρίου 2011 Παιδια θέλω τα φώτα σας! Θα ήθελα να φτιάξω έναν δυσδιαστατο πινακα που θα έχω την δινατότητα να τον κάνω σαν πινακα Καρνώ, όχι υποχρεωτικα μονο με 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 πινακα... Απο δώ και πέρα έχω φάει τρελό σκαλωμα! Δεν μπορω να βρώ με τπτ μια συνθήκη που να ικανοποιηει τα παραπάνω για να τους σχεδιασω.. Μπορειτε να μου δώσετε τα φώτα σας? Ευχαριστώ!!
virxen75 Δημοσ. 11 Ιανουαρίου 2011 Δημοσ. 11 Ιανουαρίου 2011 αν το εξηγήσεις καλύτερα ισως πάρεις μία απάντηση.
Evgenios1 Δημοσ. 11 Ιανουαρίου 2011 Δημοσ. 11 Ιανουαρίου 2011 Φερτο στα μετρα σου. >#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; }
C_Starter Δημοσ. 11 Ιανουαρίου 2011 Μέλος Δημοσ. 11 Ιανουαρίου 2011 Για να το κάνω πιο απλό έστω οτι 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α το τσεκαρω τωρα!
virxen75 Δημοσ. 11 Ιανουαρίου 2011 Δημοσ. 11 Ιανουαρίου 2011 χωρίς αναδρομή και με αποθηκευση τιμών σε πίνακα. > #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; }
C_Starter Δημοσ. 11 Ιανουαρίου 2011 Μέλος Δημοσ. 11 Ιανουαρίου 2011 Μ'αρέσει πολυ η λυση σου...καπως ετσι την έκανα...αλλά είχα καμποσα λάθη! Ευχαριστώ!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.