Number Analyzer - C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Number Analyzer - C

Δημοσίευσηαπό UnKnown96 » 19 Αύγ 2011, 15:28

Έφτιαξα ένα πρόγραμμα, το οποιό του δίνεις έναν αριθμό και μετά αυτό σου δίνει τις ακόλουθες πληροφορίες:

1) Τον αριθμό Fibonacci του.
2) Τον φίλο αριθμό του.
3) Αν είναι μονός ή ζυγός.
4) Αν είναι τέλειος, άφθονος ή ανεπαρκής.
5) Τον τριγωνικό αριθμό του.

Το έκανα να δουλεύει με θετικούς ακέραιους αριθμούς μόνο.

Εδώ είναι ο κώδικας σε C.

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

#include <stdio.h>

/**********************************************************************************/

// Triangular Number Function
unsigned long long int TriangularNumber (unsigned long long int Input) {

unsigned long long int Counter, Triangular = 0;

for (Counter = 1; Counter <= Input; Counter++) { Triangular += Counter; }

return Triangular;
}

/**********************************************************************************/

// Fibonacci Number Function
unsigned long long int FibonacciNumber (unsigned long long int Input) {

return (Input * 2) - 3;
}

/**********************************************************************************/

// Odd/Even Number Function
unsigned long long int OddEvenNumber (unsigned long long int Input) {

if (Input % 2 == 0) return 1;
else return 0;
}

/**********************************************************************************/

// Perfect/Abundant/Deficient Number Function
unsigned long long int PADNumber (unsigned long long int Input) {

unsigned long long int Counter, Sum = 0;

for (Counter = 1; Counter < Input; Counter++) {
if (Input % Counter == 0) Sum += Counter;
}

if (Input < Sum) return 1;
else if (Input > Sum) return 2;
else return 0;
}

/**********************************************************************************/

// Friend Number Function
unsigned long long int FriendNumber (unsigned long long int Input) {

unsigned long long int Counter, Friend = 0, Check = 0;

for (Counter = 1; Counter < Input; Counter++) {
if (Input % Counter == 0) Friend += Counter;
}

for (Counter = 1; Counter < Friend; Counter++) {
if (Friend % Counter == 0) Check += Counter;
}

if (Input != Friend && Input == Check) return Friend;
else return 0;
}

/**********************************************************************************/

// Main Function
void main (void) {

unsigned long long int FibonacciNumber (unsigned long long int Input);
unsigned long long int FriendNumber (unsigned long long int Input);
unsigned long long int Input;
unsigned long long int OddEvenNumber (unsigned long long int Input);
unsigned long long int PADNumber (unsigned long long int Input);
unsigned long long int TriangularNumber (unsigned long long int Input);

printf ("Number to analyze: ");
scanf ("%llu", &Input);

puts ("\nResults:\n========");

printf ("\nFibonacci number: %llu.", FibonacciNumber(Input) );
printf ("\nFriend number (0 = NO): %llu.", FriendNumber(Input) );
printf ("\nOdd/Even number (0/1): %llu.", OddEvenNumber(Input) );
printf ("\nPerfect/Abundant/Deficient number (0/1/2): %llu.", PADNumber(Input) );
printf ("\nTriangular number: %llu.", TriangularNumber(Input) );

puts ("\n\nEnd of results.");
}
Τελευταία επεξεργασία από UnKnown96 και 01 Ιούλ 2012, 11:20, έχει επεξεργασθεί 3 φορά/ες συνολικά
Άβαταρ μέλους
UnKnown96
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 370
Εγγραφή: 08 Ιουν 2010, 15:23
Τοποθεσία: Ρόδος
Εκτύπωση

Re: Number Analyzer - C

Δημοσίευσηαπό UnKnown96 » 19 Αύγ 2011, 15:31

Πρωτείνετε και άλλα πράγματα που μπορεί να βγάλει ως αποτέλεσμα όπως και διορθώσεις στον κώδικα!
Άβαταρ μέλους
UnKnown96
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 370
Εγγραφή: 08 Ιουν 2010, 15:23
Τοποθεσία: Ρόδος
Εκτύπωση

Re: Number Analyzer - C

Δημοσίευσηαπό Garrus » 28 Αύγ 2011, 15:52

How about bits required to store represent the number?
1 Γνώσεις Linux: Ελπίζω τουλ. μέτρια ┃ Προγραμματισμού: Καλή ┃ Αγγλικών: Very best englands
2 Ubuntu 15.10 wily 64bit (en_US.UTF-8),
3 Intel Core i5-3210M CPU @ 2.50GHz ‖ RAM 3843 MiB ‖ SAMSUNG ELECTRONICS CO., LTD. NP350E5C-S03GR [...]
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) ⋮ [AMD/ATI] Thames [Radeon HD 7500M/7600M Series] [1002:6840] (rev ff)
5 enp2s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 09) ⋮ wlp3s0: Qualcomm Atheros AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Garrus
punkTUX
punkTUX
 
Δημοσιεύσεις: 179
Εγγραφή: 26 Ιαν 2011, 03:23
Εκτύπωση

Re: Number Analyzer - C

Δημοσίευσηαπό UnKnown96 » 28 Αύγ 2011, 16:41

When you say bits, you mean numbers of base 2?
Sorry, but i don't know mathematic words in english well xD
Άβαταρ μέλους
UnKnown96
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 370
Εγγραφή: 08 Ιουν 2010, 15:23
Τοποθεσία: Ρόδος
Εκτύπωση

Re: Number Analyzer - C

Δημοσίευσηαπό konnn » 28 Αύγ 2011, 17:11

Garrus έγραψε:How about bits required to store represent the number?

These are known.
Off topic:
Did I logged to ubuntuforums.org?
Γιατί δεν το γυρνάμε στο ελληνικό;
Τελευταία επεξεργασία από konnn και 29 Αύγ 2011, 14:46, έχει επεξεργασθεί 1 φορά/ες συνολικά
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Number Analyzer - C

Δημοσίευσηαπό UnKnown96 » 28 Αύγ 2011, 17:43

konnn έγραψε:
Garrus έγραψε:How about bits required to store represent the number?

These are known.
Off topic:
Did I logged to ubuntuforums.com?
Γιατί δεν το γυρνάμε στο ελληνικό;


Off topic:
Τι να του έλεγα του ανθρώπου;
Μπορεί να μην ξέρει ελληνικά, μην το κάνεις θέμα τώρα εξάλου για να βοηθείσει το είπε...
Άβαταρ μέλους
UnKnown96
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 370
Εγγραφή: 08 Ιουν 2010, 15:23
Τοποθεσία: Ρόδος
Εκτύπωση

Re: Number Analyzer - C

Δημοσίευσηαπό Garrus » 28 Αύγ 2011, 18:23

έγραψε:Did I logged to ubuntuforums.com?
Γιατί δεν το γυρνάμε στο ελληνικό;

Καλα ντε, ηρεμησε.Εκφραζομαι πιο ανετα στα εγγλεζικα.

Εννοουσα ποσα bits απαιτουνται για την αναπαρασταση του αριθμου. πχ
234234234 (dec) -> 1000111011110111000110 (bin) ,22 bits required

Και φυσικα μπορεις να συμπεριλαβεις και 8δικη , 16δικη αναπαρασταση, η ακομα και να ρωτας το χρηστη σε τι βασης συστημα ειναι ο αριθμος που εισαγει.
1 Γνώσεις Linux: Ελπίζω τουλ. μέτρια ┃ Προγραμματισμού: Καλή ┃ Αγγλικών: Very best englands
2 Ubuntu 15.10 wily 64bit (en_US.UTF-8),
3 Intel Core i5-3210M CPU @ 2.50GHz ‖ RAM 3843 MiB ‖ SAMSUNG ELECTRONICS CO., LTD. NP350E5C-S03GR [...]
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) ⋮ [AMD/ATI] Thames [Radeon HD 7500M/7600M Series] [1002:6840] (rev ff)
5 enp2s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 09) ⋮ wlp3s0: Qualcomm Atheros AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Garrus
punkTUX
punkTUX
 
Δημοσιεύσεις: 179
Εγγραφή: 26 Ιαν 2011, 03:23
Εκτύπωση

Re: Number Analyzer - C

Δημοσίευσηαπό konnn » 29 Αύγ 2011, 14:43

Τα δηφία ή αλλιώς bits έχουν συγκεκριμένο αριθμό σε συγκεκριμένους τύπους δεδομένων, εκτός αν εννοείς κάτι άλλο που δεν κατάλαβα.
Off topic:
Εντάξει δεν είπα και τίποτα για τα αγγλικά, μια ερώτηση έκανα,δεν είμαι και κανάς φαγοματίας...(στατιωτικοκαραβανάδικη λέξη )
1 Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Προχωρημένος
2 Desktop : Ubuntu 16.04 64bit
a Intel Core i3 CPU 530 2.93GHz ‖ RAM 3824 MiB ‖ Intel DH55HC -
b nVidia Device [10de:1040] (rev a1)
c eth0: Intel 82578DC Gigabit Network Connection
3 Notebook : Ubuntu 16.04 64 bit
a Intel Core i3-2365M CPU @ 1.40GHz ‖ RAM 3854 MiB ‖ LENOVO 20197
b Intel 2nd Generation Core Processor Family Integrated Graphics Controller
c 5 wlan0: Intel Centrino Wireless-N 2230 ⋮ eth0: Realtek RTL8101E/RTL8102E

Αυτόματη υπογραφή.
Άβαταρ μέλους
konnn
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 3568
Εγγραφή: 12 Ιούλ 2010, 17:54
Τοποθεσία: Καλαμάτα
Launchpad: konnn
Εκτύπωση

Re: Number Analyzer - C

Δημοσίευσηαπό migf1 » 29 Αύγ 2011, 15:43

Garrus έγραψε:How about bits required to store represent the number?

Αν δεν θέλουμε να δείχνουμε και την τιμή του κάθε bit, τότε το παραπάνω είναι πολύ απλό:
Κώδικας: Επιλογή όλων

int nbits( int n )
{
return 8 * sizeof( n );
}
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Number Analyzer - C

Δημοσίευσηαπό migf1 » 29 Αύγ 2011, 17:35

Έφτιαξα κι ένα μικρό προγραμματάκι που για έναν οποιοδήποτε ακέραιο n τυπώνει πόσα bits (και πόσα bytes) καταλαμβάνει στη μνήμη καθώς και τις τιμές των δυαδικών του ψηφίων (τα τυπώνει σε ομάδες των 8 bits΄= 1 byte).

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

#include <stdio.h>
#include <stdlib.h>

typedef int NType; // αλλάξτε το int με οποιοδήποτε άλλον ακέραιο τύπο (short, long, long long, char ... είτε signed είτε unsigned)

//-----------------------------------------------------------------------------------
void print_binary( NType n )
{
short nbytes = sizeof( n );
short nbits = 8 * nbytes;
register short i;

printf("%d binary digits (%d bytes)\n", nbits, nbytes);
for (i=nbits; i > 0; i-- ) {
if ( i != nbits && i%8 == 0)
putchar(' ');
printf("%c", n & (1 << i-1) ? '1' : '0');
}

return;
}
//-----------------------------------------------------------------------------------
int main( void )
{
NType n = 2; // αλλάξτε το με οποιαδήποτε 10-δική, 16-δική ή 8-δική τιμή (είτε θετική είτε αρνητική)

print_binary2( n );
putchar('\n');

return 0;
}
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Επόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι