Opoios thn lysei kernaw Kafe :P:P

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

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

Απάντηση
Peek-a-Boo
Δημοσιεύσεις: 14
Εγγραφή: 16 Νοέμ 2010 12:01
Τοποθεσία: gr

Opoios thn lysei kernaw Kafe :P:P

Δημοσίευση από Peek-a-Boo » 19 Νοέμ 2010 18:22

Δίνεται ακέραιος Α. Να γραφεί πρόγραμμα που υπολογίζει και εμφανίζει την τιμή του ν για την οποία το άθροισμα Σ = 12+22+32+…+ν2 είναι μεγαλύτερο του A.

Mexri edw ekana den vgazei nohma kai mou exei spasei ta nevra kai thn paradinw avrio vradi EPEIGON BOITHEIA einai h 10h askhsh pou prepei na dwsw oi alles einai comple.



#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{int A,s,v;

printf("Dose ton Akeraio A:");scanf("%d",&A);
for(s=12; s>A; s+=10){
if (s>A){
v=(s/10);
printf("To v einai:%d\n",v);}
}



system("PAUSE");
return EXIT_SUCCESS;
}

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Opoios thn lysei kernaw Kafe :P:P

Δημοσίευση από cpulse » 19 Νοέμ 2010 19:29

Φτιάξε 3-4 μικρά προγράμματα. Κάθε ένα θα κάνει μια πολύ συγκεκριμένη δουλειά. Πχ ένα πρόγραμμα θα προσθέτει 10 στον προηγούμενο αριθμό. Το άλλο θα κάνει σύγκριση αν ένας αριθμός είναι μικρότερος του Α. Στο τέλος ένωσε τα.

Όσο κι αν ακούγεται αστείο.. έτσι λειτουργούν οι σοβαροί προγραμματιστές στα προγράμματα πολλές κλάσεις δυσκολότερα από αυτό. Η μέθοδος είναι η ίδια. Σπάμε το πρόγραμμα σε πολύ μικρές ενότητες και στο τέλος τα δένουμε.

Αν πάρεις την απάντηση έτοιμη ούτε εσύ θα χαρείς, ούτε θα γίνεις σοφότερος.

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

Opoios thn lysei kernaw Kafe :P:P

Δημοσίευση από virxen75 » 19 Νοέμ 2010 22:15

το άθροισμα Σ = 12+22+32+&#8230;+ν2
το ν2 είναι ν (ορθογραφικό λάθος) ή 2*ν ?

παρατηρήσεις
==============
-γιατί ξεκινάς με δηλώσεις C++ και μετά επιλέγεις
εντολές πιο κοντά στη C π.χ. print ,scanf.

-το S που βάζεις στην for δεν είναι σωστό
γιατί? π.χ. αν δώσω τιμή στο Α την μέγιστη δυνατή για ακέραιο ,το s=s+10 θα είναι λάθος!

-το while θα ήταν καλύτερη επιλογή εδώ

-
for(s=12; s>A; s+=10){
if (s>A){
το s μας δίνει ένα στοιχείο την φορά από το άθροισμα και όχι το ζητούμενο άθροισμα με το οποίο θα πρέπει να συγκρίνεις το Α.
επίσης πότε πιστεύεις ότι εκτελείται αυτό το if?

Peek-a-Boo
Δημοσιεύσεις: 14
Εγγραφή: 16 Νοέμ 2010 12:01
Τοποθεσία: gr

Opoios thn lysei kernaw Kafe :P:P

Δημοσίευση από Peek-a-Boo » 19 Νοέμ 2010 22:54

Ok tha to koitaksw avrio me to fws ths meras :) twra koimame orthios :P:P
kai den exei orthografiko lathos ap oso kserw einai v2 , ektos an den vgainei nohma tha prepei na to pw ston kathigith

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

Opoios thn lysei kernaw Kafe :P:P

Δημοσίευση από virxen75 » 19 Νοέμ 2010 22:59

εμένα πάντως μου φαίνεται πιο λογικό να είναι

Σ = 1*2+2*2+3*2+&#8230;+ν*2

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Opoios thn lysei kernaw Kafe :P:P

Δημοσίευση από dva_dev » 20 Νοέμ 2010 05:47

Εμένα μου μοιάζει ο κάθε όρος να είναι σαν ένα f(x) = 10x+2

Άβαταρ μέλους
mechpanos
Honorary Member
Δημοσιεύσεις: 1709
Εγγραφή: 20 Μαρ 2003 00:59
Τοποθεσία: Athens - Pyrgos
Επικοινωνία:

Opoios thn lysei kernaw Kafe :P:P

Δημοσίευση από mechpanos » 20 Νοέμ 2010 12:24

Είναι μία αριθμητική σειρά,

Σ = S αν, = α1 + α2 + α3 + ... όπου:

αν+1 = αν + 10
α0=2
και α1 = 12

οπότε έχουμε α1 = 12
α2 = 22
α3 = 32
και πάει λέγοντας...

οπότε φτιάχνεις μια επαναληπτική διαδικασία που προσθέτεις τα αi μέχρι να γίνει το Σ μεγαλύτερο του Α,
όταν γίνει αυτό τερματίζει η επανάληψη και εμφανίζεις το i
πχ έστω ο ακέραιος αριθμός 29,
i=1 α1 = α0+10= 12
Σ (νέο) = Σ(που έχει αποθηκευθεί στην μνήμη =0) + α1=12 <29
i=2 α2 = α1+10=22
Σ (νέο) = Σαν(που έχει αποθηκευτει στην μνήμη στην προηγούμενη επανάληψη) + α2 = 12+22 =34 > 29

τέλος επανάληψης
εμφάνισε i: 2
o αριθμός αυτός τυχαίνει να είναι και το ν το οποίο σου ζητάει!

αμα θες του λες κιόλας ότι το ν είναι το 2 και ο αριθμος είναι το 22...να φαίνεται πιο λούσο το πρόγραμμα...

Πότε με κερνάς καφέ, και πού!!!


έκανα edit λόγω αρχικού λάθους, τώρα είναι σωστό...
Πύργος θεός Πανηλειακός!!

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

Opoios thn lysei kernaw Kafe :P:P

Δημοσίευση από virxen75 » 20 Νοέμ 2010 12:41

mechpanos έγραψε:Είναι μία αριθμητική σειρά,

Σ = S αν, = α1 + α2 + α3 + ... όπου:

αν+1 = αν + 10
α0=2
και α1 = 12

οπότε έχουμε α1 = 12
α2 = 22
α3 = 32
και πάει λέγοντας...

οπότε φτιάχνεις μια επαναληπτική διαδικασία που προσθέτεις τα αi μέχρι να γίνει το Σ μεγαλύτερο του Α,
όταν γίνει αυτό τερματίζει η επανάληψη και εμφανίζεις το i
πχ έστω ο ακέραιος αριθμός 29,
i=1 α1 = α0+10= 12
Σ (νέο) = Σ(που έχει αποθηκευθεί στην μνήμη =0) + α1=12 <29
i=2 α2 = α1+10=22
Σ (νέο) = Σαν(που έχει αποθηκευτει στην μνήμη στην προηγούμενη επανάληψη) + α2 = 12+22 =34 > 29

τέλος επανάληψης
εμφάνισε i: 2
o αριθμός αυτός τυχαίνει να είναι και το ν το οποίο σου ζητάει!

αμα θες του λες κιόλας ότι το ν είναι το 2 και ο αριθμος είναι το 22...να φαίνεται πιο λούσο το πρόγραμμα...

Πότε με κερνάς καφέ, και πού!!!


έκανα edit λόγω αρχικού λάθους, τώρα είναι σωστό...

αν διαβάσεις το πρώτο post θα δεις ότι αναφέρει
το άθροισμα Σ = 12+22+32+&#8230;+ν2
το ν2 τι είναι?
-ορθογραφικό λάθος?
ή
-είναι ν*2 οπότε η ακολουθία είναι

αν+1=αν+ν*2 ,α0=0

δηλαδή
α1=α0+1*2=1*2
α2=α1+2*2=1*2+2*2

άρα πρέπει να μας ξεκαθαρίσει ποιο ακριβώς είναι το άθροισμα που του ζητάει για να
μπορέσει κάποιος να απαντήσει σωστά.

Άβαταρ μέλους
mechpanos
Honorary Member
Δημοσιεύσεις: 1709
Εγγραφή: 20 Μαρ 2003 00:59
Τοποθεσία: Athens - Pyrgos
Επικοινωνία:

Opoios thn lysei kernaw Kafe :P:P

Δημοσίευση από mechpanos » 20 Νοέμ 2010 13:39

το ν μάλλον είναι κάτι σαν "μπαλαντέρ", δηλαδή αν παρατηρήσεις, είναι:
12, 22, 32, 42, 52, 62....... v2 δηλαδή μπροστά ακέραιος ν για τις δεκάδες και πίσω 2 μονάδες.

εγώ βάζω α1 α2 ... αν τους όρους του αθροίσματος, δηλαδή
α1=12
α2 = 12 + 10 = 22
α3 = 22+10 = 32
.
.
.
αν= α(ν-1)+10 =ν2

κάπως έτσι!

Μετά υπολογίζεις το εκάστοτε άθροισμα Σ = α1+α2+...+αν επαναληπτικά, για 1, 2, ...ν όρους, μέχρι να γίνει μεγαλύτερο από τον ακέραιο Α.
Όταν ικανοποιηθεί η συνθήκη, ξέρεις τον ν γιατί ξέρεις τις φορές!

Τώρα που το σκέφτομαι, αυτό θα μπορούσε να βρεθεί και από τον τύπο του νοστού όρου:
Σ= α1+ α2+...+αν

= 2+(1*10) + 2+(2*10) +...+ 2 + (ν*10)=
2*ν+10*(1+2+...ν)= 2*ν+10*(ν*(ν+1)/2)

Άρα κάνουμε επαναλήψεις μέχρι η παράσταση 2*ν+10*(ν*(ν+1)/2) > Α και βρίσκουμε τον ν (αλλιώς επιλύουμε την εξισωση)!
Πύργος θεός Πανηλειακός!!

Peek-a-Boo
Δημοσιεύσεις: 14
Εγγραφή: 16 Νοέμ 2010 12:01
Τοποθεσία: gr

Opoios thn lysei kernaw Kafe :P:P

Δημοσίευση από Peek-a-Boo » 20 Νοέμ 2010 14:24

int A,i,sum;
sum=0;
printf("Dose ton Akeraio A:");scanf("%d",&A);
for(i=1; sum<A; i++){
sum=sum+((i*10)+2);
}
printf("To i einai:%d\n",i-1);
printf("To sum einai:%d\n",sum);


Kai nai thn katafera :):)
Lipon oson afora ton kafe lew gia Marousi ^^

Άβαταρ μέλους
mechpanos
Honorary Member
Δημοσιεύσεις: 1709
Εγγραφή: 20 Μαρ 2003 00:59
Τοποθεσία: Athens - Pyrgos
Επικοινωνία:

Opoios thn lysei kernaw Kafe :P:P

Δημοσίευση από mechpanos » 20 Νοέμ 2010 14:55

Χα χα χα!!! ΟΚ άστο, αμα κατέβεις καθόλου προς Πύργο μεριά σε κερνάω εγώ έναν!!!
Πύργος θεός Πανηλειακός!!

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Opoios thn lysei kernaw Kafe :P:P

Δημοσίευση από dva_dev » 20 Νοέμ 2010 22:18

Peek-a-Boo έγραψε:int A,i,sum;
sum=0;
printf("Dose ton Akeraio A:");scanf("%d",&A);
for(i=1; sum<A; i++){
sum=sum+((i*10)+2);
}
printf("To i einai:%d\n",i-1);
printf("To sum einai:%d\n",sum);


Kai nai thn katafera :):)
Lipon oson afora ton kafe lew gia Marousi ^^
Δοκίμασες τι βγάζει αν για Α δώσεις κάτι μικρότερο από 12;

Απάντηση

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

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

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