Βοήθεια σε C/C++

1
Αν ξέρει κανείς C++ και μπορεί αν βοηθήσει

1. Έστω το παρακάτω απόσπασμα κώδικα στη γλώσσα προγραμματισμού C:
int i1, i2;
int *p1, *p2;
i1 = 5;
p1 = &i1;
i2 = *p1 / 2 + 10;
p2 = p1;
Τι θα τυπωθεί στην οθόνη μετά την εκτέλεση της παρακάτω εντολής:
printf("i1 = %i, i2 = %i, *p1 = %i, *p2 = %i\n", i1, i2, *p1, *p2);
Τεκμηριώστε την απάντησή σας.

2. H ακόλουθη συνάρτηση στη γλώσσα προγραμματισμού C λαμβάνει ως παράμετρο μια συμβολοσειρά ψηφίων (δηλ. αλφαριθμητικό που αποτελείται μόνο από τα ψηφία 0-9), τη μετατρέπει στον αντίστοιχο αριθμό στο δεκαδικό σύστημα αρίθμησης και επιστρέφει τον αριθμό αυτό. Συμπληρώστε τη συνάρτηση στο σημείο που συμβολίζεται με ??? ώστε να λειτουργεί σωστά.
int strToInt (char string[])
{
int i, intValue, result = 0;
for (i = 0; string >= '0' && string <= '9'; ++i)
{
intValue = string - '0';
result = ???
}
return result;
}

3. Η ακόλουθη συνάρτηση στη γλώσσα προγραμματισμού C αθροίζει τα στοιχεία ενός μονοδιάστατου πίνακα ακεραίων αριθμών και επιστρέφει το άθροισμά τους. Ο μονοδιάστατος πίνακας ακεραίων (array) καθώς και το μέγεθος του πίνακα (n) δίνονται ως παράμετροι στη συνάρτηση. Συμπληρώστε τη συνάρτηση στα δύο σημεία που συμβολίζονται με ??? ώστε να λειτουργεί σωστά.
int arraySum (int array[], int n)
{
int sum = 0, *ptr;
for (ptr = array; ???; ++ptr)
sum += ???
return sum;
}
4. Να γραφεί πρόγραμμα στη γλώσσα προγραμματισμού C, το οποίο:
• διαβάζει δύο ακέραιες τιμές και τις εκχωρεί σε δύο ακέραιες μεταβλητές.
• καλεί µια συνάρτηση τύπου void, η οποία δέχεται ως παραμέτρους τις δύο παραπάνω ακέραιες μεταβλητές και επιστρέφει στον πρώτο ακέραιο το γινόμενο των δύο ακεραίων και στο δεύτερο ακέραιο το πηλίκο της ακέραιας διαίρεσης των δύο ακεραίων.
• εμφανίζει στην οθόνη τις νέες τιμές των δύο ακέραιων μεταβλητών.
Τελευταία επεξεργασία από το μέλος MakisH την Τρί 05 Μαρ 2013, 7:35 pm, έχει επεξεργασθεί 1 φορά συνολικά.
Λόγος: αλλαγή τίτλου

Re: Άσκηση C++

4
Ερώτημα 1

Θα τυπωθεί το εξής:
Spoiler: show
i1 = 5, i2 = 12, *p1 = 5, *p2 = 5 και τεκμηριώνεται με απλή θεωρία pointers
Ερώτημα 2
Spoiler: show

Κώδικας: Επιλογή όλων

result += intValue*pow(10,i) 
Ερώτημα 3
Spoiler: show
Σε αυτό πιστεύω ότι ο κώδικας θέλει αλλαγή και στο σημείο που λέει ++ptr kαι θα πρεπε να είναι ++sizeof(int), αλλά αν δεν είχα άλλη επιλογή θα έγραφα το εξής:

Κώδικας: Επιλογή όλων

int arraySum (int array[], int n)
{
int sum = 0, *ptr;
for (ptr = array; ptr<&array[n]; ++ptr)
sum += *ptr
return sum;
}
Ερώτημα 4
Spoiler: show

Κώδικας: Επιλογή όλων

 
int main(){
int a,b;
scanf("%d %d \n", &a, &b);
function(&a, &b);
printf("a=%d, b=%d\n",a,b);
return 0;
}
void function(int *a, int *b){
int help1;
help1=*a;
*a=help1*(*b);
(*b)= help1/(*b);
}
People wishing to analyze nature without using mathematics just settle for a reduced understanding.

Re: Άσκηση C++

7
1. Να γραφεί πρόγραμμα στη γλώσσα προγραμματισμού C, που διαβάζει δυο λέξεις και ελέγχει εάν η μία λέξη είναι αναγραμματισμός της άλλης. Διευκρινίζεται ότι μια λέξη w1 είναι αναγραμματισμός μιας λέξης w2, αν οι w1 και w2 έχουν ακριβώς τα ίδια γράμματα και ίδιο πλήθος εμφανίσεων για κάθε γράμμα. Υποθέτουμε πως ο χρήστης εισάγει μόνο λέξεις που αποτελούνται από τουλάχιστον έναν (1) και το πολύ 30 πεζούς χαρακτήρες του αγγλικού αλφαβήτου.
2. Σε μια ειδική κατηγορία ακεραίων αριθμών ικανοποιείται το ακόλουθο κριτήριο: Για κάθε αριθμό της κατηγορίας αυτής, το άθροισμα των μεμονωμένων ψηφίων του, υψωμένων εις τον κύβο, είναι ίσο με τον ίδιο τον αριθμό. Για παράδειγμα: το 1 ικανοποιεί το κριτήριο αυτό, αφού 13 = 1. Ομοίως, το ίδιο ισχύει για τον αριθμό 371, αφού 33 + 73 + 13 = 371. Να γραφεί πρόγραμμα στη γλώσσα προγραμματισμού C, που να τυπώνει τους αριθμούς από το 1 μέχρι και το 500 που ικανοποιούν το ανωτέρω κριτήριο.

3. Να γραφεί πρόγραμμα στη γλώσσα προγραμματισμού C, το οποίο να διαβάζει έναν θετικό ακέραιο αριθμό το πολύ 9 ψηφίων (εφαρμόστε σχετικό αμυντικό προγραμματισμό) και να εμφανίζει, κάνοντας χρήση αναδρομικής συνάρτησης, το άθροισμα των ψηφίων του αριθμού. Για παράδειγμα, ο αριθμός 462459 έχει άθροισμα ψηφίων: 4+6+2+4+5+9=30.

4. Να γραφεί πρόγραμμα στη γλώσσα προγραμματισμού C, που διαβάζει μια ημερομηνία (π.χ. 31/12/2012) και εμφανίζει στην οθόνη την επόμενη ημερομηνία (δηλ. 1/1/2013). Για να μπορεί να εφαρμοστεί αμυντικός προγραμματισμός κατά την είσοδο της ημερομηνίας, ο χρήστης θα δίνει πρώτα το έτος (απαιτείται να είναι 4ψήφιος αριθμός), μετά το μήνα (σε αριθμητική μορφή) και μετά την ημέρα. Ιδιαίτερη προσοχή χρειάζεται για τα δίσεκτα έτη. Για να προσδιορίσουμε αν ένα έτος είναι δίσεκτο εφαρμόζουμε τα εξής:
α. Ένα έτος είναι δίσεκτο όταν διαιρείται με το 4 άλλα δεν διαιρείται με το 100.
β. Κατ’ εξαίρεση του παραπάνω κανόνα, ένα έτος που διαιρείται με το 400 είναι δίσεκτο.
To πρόγραμμα να αρχίζει ως εξής:
#include <stdio.h>
struct date
{
int day;
int month;
int year;
};
const int daysPerMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};

Re: Άσκηση C++

8
Καλημέρα σας
μια ερώτηση????

γιατί δεν λειτουργεί σωστά:

#include <stdio.h>
#include <math.h>

void function (int a, int b);
int main() {
int a,b;
scanf("%d %d \n", &a, &b); fflush(stdin);
printf("a=%d, b=%d\n",a, b);
return 0;
}
void function( int *a, int *b){
int c;
c= *a;
*a= c *(*b);
(*b)= c /(*b);
getchar();

}

Re: Άσκηση C++

9
Γιατί έχεις διαφορετικό declaration και διαφορετικό definition της συνάρτησης function. Τη μία βάζεις σαν παραμέτρους ακέραιους (int a, int b) και την άλλη σαν pointer σε ακεραίους (int *a, int *b). Πρέπει είτε να είναι ίδια, είτε μπορείς απλά να βγάλεις τις παραμέτρους στο declaration και να γράψεις void function(); και θα δουλέψει
People wishing to analyze nature without using mathematics just settle for a reduced understanding.

Re: Άσκηση C++

10
tim έγραψε:Γιατί έχεις διαφορετικό declaration και διαφορετικό definition της συνάρτησης function. Τη μία βάζεις σαν παραμέτρους ακέραιους (int a, int b) και την άλλη σαν pointer σε ακεραίους (int *a, int *b). Πρέπει είτε να είναι ίδια, είτε μπορείς απλά να βγάλεις τις παραμέτρους στο declaration και να γράψεις void function(); και θα δουλέψει
Ευχαριστώ πολύ για την διευκρίνηση...Αυτό που με τώρα ενοχλεί είναι ότι στην εκτέλεση δεν βλέπω τίποτα , πληκτρολογώ τα ψηφία και ύστερα το παράθυρο κλίνει?????