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

Ασκηση στη c++


steve62742

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

Δημοσ.

παιδια θελω μια βοηθια γιατι δε παει αλλο...εχω μια ασκηση,πρεπει να φτιαξω προγγραμα που να χρησειμοπηει μια συναρτηση για να διαβαζει ενα πινακα ν ακαιρεων αριθμων,αλλη μια για να τον ολισθαινει αριστερα και το τελευτεο στοιχειο να πηγενει πρωτο και αλλη μια για να εμφανιζει τα στοιχεια(την χρησιμοποιουμε 2 φορες,μια πριν και μια μετα την ολισθηση).Ολο αυτο να γραφτει στο dev c++.Ενω σα κωδικα και λογικη το εχω καταλαβει

>
#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;

int main(int argc, char *argv[])
{
   int a,v[a];
   cout<<"dose to plithos ton stixion tou pinaka "<<endl;
      cin>>a;
      int i;
      for(i=0; i<a; i++)
      {
              cout<<"Dose to "<<i+1<<"o stoixio tou pinaka"<<endl;
              cin>>v[i];
      }
      cout<<"Ta stoixeia tou pinaka einai ta eksis:"<<endl;     
      for(i=0; i<a; i++){
              cout<<v[i]<<" ";
      }
      cout<<endl;
   int c;
      c=v[a-1];
      for(i=a-1; i>0; i--)
      {
              v[i]=v[i-1];
                 }
      v[0]=c;
      cout<<"Ta stoixeia tou pinaka einai ta eksis:"<<endl;     
      for(i =0; i<a; i++){
              cout<<v[i]<<" ";
      }
      cout<<endl;
   system("PAUSE");
   return EXIT_SUCCESS;
}

οταν προσπαθω να χρησιμοπιησω και συναρτησεις κατι δε κανω καλα και δε βγενει σωστο το προγγραμα...

 

>
#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;

int eisodos(int v[],int a)
      {
      cout<<"dose to plithos ton stixion tou pinaka "<<endl;
      cin>>a;
      int i;
      for(i=0; i<a; i++)
      {
              cout<<"Dose to "<<i+1<<"o stoixio tou pinaka"<<endl;
              cin>>v[i];
      }
      return v[a],a;
}

void emfanisi(int v[],int a)
      {
      cout<<"Ta stoixeia tou pinaka einai ta eksis:"<<endl;
      int i;
      for(i=0; i<a; i++)
      {
              cout<<v[i]<<" ";
      }
      cout<<endl;
      
}

int metatropi(int v[],int a)
      {
      int i;
      int c;
      c=v[a-1];
      for(i=a-1; i=0; i--)
      {
              v[i]=v[i-1];
                 }
      
      v[0]=c;
      return v[a];
}

int main(int argc, char *argv[])
{
   int a,x;
   cout<<"Ergasia 1"<<endl;
   int Pinakas[]={eisodos(Pinakas,a)};
   emfanisi(Pinakas,a);
   int NeosPinakas[]={metatropi(Pinakas,a)};
   emfanisi (NeosPinakas,a);
   system("PAUSE");
   return EXIT_SUCCESS;
}

 

 

οταν παω να τρεξω το προγγραμα οπως το εχω κανει με τη χρηση συναρτησεων τα αποτελεσματα δεν ειναι σωστα...αν μπορει καπιος να βοηθησει να μου πει που εχω κανει το λαθος γιατι δεν πεζει να το βρω το παλευω ποση ωρα...

Δημοσ.

Αρκετά λάθη έχεις στην άσκηση. Καταρχάς αν και ο g++ επιτρέπει τη χρήση πινάκων μεταβλητού μεγέθους (VLA) ωστόσο δεν υπάρχει σε κανένα πρότυπο της C++, παρά μόνο στο πρότυπο C99. Αν πας να το κάνεις compile με άλλο compiler(VC++) θα σου χτυπήσει όπως επίσης αν το κάνεις compile με την option -pedantic.

>
int eisodos(int v[],int a)
      {
      cout<<"dose to plithos ton stixion tou pinaka "<<endl;
      cin>>a;
      int i;
      for(i=0; i<a; i++)
      {
              cout<<"Dose to "<<i+1<<"o stoixio tou pinaka"<<endl;
              cin>>v[i];
      }
      return v[a],a;
}

 

Αφού περνάς το μέγεθος του πίνακα ως παράμετρο, γιατί το ζητάς από ο χρήστη. Αν θέλεις να διατηρήσει τις αλλαγές στη main πως πρέπει να το μεταβιβάσεις;(Απ. με αναφορά ή με δείκτη);

Η συνάρτησή σου επιστρέφει int, όχι πίνακα.

Με το return μπορείς να επιστρέψεις μόνο μία τιμή.

Οι πίνακες δεν επιστρέφονται από συναρτήσεις(αλλά οι δείκτες ναι)

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

>
void emfanisi(int v[],int a)
      {
      cout<<"Ta stoixeia tou pinaka einai ta eksis:"<<endl;
      int i;
      for(i=0; i<a; i++)
      {
              cout<<v[i]<<" ";
      }
      cout<<endl;
      
}

int metatropi(int v[],int a)
      {
      int i;
      int c;
      c=v[a-1];
      for(i=a-1; i=0; i--)
      {
              v[i]=v[i-1];
                 }
      
      v[0]=c;
      return v[a];
}

Πόσες φορές θα εκτελεστεί ο βρόγχος(Απ. καμία. Γιατί;)

 

>
int main(int argc, char *argv[])
{
   int a,x;
   cout<<"Ergasia 1"<<endl;
   int Pinakas[]={eisodos(Pinakas,a)};
   emfanisi(Pinakas,a);
   int NeosPinakas[]={metatropi(Pinakas,a)};
   emfanisi (NeosPinakas,a);
   system("PAUSE");
   return EXIT_SUCCESS;
}

To a τι τιμή έχει όταν το παιρνάς ως παράμετρο στις συναρτήσεις emfanisi(Pinakas,a);

metatropi(Pinakas,a)

 

Δες αυτές τις παρατηρήσεις, διόρθωσε το πρόγραμμά σου, και αν έχεις και άλλες τα λέμε ξανά.

Δημοσ.

πραγματικα με μπερδεψες :-) δε περιμενα να εχω τοσα λαθοι...μηπως μπορεις να βοηθησεις λιγο παραπανω γτ δε καταλαβα τι και πως να διορθοσω και την ασκηση πρεπει να την τελειωσω σημερα...

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

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

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