Γλώσσα C πρόβλημα με την for

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

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

Απάντηση
diamadiss
Δημοσιεύσεις: 28
Εγγραφή: 16 Μάιος 2008 21:52

Γλώσσα C πρόβλημα με την for

Δημοσίευση από diamadiss » 16 Μάιος 2008 22:02

Θα ήθελα να φτιάξω ενα πρόγραμμα σε C που να που υπολογίζει το γινόμενο 1*(-2)*3*(-4)* μέχρι τον 10ο όρο και να το εκτυπώνει, με την χρήση της for. Το κάνω ετσι αλλα δεν λειτουργεί.


#include <stdio.h>
main ()
{
int sum,k,i,;
sum=0;
for(i=1;i<10;i-2)
sum=sum*k;
printf("%d\n",sum);
}
Τελευταία επεξεργασία από το μέλος diamadiss την 17 Μάιος 2008 14:05, έχει επεξεργασθεί 2 φορές συνολικά.

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

Γλώσσα C πρόβλημα με την for

Δημοσίευση από dva_dev » 16 Μάιος 2008 23:11

Το A[10] και το k τι κάνουν;
Τι κάνουν το sum και το i;

diamadiss
Δημοσιεύσεις: 28
Εγγραφή: 16 Μάιος 2008 21:52

Γλώσσα C πρόβλημα με την for

Δημοσίευση από diamadiss » 17 Μάιος 2008 14:04

Sygnomi alla ekana lathos kai egrapsa kati allo pou ithela na kano. Oso gia to sum to xrisimopoio gia na vgalo to athroisma tou ginomenou oste na to ektipose meta me printf. Thanks!

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1947
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

Γλώσσα C πρόβλημα με την for

Δημοσίευση από Alice_Cooper » 19 Μάιος 2008 19:48

logika afto sou kanei

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

#include <stdio.h>
main &#40;&#41;
&#123;
int sum,i,n;
sum=1;
for &#40; n=1, i=-2 ; n<i+20 ; n=n+2, i=i-2 &#41;
&#123;
sum=sum*n*i;
if &#40;n!=1&#41; printf &#40;"*"&#41;;
printf&#40;"%d*&#40;%d&#41;",n,i&#41;;
&#125;
printf&#40;"=%d\n",sum&#41;;
&#125;

diamadiss
Δημοσιεύσεις: 28
Εγγραφή: 16 Μάιος 2008 21:52

Γλώσσα C πρόβλημα με την for

Δημοσίευση από diamadiss » 19 Μάιος 2008 22:20

Nai mou kanei auto se euxaristo para poly gia tin voithia. :P

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

Γλώσσα C πρόβλημα με την for

Δημοσίευση από dva_dev » 20 Μάιος 2008 16:16

Alice_Cooper++
Πολύ πρωτότυπη υλοποίηση! Δεν την έχω ξαναπετύχει πουθενά!
:respect:

Μια πιο τετριμένη λύση, θα μπορούσε να δωθεί ως εξής: Το (2 σε 1) loop θα μπορούσε να σπάσει σε 2 ξεχωριστά loops όπου το ένα θα υπολογίζει το γινόμενο των θετικών, και το άλλο το γινόμενο των αρνητικών, όπως είχε ξεκινήσει να το φτιάχνει και ο diamadiss δηλαδή. [edit](πριν αλλάξει τον κώδικα του)[/edit]

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

int f1&#40;const int N = 10&#41;
&#123;
	int i, product = 1;

	for &#40; i=1; i<=N; i += 2 &#41;
		product = product * i;

	for &#40; i=-2; i>=-N; i -= 2 &#41;
		product = product * i;

	return product;
&#125;
Αν το παιδέψει κάποιος ακόμα περισσότερο, αυτά θα μπορούσαν να μπούν σε 2 ξεχωριστά threads που το καθένα θα υπολογίζει τα γινόμενα των θετικών/αρνητικών, και το main thread, θα κάνει μόνο τον τελικό πολλαπλασιασμό των επιμέρους γινομένων.

ή

για όσους έχουν πιο λιτά γούστα, θα μπορούσε να υλοποιηθεί με ένα loop που απλώς αλλάζει το πρόσημο του κάθε όρου του γινομένου. [edit](περίπου όπως έχει τον κώδικα του ο diamadiss μετά την αλλαγή)[/edit]

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

int f2&#40;const int N = 10&#41;
&#123;
	int i;
	int sign = -1;
	int product = 1;

	for &#40; i=1; i<=N; i++ &#41;
	&#123;
		sign = - sign;  // +1, -1, +1, -1, ...
		product = product * &#40;sign * i&#41;;
	&#125;

	return product; 
&#125;

diamadiss
Δημοσιεύσεις: 28
Εγγραφή: 16 Μάιος 2008 21:52

Γλώσσα C πρόβλημα με την for

Δημοσίευση από diamadiss » 27 Νοέμ 2008 13:10

Ευχαριστώ!

Απάντηση

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

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

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