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

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

Δημοσ. (επεξεργασμένο)
Ο κώδικας είναι αυτός:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <iomanip>
 
using namespace std;
 
 
bool fthinousa(float n1, float n2)//sunarthsh gia na diatassei
{                                //ta stoixeia tou pinaka kata
    return n1>n2;               //fthinousa seira
}
 
bool au3ousa(float n1, float n2)//sunarthsh gia na diatassei
{                              //ta stoixeia tou pinaka kata
    return n1<n2;             //auksousa seira
}
 
int main()
{
    int n, k, a;
 
    cin >> n >> k;
 
    float b[n], result1 = 0.f;// arxikopoioume to apotelesma sto 0 kai orizoume ton pinaka
 
    float array2[(n-k)];//orizoume ton deutero pinaka pou tha valoume ta stoixeia meta thn auksousa seira
    float array3[(n-(2*k))]; //orizoume ton trito pinaka pou tha valoume ta telika stoixeia pou tha vroume to meso oro
 
    for (int i=0; i<n; i++)
    {
        cin >> b;//vazoume ston arxiko pinaka ta stoixeia pou mas zhtountai
    }
        sort(b, b + n, au3ousa);//orizoume ta stoixeia tou pinaka kata auksousa seira
 
    for(int i=0; i<n-k; i++)
    {
        array2=b[i+k];//to prwto stoixeio tou neou mou pinaka einai apo to k-osto+1 stoixeio tou allou afou ta k prwta ta diwxnw
    }
        sort(array2, array2 + (n-k), fthinousa);//orizoume ta stoixeia tou pinaka kata fthinousa seira
 
    for(int i=0; i<n-k; i++)
    {
        array3=array2[i+k];//oti to prwto stoixeio tou neou mou pinaka einai apo to k-osto+1 stoixeio tou allou afou ta k prwta ta diwxnw
    }
 
    for(a=0; a < (n-(2*k)); a++)
    {
        result1 += array3[a];//prosthetoume ola ta stoixeia tou pinaka gia na vgaloume meta to meso oro
    }
 
 
 
 
 
//
//B' SKELOS
//
    float array4[n-(2*k)];//orizoume ton 4o pinaka
 
 
 
    for(int i=0; i<(n-(2*k)); i++)
    {
        array4=array2[i+k];//oti to prwto stoixeio tou neou mou pinaka einai apo to k-osto+1 stoixeio tou allou afou ta k prwta ta diwxnw
        sort(array4, array4, au3ousa);//orizoume ta stoixeia tou pinaka kata au3ousa seira
    }
 
 
    array4[0]=array4[];
 
 
    for(int i=0; i<(n-(2*k)); i++)
    {
        cout << endl << array4;
    }
 
 
    return 0;
}

δεν μου γίνεται σωστά η μεταφορά ή έξοδος στην οθόνη των τιμών του array4 που θέλω να είναι ίδιες με του array3 για να το χρησιμοποιήσω αλλού πιο μετά. Είμαι σίγουρος πως το λάθος είναι στον κοκκινισμένο κώδικα.

Επεξ/σία από ReputGlory1
Δημοσ.
   float array2[(n-k)];

Το μεγεθος του πινακα (b, array2, array3) πρεπει να ειναι γνωστό κατα το compile. Τα υπολοιπα δεν τα ειδα.

 

τα δίνει ο χρήστης

Δημοσ.

Για μικρα n,k μπορει να παίζει, αλλα ο compiler δεν εχει αποθηκεύσει το χώρο για τους πινακες (αφου δεν γνωριζει ποσο χρειαζεται).   

 for(int i=0;i<n;i++)
    {
        array4[i]=array3[n-(2*k)];
    }

Εδω βαζεις σε ολο το array4 τον ιδιο αριθμό : array3[n-(2*k)]

Δημοσ.

εγώ θέλω απλά από εκει που λέει B' SKELOS και κάτω να αντιγράψω όλες τις τιμές του array3 sto array4 αλλά θέλω αφού το array3 έχει n-(2*k) το 4 να έχει n με τις 2*κ θέσεις να είναι 0. Δλδ οι θέσεις που δεν υπάρχουν στην array3 να εμφανίζονται σαν 0 στην array4

Δημοσ.

εγώ θέλω απλά από εκει που λέει B' SKELOS και κάτω να αντιγράψω όλες τις τιμές του array3 sto array4 αλλά θέλω αφού το array3 έχει n-(2*k) το 4 να έχει n με τις 2*κ θέσεις να είναι 0. Δλδ οι θέσεις που δεν υπάρχουν στην array3 να εμφανίζονται σαν 0 στην array4

Δοκιμασε 

 

array4[i]=array3[n-(2*k)+i];

Δημοσ.

Offtopic, αλλά αν αντικαταστήσεις και τη cin με scanf δε θα έχει μείνει απολύτως τίποτα από C++ σ' αυτό τον κώδικα.

 

Τουλάχιστον έτσι για τα προσχήματα αντί να χρησιμοποιείς features που υπάρχουν μόνο στη C (αυτό που λέει ο albnik με τους πίνακες) βάλε ένα std::vector ή έστω ακόμα κι ένα new για τον πίνακα αντί να "θέλεις απλά" να φύγει το κακό απ' τα μάτια σου.

 

Αυτό πάντως που θες γίνεται με μια γραμμή αν σ' ενδιαφέρει να το ψάξεις:

std::fill(std::copy(array3, array3 + n - 2 * k, array4), array4 + n, 0);

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

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

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

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

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

Σύνδεση

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

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