venividivici
Τιμώμενο Μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
(Υπολογισμός του παραγοντικού ακεραίων αριθμών με τη χρήση
/*
#include <stdio.h>
double parag(int);
int main()
{
int i,nmin,nmax;
printf("dose arxikh kai telikh timh \n");
/*
scanf("%d%d", &nmin, &nmax);
for (i=nmin;i<=nmax;i++)
if(parag(i)==-1)
{
printf("Arnhtikos akeraios %d\n",i);
continue;
}
else printf("%d \t %.lf \n",i,parag(i));
return 0;
}
/*
το -1 ως ένδειξη ότι ο υπολογισμός δεν ημπορεί να
γίνει αφού το παραγοντικό υπολογίζεται μόνο για
θετικούς ακεραίους */
double parag(int n)
{
double p=1;
int i;
if(n<0) return -1;
/*
else if (n>1) for(i=1;i<=n;i++) p*=(double)i;
return p;
δες εδώ περισσότερα
https://www.mpipks-dresden.mpg.de/~hskokos/Teaching_Prog1/Programs.pdf
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
nefi
Πολύ δραστήριο μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
https://www.megaupload.com/?d=WODQYP4H
https://www.freeupload.cn/download.php?file=623169
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
1993giannis
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Γράψτε κώδικα σε c τον αναδρομικό αλγόριθμο εύρεσης ελαχίστου αριθμού σε έναν μη ταξινομημένο
μονοδιάστατο πίνακα Τ με n θέσεις. Ως έξοδο να επιστρέφει εκτός από την τιμή του ελαχίστου στοιχείου (a)
και τη θέση του (index) στον πίνακα Τ.
Αυτή είναι ακριβώς η εκφώνηση..Ευχαριστώ
![Χαμόγελο :) :)](https://www.e-steki.gr/images/smilies/smilenew.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
![Χαμόγελο :) :)](https://www.e-steki.gr/images/smilies/smilenew.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Guest 209912
Επισκέπτης
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
int i;
int min=T[0]; // Θετεις ως ελάχιστο στοιχείο του πίνακα το πρώτο του στοιχείο
int index=0;
for (i=1;i<n;i++) // Τρέχεις τον πίνακα
{
if (T[i]<min) // Αν βρεις μικρότερο απ'το ελάχιστο κρατάς τη θέση και την τιμή του
{
min=T[i];
index=i;
}
}
printf("To mikrotero stoixeio tou pinaka T einai to %d sti thesi %d\n",min,index);
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
vassilis498
Διακεκριμένο μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Guest 209912
Επισκέπτης
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Guest 209912
Επισκέπτης
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
int minimum (int T[], int *elaxisto , int *thesi,int n)
{
static int i=1;
if (T[i]<*elaxisto)
{
*elaxisto = T[i];
*thesi = i;
}
if (i==n-1)
{
return();
}
else
{
i++;
minimum(T[],elaxisto,thesi,n);
}
return();
}
Η Συνάρτησή σου δέχεται 4 ορίσματα τον πίνακα Τ, τις θέσεις του πίνακα (n), και τις διευθύνσεις μνήμης των μεταβλητών elaxisto και thesi. Θέλεις τις διευθύνσεις τους και όχι τις ίδιες τις μεταβλητές για να μπορείς να τις αλλάξεις μέσα στη συνάρτηση (μπορείς επίσης να κάνεις και αναφορική κλήση στις μεταβλητές αυτές (call by reference) αν δε θες να χρησιμοποιήσεις δείκτες αλλά είναι στην ουσία το ίδιο πράγμα . Το i το δηλώνεις ως static έτσι όταν καλείς νέα συνάρτηση αυτό δεν χάνει την αξία του και μπορείς να το κάνεις ++. Αν δεν θες να χρησιμοποιήσεις static, θα πρέπει να περνάς το i στη συνάρτηση κάθε φορά που την καλείς ως παράγοντα.
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
αυτο πιστευω θα ηταν πιο αποδοτικο αν ηταν ταξινομημενοςαναδρομικά λέει η άσκηση. Το πιο απλό που μπορώ να σκεφτώ είναι σπας τον πίνακα στα 2 και σε κάθε κλήση απλά υποδιπλασιάζεις το μέγεθος των 2 υποπινάκων, μέχρι να συγκρίνεις 2 αριθμούς. Αλλά δε ξέρω κατά πόσο έχει νόημα να του το δώσουμε έτοιμο εφόσον ζητά μόνο βοήθεια.
εχω την εντυπωση οτι βγαινει και χωρις static. το λεω γιατι το παιδι μπορει να μην εχει ιδεα τι ειναι το static... Αλλα ας παραθεσει τη προσπαθεια του να τον βοηθησουμε οσο μπορουμε...Ποοο ούτε καν είδα το αναδρομικά, αναδρομικά γίνεται εύκολα και με static μεταβλητές, με κάθε κλίση αυξάνεις το i κατά ένα και κάνεις το ίδιο
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
1993giannis
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
κωδικας[προσεχε αυτο->/code])
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
1993giannis
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
#include <stdio.h>
#include "simpio.h"
#include "genlib.h"
#define n 50
double min(double T[], int m,int *index);
int main(void)
{
double T[n];
double a;
int m;
int index;
int i;
printf("Poses theseis apo ton pinaka na desmeutoun? ");
scanf("%d", &m);
printf("Dwse ta stoixeia tou pinaka T \n");
for(i=0;i<m;i++)
{
scanf("%d",T[i]);
}
a = min(T,m,&index);
printf("To elaxisto einai to %ld kai vrisketai sthn %dh thesh",a,index);
system("pause");
}
double min(double T[],int m,int *index)
{
double a;
int i;
for(i=0;i<m;i++)
{
if(i=0)
{
a = T[i];
*index = i;
}
else
{
if(a < T[i])
{
a = min(T, m, index);
}
}
}
return a;
}
Το πρόβλημα το έχω στην συνάρτηση min(double T[],int m,int *index)... Δεν ξέρω πως να την κάνω με αναδρομή..
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Το πρόβλημα το έχω στην συνάρτηση min(double T[],int m,int *index)... Δεν ξέρω πως να την κάνω με αναδρομή..Code:#include <stdio.h> #include "simpio.h" #include "genlib.h" #define n 50 double min(double T[], int m,int *index); int main(void) { double T[n]; double a; int m; int index; int i; printf("Poses theseis apo ton pinaka na desmeutoun? "); scanf("%d", &m); printf("Dwse ta stoixeia tou pinaka T \n"); for(i=0;i<m;i++) { scanf("%d",T[i]); } a = min(T,m,&index); printf("To elaxisto einai to %ld kai vrisketai sthn %dh thesh",a,index); system("pause"); } double min(double T[],int m,int *index) { double a; int i; for(i=0;i<m;i++) { if(i=0) { a = T[i]; *index = i; } else { if(a < T[i]) { a = min(T, m, index); } } } return a; }
αρχικα, φτιαχνω το κωδικα σου για να μπορει να διαβαζεται
![Χαμόγελο :) :)](https://www.e-steki.gr/images/smilies/smilenew.png)
και πριν μπουμε στα του κωδικα σου και δεδομενου οτι εχεις κατανοησει την εννοια της αναδρομης. Για ποιο λογο καλεις ξανα την min μεσα στο body της min ;
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Guest 209912
Επισκέπτης
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Την αναδρομή ως έννοια και ως θεωρία την έχω καταλάβει...Απλώς δεν μπορώ να καταλάβω πως την γράφουμε σε κώδικα..Εγώ έγραψα κάτι το οποίο είναι λάθος...Αν θέλετε το στέλνω..
Στην ουσία όταν χρησιμοποιείς αναδρομή θες η κάθε κλήση της συνάρτησης να αντιπροσωπεύει και ένα στάδιο μιας επανάληψης.
Δηλαδή αν θες για παράδειγμα να αντικαταστήσεις μια for με αναδρομή, κάθε κλήση της αναδρομικής συνάρτησης θα είναι και μια επανάληψη της for, άρα σε κάθε κλήση το i θα είναι διαφορετικό. Στο σώμα της συνάρτησης έχεις ότι έχεις και στο σώμα της for καθώς και μια εντολή που ξ ανακαλεί την ίδια τη συνάρτηση καθώς και μια συνθήκη που θα τερματίσει τη στοίβα των συναρτήσεων.
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
1993giannis
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Γι αυτό...λογικά είναι λάθος, αλλά δεν κατάλαβα πως γίνεται
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Παμε στο επομενο ζητημα. Σκεψου οτι αν μια συναρτηση καλει τον εαυτο της επ απειρον απλα το προγραμμα σου θα τρεχει μεχρι να crashαρει. Αρα χρειαζεσαι μια συνθηκη τερματισμου η οποια θα λεει "δε μπορω να σπασω το προβλημα σε αλλο μικροτερο υποπροβλημα, γυρνα πισω". Εσυ ποια συνθηκη εχεις στον κωδικα σου που να αποτρεπει το προγραμμα να τρεχει για παντα ;
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
1993giannis
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
1993giannis
Νεοφερμένος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
![Ημερομηνία Ημερομηνία](images/general/calendar.png)
![Ώρα Ώρα](images/general/clock.png)
Η κληση min ποιο υποπροβλημα καλειται να λυσει ; Για ποιο λογο θες να τη καλεις ;
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Χρήστες Βρείτε παρόμοια
-
Τα παρακάτω 0 μέλη και 3 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα:Tα παρακάτω 2 μέλη διάβασαν αυτό το θέμα:
-
Φορτώνει...
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.