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

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

Δημοσ.

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

Θελω να παιρνω χ αριθμους απο τον χρήστη και να τους αποθηκευω σε μεταβλητη (πινακα), απο εκει και περα να βγαζω

Μεσο ορο, διασπορα και τυπικη αποκλιση.Το προγραμμα το εχω φθασει μεχρι εδω :

 

{

int plithos,x,j;

float numbers[x];

float arithmos,sum,mes_or,diaspor,typ_ap;

 

cout <<"Dose plithos arithmon > ";

cin >>plithos;

 

for (int i=0;i<plithos;i=i+1)

{

cout << "Dose ton "<<i+1<<"o arithmos > ";

cin >> arithmos;

 

for (int x=0;x<plithos;x++)

numbers[x]=arithmos;

}

Δημοσ.

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

Θελω να παιρνω χ αριθμους απο τον χρήστη και να τους αποθηκευω σε μεταβλητη (πινακα), απο εκει και περα να βγαζω

Μεσο ορο, διασπορα και τυπικη αποκλιση.Το προγραμμα το εχω φθασει μεχρι εδω :

 

{

int plithos,x,j;

float numbers[x];

float arithmos,sum,mes_or,diaspor,typ_ap;

 

cout <<"Dose plithos arithmon > ";

cin >>plithos;

 

for (int i=0;i<plithos;i=i+1)

{

cout << "Dose ton "<<i+1<<"o arithmos > ";

cin >> arithmos;

 

for (int x=0;x<plithos;x++)

numbers[x]=arithmos;

}

 

Γιατί βάζεις 2η for?? Και μάλιστα ξαναδηλώνεις την μεταβλητή x. Σβήσε την και κάνε το numbers[i]=arithmos;

Επίσης μέσα στην πρώτη for το i=i+1 κάνε το i++.

Αφού δεν θέλεις να αρχικοποιήσεις τον πίνακα γιατί κάνεις float numbers[x];

έτσι ο πίνακας αποκτά σε μέγεθος την τιμή του x αυτή χωρίς αρχικοποίηση μπορεί να είναι οποιαδήποτε. Άσε τον πίνακα κενό.

Δημοσ.

1ο Αν θέλεις να φτιάξεις έναν array πρέπει να δηλώσεις το μήκος του από την αρχή.

 

Δηλαδή:

 

>float numbers[10];

 

Και μετά αν έχω καταλάβει καλά θες να κάνεις:

 

>
for (int i=0;i<plithos;i=i+1)
{
cout << "Dose ton "<<i+1<<"o arithmos > ";
cin >> numbers[i];
}

 

Επίσης μη ξεχάσεις το μήκος του array να είναι ίδιο με την τιμή της μεταβλητής plithos.

Δημοσ.

Το μηκος του πινακα θελω να ειναι μεταβλητό και να παιρνει το μεγεθος του οταν ρωταω τον χρηστη ποσους αριθμους(πληθος) θελει να δωσει.Δεν γινεται ?

Δημοσ.

Από όσο θυμάμαι όχι. Πρέπει να το έχεις δηλώσει πριν το κάνεις compile. Αν είμαι λάθος ας με διορθώσει κάποιος. :)

Δημοσ.

Γιατί βάζεις 2η for?? Και μάλιστα ξαναδηλώνεις την μεταβλητή x. Σβήσε την και κάνε το numbers[i]=arithmos;

Επίσης μέσα στην πρώτη for το i=i+1 κάνε το i++.

Αφού δεν θέλεις να αρχικοποιήσεις τον πίνακα γιατί κάνεις float numbers[x];

έτσι ο πίνακας αποκτά σε μέγεθος την τιμή του x αυτή χωρίς αρχικοποίηση μπορεί να είναι οποιαδήποτε. Άσε τον πίνακα κενό.

 

Πως αφηνω τον πινακα κενο ?

Δημοσ.

δοκίμασε π.χ. έτσι

 

>
#include <iostream>
using namespace std;
int main(){
   int plithos,x,j;
   float arithmos,sum,mes_or,diaspor,typ_ap;
   cout <<"Dose plithos arithmon > ";
   cin >>plithos;
   float numbers[plithos];
   for (int i=0;i<plithos;i++){
       cout << "Dose ton "<<i+1<<"o arithmo > ";
       cin >> arithmos;
   }
} 

Δημοσ.

Δώσε πρώτα τιμή στην Χ και μετά κάνε το float numbers[x];

Έτσι ο πίνακας θα είναι μεταβλητός.

 

πχ.

#include <iostream>

using namespace std;

 

int main()

{

 

int x;

cout << "Dwse plithos pinaka: ";

cin >> x;

int array[x];

 

for (int i = 0; i < x; i++)

{

cout << "Pliktrologiste ton " << i << " arithmo: ";

cin >> array;

}

 

for (int y = 0; y < x; y++)

{

cout << array[y] << endl;

}

 

return 0;

}

Δημοσ.

Ενταξει το εφιαξα !!!, εβαλα και cout δοκιμαστικο και μου δουλεψε τελεια.

 

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

int main(int argc, char *argv[])

{

 

int plithos;

float arithmos,sum,mes_or,diaspor,typ_ap;

cout <<"Dose plithos arithmon > ";

cin >>plithos;

float numbers[plithos];

for (int i=0;i<plithos;i++)

{

cout << "Dose ton "<<i+1<<"o arithmo > ";

cin >> arithmos;

numbers=arithmos;

}

 

for (int x=0;x<plithos;x++)

cout << numbers[x];

 

system("PAUSE");

return EXIT_SUCCESS;

}

 

Ευχαριστω πολυ και καλες γιορτες !!!!.

Δημοσ.

Αξίζει να σημειώσουμε εδώ ότι κανονικά στην C++ το μέγεθος ενός πίνακα σαν και αυτόν που φτιάχνεις πρέπει να είναι σταθερό, δηλαδή αριθμός ή const, π.χ.

 

>
float x[5];

const int size = 10;
float y[size];

 

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

Δημοσ.

Το μηκος του πινακα θελω να ειναι μεταβλητό και να παιρνει το μεγεθος του οταν ρωταω τον χρηστη ποσους αριθμους(πληθος) θελει να δωσει.Δεν γινεται ?

 

Όπως πολύ σωστά είπαν και τα πεδιά παραπάνω: όχι, δεν γίνεται αν θέλεις να είσαι σίγουρος ότι το πρόγραμμά σου θα κάνει compile με κάποιον άλλο compiler εκτός από τον δικό σου. Τεχνικά, εκτός κι αν γράφεις σε C99, αυτό που λες δεν προβλέπεται από τη γλώσσα.

 

Μπορείς όμως να κάνεις το ίδιο πράγμα με διαφορετική σύνταξη.

 

Σε C και C++:

 

>float* numbers = malloc(sizeof(float) * plithos);
if (!numbers) {
   // out of memory, αποφάσισε τι θα κάνεις
}
// Χρησιμοποιείς το numbers κανονικά σαν πίνακα, και όταν τελειώσεις:
free(numbers);

 

Σε C++ μόνο:

 

>
float* numbers = new (nothrow) float[plithos];
if (!numbers) {
   // out of memory, αποφάσισε τι θα κάνεις
}
// Χρησιμοποιείς το numbers κανονικά σαν πίνακα, και όταν τελειώσεις:
delete[] numbers;

 

Ειδικά για τη C++ να πω ότι υπάρχουν πάρα μα πάρα πολλοί διαφορετικοί τρόποι για να το κάνεις αυτό, και αυτός που δίνω παραπάνω δεν είναι καλός κώδικας C++ (δηλαδή αυτό το στυλ κώδικα "δεν ταιριάζει στις ιδιαιτερότητες της γλώσσας"). Αν δεν έχεις κάποιο περιορισμό λόγω εκφώνησης, το καλύτερο που μπορείς να κάνεις σε τέτοιες περιπτώσεις είναι

 

>std::vector<float> numbers(plithos);

 

και τελείωσες.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...