Πληροφορικάριος
Δραστήριο μέλος
Code:#include<stdio.h> main() { int c,x,y,z,k,l,m,n,o,p; printf("Grapse enan akeraio arithmo mikrotero tou 1000 : "); scanf("%c",&c); c%x=0 c%y=0 c%z=0 c%k=0 c%l=0 c%m=0 c%n=0 c%o=0 p=1; x+y+z+k+l+m+n+o+p=c printf("%d, %d, %d, %d, %d, %d, %d, %d, %d",x,y,z,k,l,m,n,o,p); }
Τι προσπαθείς να κάνεις εδώ? δεν κατάλαβα. Πρώτα πρώτα πρέπει να δείς πως δουλεύει κάθε τελεστής.
Πάντως όπως είπε και ο akikos μπορείς να το κάνεις με μία for κάπως έτσι:
#include <iostream>
using namespace std;
int main()
{
int num;
do
{
cout << ">>";
cin >> num;
}while(num>1000 || num<1);
int sum=0;//άθροισμα των διαιρετών
for(int i=1; i<=num/2; i++)
if( num%i == 0)
sum+=i;
if(sum==num)
cout << "O arithmos " << num << " einai teleios." <<endl;
else
cout << "O arithmos " << num << " den einai teleios." <<endl;
system("PAUSE");
}
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
#include<iostream>
#include<string>
using namespace std;
int main()
{
string name1,name2;
cout<<"dwste omades: ";
cin>>name1>>name2;
if(name1.length()>name2.length())
cout<<"kerdise h omada: "<<name1<<endl;
else if(name1.length()<name2.length())
cout<<"kerdise h omada: "<<name2<<endl;
else
cout<<"isopalia"<<endl;
}
Σου προτείνω να διαβάσεις λίγο τα strings και μετά να σκευτείς ασκήσεις για να λύσεις.(αν δεν βγάζεις άκρη απο το διαδίκτυο αγόρασε ένα βιβλίο)
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
4.δεν σε πιάνω..αλλα θα μαθω για το while και πιστευω να σε πιάσω .
5.εβαλα return παντου ..γιατι αν δεν εμπαινε..μου ξαναζητουσε ώρες φροντιστηριων σε καθε μαθημα..(αν θες τρέξε το προγραμμα χωρις return..και με return,για να καταλάβεις..)
Σου ξαναζητάει ώρες φροντιστηρίων γιατί τα έχεις βάλει μέσα σε ένα ατέμονο while.Βάλε if ή καλύτερα switch.Παραδειγμα while:
i=1;
while(i<=3)//όσο i μικρότερο ή ίσο του 3
cout<<i++<<endl;
1
2
3
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
2.Να δηλώνεις όσο πιο λίγες μεταβλητές μπορείς.
3.Στην προκειμένη περίπτωση καλύτερα να χρησιμοποιήσεις την switch αν δε ξέρεις τι είναι μάθε το.
4.Τα while ειναι για επαναληπτική διαδικασία κατι που δεν θες τώρα.Με το ίδιο switch θα γίνετε και αυτό.Ένωσε τα if και τα while σε ένα switch.
5.return 0 να βάζεις μόνο στο τέλος του προγράμματος.
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
καταλαβα.
Υθελα να δω πως λειτουργει ο υπολογιστης και οχι τι ειναι το &.
Ενα κενο ομως υπαρχει ακομα.
Πως γινεται μια εντολη return x; την μια να επιστρεφει μια τιμη και την αλλη μια αναφορα στη μεταβλητη χ.
???
Η αναφορική συνάρτηση δεν επιστρέφει τα περιεχόμενα της θέσης μνήμης της x αλλα αναφορά στην θέση μνήμης της x.
Απλά αν θές η συνάρτηση να επιστρέφει αναφορά στην μεταβλητή που κάνεις return βάζεις & αν θές διεύθηνση βάζεις * και αν θες τα περιεχόμενα δεν βάζεις τίποτα.
Αν επιστέφει διεύθυνση πρέπει να είναι return &x; όπως και στις απλές μταβλητές πχ int a,*b=&a;
στις αναφορές δεν χρειάζετε τίποτα όπως και στις απλές μεταβλητές: int a,&b=a;
Απο αυτά που καταλαβαίνω σου λέω και εγώ.Ρώτα τον καθηγητή σου για καλύτερες απαντήσεις.
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
Δεν έχει διαφορετικες επιστρεφομενες τιμες,η μία επιστρεφει την τιμή της x και η άλλη επιστρέφει αναφορά στην x.αν έχει τo & στην δήλωση επιστρέφει αναφορά.. Πως γινεται μια συναρτηση με το ιδιο body να εχει διαφορετικες επιστρεφομενες τιμες ...;
Επιστρέφει αναφορά στην θέση μνήμης του x.Το δεύτερο που λές πρέπει να ισχύει.Επισης με την φραση "επιστρεφει μια αναφορα στο x τι εννοουμε" ; Επιστρεφει διευθυνση, μια μεταβλητη χωρις ονομα η οποια αποτελει μια αναφορα στο x ;
#include<iostream>
using namespace std;
int x=3;
int &f(){return x;}
int main()
{
int k=6;
cout<<f()<<endl;
f()=k;
cout<<f()<<endl;
return 0;
}
καλειτε η συνάρτηση επιστρέφει αναφορα στην x(δηλαδή αναφορά στην θέση μνήμης της x) εμφανίζετε το 3
καλειτε η συνάρτηση επιστρέφει αναφορα στην x και καταχωρήτε στο x το 6.
Βασικά το "f()" είναι σαν το όνομα της "αναφορικής μεταβλητής" στην x.
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
Και εγώ τώρα μαθαίνω δεν ξέρω 100%.αν ξέρει καλύτερα κάποιος ας με διορθώσει.
στην αρχή του κώδικα?
γιατι όπου και να το βάλω στο κώδικα δεν το αναγνωρίζει...
στην αρχή της
main()
{
system("chcp 1253");
}
κάνε include και το <stdlib.h>.Εκεί έχει δηλωθεί η system.
Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
μετά πήγαινε ιδιότητες στο cmd (πάνω αριστερά)και επέλεξε γραμματοσειρά lucida console.
Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
{
#include<iostream>
#include<string.h>
using namespace std;
class book
{
protected:
char name[30];
public:
virtual void show(){cout<<"paramithia."<<endl;}
};
class book1:public book
{
public:
book1(char n[]){strcpy(name,n);}
void show(){cout<<name<<endl;}
};
class book2:public book
{
public:
book2(char n[]){strcpy(name,n);}
void show(){cout<<name<<endl;}
};
int main()
{
char name1[]="Kokkinoskoyfitsa";
char name2[]="Ta tria gourounakia";
book1 b1(name1);
book2 b2(name2);
book *ptr[2];
ptr[0]=&b1;
ptr[1]=&b2;
for(int i=0;i<2;i++)
ptr[i]->show();
return 0;
}
Αν μια συνάρτηση δηλωθεί ως virtual στην βασική κλάση τότε ένας δείκτης της βασικής κλασης μπορεί να καλέσει τις συναρτήσεις-μέλη των παράγωγων κλάσεων.
Στο παράδειγμα η show ειναι εικονική.Ο πίνακας δεικτών ptr ειναι της βασικής κλάσης οπου ptr[0] δείχνει στο αντικείμενο b1 και ptr[1] στο b2.Αν η show δεν είχε δηλώθει ως εικονική ο ptr δεν θα μπορούσε να καλέσει την show των b1 και b2 ,θα καλούσε την δικία του show και θα εκτύπωνε
paramithia
paramithia
ενώ τώρα μπορεί και εκτυπώνει:
Kokkinoskoyfitsa
Ta tria gourounakia
}
αλλιώς
ξαναρώτα;
Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
Το int μπροστά απο την main δηλώνει πως η main() θα επιστρέψει στο σύστημα έαν ακέραιο αριθμό(integer) π.χ. ο Γιώργης Χατζηπαυλομαραγκάκης 0 3ος επιστρέφει 0 που σημαίνει πως όλα πήγαν καλά.(μην σε απασχολουν τώρα αυτά θα μάθεις μετά για τις συναρτήσεις.)
να ρωτήσω γιατι να ξεκίνησω με C?
Αν έχεις πάει σε ικανοποιητικό επίπεδο την python δεν υπάρχει λόγος να δεις πρώτα C διαφορετικά δες πρώτα C γιατι είναι πιο εύκολη και αν την μάθεις καλά θα μάθεις και C++ ευκολότερα.
Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
Τώρα δουλεύει αλλά δεν κατάλαβα ακριβώς πως λειτουργεί αυτό
else
{
if(MaxProductSum(Array,Dim,sum,product)==1)
return 1
else
return -1
}
μπόρεις να το εξηγήσεις λίγο;
Οταν το dim γίνει 0 θα επιστρεψει 1 ή -1 στην προηγούμενη συνάρτηση που το dim ήταν 1.Αν επεστρεψε 1 τότε και αυτή θα επιστρέψει 1 στην συνάρτηση που το dim ήταν 2 αλλιώς -1. . . μέχρι να φτάσει στην πρώτη συνάρτηση και να το επιστρέψει στην main.
Το προηγούμενο ήταν λάθος γιατι δεν επεστρεφε τίποτα στην main το μόνο return γινότανε στην τελευταία συνάρτηση με dim 0.
Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
Αντέγραψα ακρίβως τον κώδικα και βγάζει παλι ασχετο αριθμό .......
Ναι ήταν λαθος.Επεστρεφε το 1 μόνο την πρώτη φορα βάλε αυτο:
#include<stdio.h>
#include<stdlib.h>
int MaxProductSum(float *Array,int Dim,float sum,float product)
{
sum+=Array[--Dim];//1η επανάληψη sum=3,2η επανάληψη sum=5 3η επανάληψη sum=6//
product*=Array[Dim];//1η επανάληψη product=3 2η και 3η επανάληψη product=6//
if(Dim==0)//1η και 2η επανάληψη ψευδής,3η επανάληψη αληθής//
{
if(sum<product)//6==6 είναι ίσα και επιστρέφει 1//
return(-1);
else
return(1);
}
else
if(MaxProductSum(Array,Dim,sum,product)==1)
return 1;
else
return -1;
}
int main(void)
{
float a[]={1,2,3};
printf("%d",MaxProductSum(a,3,0,1));
return 0;
}
Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
Κύριε Πληροφοριακέ τι σημαίνουν αυτά " #include<iostream>" '
"using namestream std;" "cout<<MaxProductSum(a,2,sum,product)<<end1; εμένα ο μεταγλωτιστής τα παίρνει λαθός.
θέλω μέσα απο ένα σύνολο αριθμών να βρίσκει ποιό είναι μεγαλύτερο το άθροισμα ή το γινόμενο.
Συγνώμη δεν είδα οτι μιλάς για C επειδή το θέμα είναι για C++..Kοίτα αυτό:
#include<stdio.h>
#include<stdlib.h>
int MaxProductSum(float *Array,int Dim,float sum,float product)
{
sum+=Array[--Dim];//1η επανάληψη sum=3,2η επανάληψη sum=5 3η επανάληψη sum=6//
product*=Array[Dim];//1η επανάληψη product=3 2η και 3η επανάληψη product=6//
if(Dim==0)//1η και 2η επανάληψη ψευδής,3η επανάληψη αληθής//
{
if(sum<product)//6==6 είναι ίσα και επιστρέφει 1//
return(-1);
else
return(1);
}
else
MaxProductSum(Array,Dim,sum,product);
}
int main(void)
{
float a[]={1,2,3};
printf("%d",MaxProductSum(a,3,0,1));
return 0;
}
Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πληροφορικάριος
Δραστήριο μέλος
#include<iostream>
using namespace std;
int MaxProductSum(float *Array,int Dim,float sum,float product)
{
sum+=Array[--Dim];//1η επανάληψη sum=12,2η επανάληψη sum=13//
product*=Array[Dim];//1η και 2η επανάληψη 20//
if(Dim==0)//1η επανάληψη ψευδής,2η επανάληψη αληθής//
{
if(sum<product)//13<20//
return(-1);
else
return(1);
}
else
MaxProductSum(Array,Dim,sum,product);
}
int main(void)
{
float a[]={1,2,3},sum=10,product=10;
cout<<MaxProductSum(a,2,sum,product)<<endl;
return 0;
}
Τι θες να κάνει η συνάρτηση;
Πάντως το παραπάνω σωστα μου επιστρέφει -1
Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.