Βοήθεια σε συναρτηση

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
VagosM
Δημοσιεύσεις: 46
Εγγραφή: 03 Νοέμ 2010 20:19

Βοήθεια σε συναρτηση

Δημοσίευση από VagosM » 04 Δεκ 2010 01:55

Για σας έχω να κάνω μια άσκηση με συνάρτηση και δεν μπορώ να την κάνω θα ήθελα αν μπορείτε να με βοηθήσετε να την κάνω και να καταλάβω τι λάθη έχω.
η άσκηση.
Εικόνα
αυτός είναι ο κώδικας που έγραψα...

Κώδικας: Επιλογή όλων

# include <stdio.h>
# include <stdlib.h>
# define Size 10
void psilt&#40;int,int,int*,int*&#41;;
int main&#40;&#41;&#123;
    int Bath&#91;Size&#93;,i,Pas&#91;Size&#93;,*plithos;
    printf&#40;"dwste vathmologia apo 0 eos 10\n"&#41;;
    for&#40;i=0;i<Size;i++&#41;&#123;
    do&#123; 
        printf&#40;"Dwste ton vathmo tou %d mathiti\n",i&#41;;
        scanf&#40;"%d",&Bath&#91;i&#93;&#41;;&#125;
    while&#40;&#40;Bath&#91;i&#93;<0&#41;||&#40;Bath&#91;i&#93;>10&#41;&#41;;&#125;
    psilt&#40;Bath&#91;i&#93;,n,&Pas&#91;i&#93;,&plithos&#41;;
    for&#40;i=0;i<plithos;i++&#41;
    printf&#40;"perase me %d",Pas&#91;i&#93;&#41;;
    system&#40;"pause"&#41;;
&#125;

void psilt&#40;int Bath,int n ,int *Pas,int *plithos&#41;  
&#123;
     for&#40;i=0;i<Bath&#91;i&#93;;i++&#41;&#123;
     if&#40;Bath&#91;i&#93;=>5&#41;&#123;
       *Pas&#91;i&#93;=Bath&#91;i&#93;;
       *plithos++;&#125;&#125;
       &#125;
                   

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Βοήθεια σε συναρτηση

Δημοσίευση από virxen75 » 04 Δεκ 2010 10:09

1) psilt(Bath,n,&Pas,&plithos); <---μάλλον αντί n θέλεις Size
2)psilt(Bath,Size,&Pas,&plithos); <-----να φύγει το &
3) for(i=0;i<plithos;i++) <---να γίνει *plithos
4)for(i=0;i<Bath;i++){<---να γίνει n
5)void psilt(int Bath,int n ,int *Pas,int *plithos){
να γίνει:
void psilt(int Bath,int n ,int *Pas,int *plithos){
int i;
6) if(Bath=>5){ <---να γίνει >=
7) void psilt(int,int,int*,int*); <---να γίνει int*
8 ) void psilt(int Bath,int n ,int *Pas,int *plithos){<---να γίνει *Bath
9) psilt(Bath,Size,&Pas,plithos);<---να γίνει psilt(Bath,Size,Pas,plithos);
10) *Pas=Bath; <--να γίνει Pas[i]

επίσης αυτό που θες να κάνεις με την psilt να επιστρέφεις το μέγεθος του νέου πίνακα
μπορεί να γίνει πιο εύκολα έτσι:(δες και τον κώδικα με όλες τις αλλαγές)


Υ.Γ.δυναμικούς πίνακες έχετε κάνει?malloc κ.τ.λ?

Κώδικας: Επιλογή όλων

# include <stdio.h>
# include <stdlib.h>
# define Size 10
int psilt&#40;int*,int,int*&#41;;

int main&#40;&#41;&#123;
    int Bath&#91;Size&#93;,i,Pas&#91;Size&#93;,plithos;
    printf&#40;"dwste vathmologia apo 0 eos 10\n"&#41;;
    for&#40;i=0;i<Size;i++&#41;&#123;
        do&#123;
            printf&#40;"Dwste ton vathmo tou %d mathiti\n",i+1&#41;;
            scanf&#40;"%d",&Bath&#91;i&#93;&#41;;
          &#125;
          while&#40;&#40;Bath&#91;i&#93;<0&#41;||&#40;Bath&#91;i&#93;>10&#41;&#41;;
    &#125;

    plithos=psilt&#40;Bath,Size,Pas&#41;;
        
    for&#40;i=0;i<plithos;i++&#41;
        printf&#40;"perase me %d\n",Pas&#91;i&#93;&#41;;
    system&#40;"pause"&#41;;
    return 0;
&#125;

int psilt&#40;int *Bath,int n ,int *Pas&#41;&#123;
    int i;
    int plithos=0;
     for&#40;i=0;i<n;i++&#41;&#123;
            printf&#40;"\ni=%d",i&#41;;
        if&#40;Bath&#91;i&#93;>=5&#41;&#123;
            Pas&#91;plithos++&#93;=Bath&#91;i&#93;;
        &#125;
        &#125;
    return plithos;
     &#125; 


VagosM
Δημοσιεύσεις: 46
Εγγραφή: 03 Νοέμ 2010 20:19

Βοήθεια σε συναρτηση

Δημοσίευση από VagosM » 04 Δεκ 2010 11:54

όχι ακόμα την παρασκευή κάναμε συναρτήσεις και δείκτες και δεν τα έχω πολύ καταλάβει.

VagosM
Δημοσιεύσεις: 46
Εγγραφή: 03 Νοέμ 2010 20:19

Βοήθεια σε συναρτηση

Δημοσίευση από VagosM » 05 Δεκ 2010 21:33

Θέλει και το μέσω όρο.. δεν μπόρεσα να τον κάνω όλο λάθος μου βγάζει...

Κώδικας: Επιλογή όλων

# include <stdio.h>
# include <stdlib.h>
# define N 10
int psilt&#40;int*,int,int*&#41;; /* sinartisi pou ipologizi to plithos ton mathton pou einai pano i iso apo 5*/
float avg&#40;int*, int&#41;;/* sinartisi pou ipologizi to M.O*/
float avg&#40;int*, int&#41;;
int main&#40;&#41;&#123;
    int Bath&#91;N&#93;,i,Pas&#91;N&#93;,plithos,avg1,avg2; /* pinakes Bath gia vathmous Pas gia autous pou einai pano i isos me 5*/
    printf&#40;"dwste vathmologia apo 0 eos 10\n"&#41;;
    for&#40;i=0;i<N;i++&#41;&#123; /* me tin for kanoume epanalipsi pou kathorizete apo tin timi tou Size*/
        do&#123;
            printf&#40;"Dwste ton vathmo tou %d mathiti&#58; ",i+1&#41;; /* me tin do while elenxoume tis times kai an einai apodextes ti pername alios tis 
            aporiptoume kai ksana zitame na mas dosi sosto vathmo*/
            scanf&#40;"%d",&Bath&#91;i&#93;&#41;;
          &#125;
          while&#40;&#40;Bath&#91;i&#93;<0&#41;||&#40;Bath&#91;i&#93;>10&#41;&#41;;
    &#125;

    plithos=psilt&#40;Bath,N,Pas&#41;; /*kalesma tis sinartisis*/
       
    for&#40;i=0;i<plithos;i++&#41;
        printf&#40;"perase me %d o %d mathitis\n",Pas&#91;i&#93;,i&#41;; /*emfanizoume autous pou exoun megaliteroiso apo 5*/
     avg1=avg&#40;Bath,N&#41;;
     printf&#40;"o M.O olon ton mathiton einai&#58; ",avg1&#41;;
     avg2=avg&#40;Bath,plithos&#41;;
     printf&#40;"o M.O ton mathiton pou exoun megaliteroiso me 5 einai&#58; ",avg2&#41;;
    system&#40;"pause"&#41;; 
    return 0;
&#125;

int psilt&#40;int *Bath,int n ,int *Pas&#41;&#123; /* sinartisi pou ipologizi posi perasan me 5 kai pano kai epistefi to plithos*/
    int i;
    int plithos=0;
     for&#40;i=0;i<n;i++&#41;&#123;
        if&#40;Bath&#91;i&#93;>=5&#41;&#123;
            Pas&#91;plithos++&#93;=Bath&#91;i&#93;;
        &#125;
        &#125;
    return plithos;
     &#125; 
     
float avg&#40;int *Bath,int t&#41; &#123; /* ipologismos M.O gia olous*/
int i;
    float count=0,avg1;
    for&#40;i=0;i<N;i++&#41;
        count=count+;
    avg1=&#40;count/N&#41;;
    return avg1;
&#125;

float avg&#40;int *Bath, int b&#41; &#123; /* ipologismos M.O gia autous pou exoun perasi*/
int i;
    float count=0,avg2;
    for&#40;i=0;i<plithos;i++&#41;
        count=count+;
    avg2=&#40;count/plithos&#41;;
    return avg2;
&#125;


Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Βοήθεια σε συναρτηση

Δημοσίευση από virxen75 » 05 Δεκ 2010 23:23

1) αυτό το χρειάζεσαι μία φορά και όχι 2
float avg(int*, int);/* sinartisi pou ipologizi to M.O*/

ανάλογα με τις παραμέτρους που τις δίνεις παίρνεις και το ανάλογο αποτέλεσμα


2)μέσα στην main()
float avg1,avg2; και όχι int


3)
θα αφήσεις μόνο μία από τις 2 συναρτήσεις
αυτήν με τις αλλαγές που έκανα

Κώδικας: Επιλογή όλων

float avg&#40;int *Bath,int t&#41; &#123; /* ipologismos M.O gia olous*/
int i;
    float count=0,avg1;
    for&#40;i=0;i<t;i++&#41;
        count+=Bath&#91;i&#93;;
    avg1=count/t;
    return avg1;
&#125;

4) στην main()

Κώδικας: Επιλογή όλων

     avg1=avg&#40;Bath,N&#41;;
     printf&#40;"o M.O olon ton mathiton einai&#58; ",avg1&#41;;
     avg2=avg&#40;Pas,plithos&#41;;
     printf&#40;"o M.O ton mathiton pou exoun megaliteroiso me 5 einai&#58; ",avg2&#41;;

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης