Προς το περιεχόμενο

c++,rand


Spimelo

Προτεινόμενες αναρτήσεις

Δημοσ.

Λοιπον,

έχω ένα πρόγραμμα που υπολογίζει μερικά αθροίσματα..Χρησιμοποιώ 2 πίνακες και 2 διαφορετικούς τρόπους υπολογισμου.

Όλα καλά όσο οι θέσεις του πίνακα είναι 10 και μάλιστα η ακολουθία 1,2,3,4,5,6,7,8,9,10

ΟΜΩΣ

θέλω τα ίδια αθροίσματα να υπολογίζονται και για τυχαιους αριθμούς (τουλ.3000)

και κάπου εδώ αρχίζει το πρόβλημα:

-Δεν εμφανίζει στην οθόνη την printf που έβαλα για να εμφανίσει τους αριθμούς,ουτε κάποια αλλα σχόλια..

παει κατευθείαν και εμφανίζει απο το 5ο μερικό άθροισμα...

 

Ξέρει κανείς τίποτα?Κάποια εντολή που πρέπει να παρεμβάλλω?

Δημοσ.

Λοιπον,

έχω ένα πρόγραμμα που υπολογίζει μερικά αθροίσματα..Χρησιμοποιώ 2 πίνακες και 2 διαφορετικούς τρόπους υπολογισμου.

Όλα καλά όσο οι θέσεις του πίνακα είναι 10 και μάλιστα η ακολουθία 1,2,3,4,5,6,7,8,9,10

ΟΜΩΣ

θέλω τα ίδια αθροίσματα να υπολογίζονται και για τυχαιους αριθμούς (τουλ.3000)

και κάπου εδώ αρχίζει το πρόβλημα:

-Δεν εμφανίζει στην οθόνη την printf που έβαλα για να εμφανίσει τους αριθμούς,ουτε κάποια αλλα σχόλια..

παει κατευθείαν και εμφανίζει απο το 5ο μερικό άθροισμα...

 

Ξέρει κανείς τίποτα?Κάποια εντολή που πρέπει να παρεμβάλλω?

 

 

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

Δημοσ.

Ναι έχεις δίκαιο..είπα μήπως είναι θέμα κάποιας εντολής οπως η break..ο κώδικας χωρίς rand(λειτουργεί σωστα):

 

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <dos.h>

#include <assert.h>

 

#define No_Rows 10

 

 

//==============================================================================

 

int sum1(int *S,int *P,int rows); /*DHLWSH SYNARTHSEWN*/

int sum2(int *S,int *P,int rows);

 

//==============================================================================

 

main(void)

{

int *S,*P; /*DHLWSH PINAKWN*/

int i,n;

int sumi1,sumi2; /*metablites gia na kalesw synartiseis*/

P=(int *)malloc(No_Rows*sizeof(int));

assert(P!=NULL);

S=(int *)malloc(No_Rows*sizeof(int));

assert(S!=NULL);

printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

printf(" PROGRAMMA YPOLOGISMOY MERIKOY A8ROISMATOS ME 2 TROPOUS");

printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

printf("\n\nAKOLOU8IA ARI8MWN: ");

for(i=0;i<No_Rows;i++)

{

P=i+1;

printf("%d,",P);

}

printf("\nPINAKES: S,P");

sumi1=sum1(S,P,No_Rows); /*KLHSH SYNARTHSHS*/

sumi2=sum2(S,P,No_Rows);

printf("\n\n1os Tropos! \t\t\t\t2os TROPOS!\n[Xrisimopoiontas typo a8roismatos]\t[Apo typo S=S[i-1]+P]\n");

 

for(n=0;n<No_Rows;n++) /*EMFANISH APOTELESMATWN */

printf("\nTo %d meriko a8roisma einai: %d\t\tTo %d meriko a8roisma einai: %d ",n+1,S[n],n+1,S[n]);

printf("\n\n");

printf(" PLH8OS PRA3EWN: %d\t\t\t PLH8OS PRA3EWN: %d",sumi1,sumi2);

printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

 

free(S);

free(P);

system("pause");

getch();

}

 

//==============================================================================

 

int sum1(int *S,int *P,int rows) /*ORISMOS SYNARTHSEWN*/

{

int i,n;

int adds=0;

for(n=0;n<rows;n++)/*YPOLOGISMOS MERIKOY A8ROISMATOS ME 1o TROPO*/

{

S[n]=P[0];

for(i=1;i<n+1;i++) /*n+1 giati 1h & 2h epanalipsi, idies*/

{ /*kai auto giati gia n=0,i sun8iki*/

S[n]=S[n]+P; /*tis for den isxuei: i=1,i=1<0*/

adds++;

} //STHN OUSIA GINETAI MIA ASKOPI EKTLESH,LOGO

} //KAKHS XRHSHS THS DHLOSHS S[0]=P[0]=1

return adds; //STHN 1h EPANALIPSI

}

//==============================================================================

 

 

int sum2(int *S,int *P,int rows)

{

int i;

int adds=0;

P[0]=1; /*auti i dilwsi mpike giati epestrefe oti na nai noumera*/

S[0]=P[0]; /*YPOLOGISMOYS MERIKOY A8ROISMATOS ME 2o TROPO*/

for(i=1;i<rows;i++)

{

S=S[i-1]+P;

adds++;

}

return adds;

}

//==============================================================================

 

Με την rand:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <dos.h>

#include <assert.h>

#include <time.h>

 

#define No_Rows 300

 

 

//==============================================================================

int randomtime();

int sum1(int *S,int *P,int rows); /*DHLWSH SYNARTHSEWN*/

int sum2(int *S,int *P,int rows);

 

//==============================================================================

 

main(void)

{

int *S,*P; /*DHLWSH PINAKWN*/

int i,n;

int sumi1,sumi2; /*metablites gia na kalesw synartiseis*/

P=(int *)malloc(No_Rows*sizeof(int));

assert(P!=NULL);

S=(int *)malloc(No_Rows*sizeof(int));

assert(S!=NULL);

printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

printf(" PROGRAMMA YPOLOGISMOY MERIKOY A8ROISMATOS ME 2 TROPOUS");

printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

printf("\n\nAKOLOU8IA ARI8MWN: ");

P=randomtime();

printf("\nPINAKES: S,P");

 

 

 

 

 

sumi1=sum1(S,P,No_Rows); /*KLHSH SYNARTHSHS*/

sumi2=sum2(S,P,No_Rows);

printf("\n\n1os Tropos! \t\t\t\t2os TROPOS!\n[Xrisimopoiontas typo a8roismatos]\t[Apo typo S=S[i-1]+P]\n");

 

for(n=0;n<No_Rows;n++) /*EMFANISH APOTELESMATWN*/

printf("\nTo %d meriko a8roisma einai: %1d | To %d meriko a8roisma einai: %1d ",n+1,S[n],n+1,S[n]);

printf("\n\n");

printf(" PLH8OS PRA3EWN: %d\t\t\t PLH8OS PRA3EWN: %d",sumi1,sumi2);

printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

 

free(S);

free(P);

system("pause");

getch();

}

 

//==============================================================================

 

int sum1(int *S,int *P,int rows) /*ORISMOS SYNARTHSEWN*/

{

int i,n;

int adds=0;

for(n=0;n<rows;n++)/*YPOLOGISMOS MERIKOY A8ROISMATOS ME 1o TROPO*/

{

S[n]=P[0];

for(i=1;i<n+1;i++) /*n+1 giati 1h & 2h epanalipsi, idies*/

{ /*kai auto giati gia n=0,i sun8iki*/

S[n]=S[n]+P; /*tis for den isxuei: i=1,i=1<0*/

adds++;

} //STHN OUSIA GINETAI MIA ASKOPI EKTLESH,LOGO

} //KAKHS XRHSHS THS DHLOSHS S[0]=P[0]=1

return adds; //STHN 1h EPANALIPSI

}

//==============================================================================

 

 

int sum2(int *S,int *P,int rows)

{

int i;

int adds=0;

P[0]=1; /*auti i dilwsi mpike giati epestrefe oti na nai noumera*/

S[0]=P[0]; /*YPOLOGISMOYS MERIKOY A8ROISMATOS ME 2o TROPO*/

for(i=1;i<rows;i++)

{

S=S[i-1]+P;

adds++;

}

return adds;

}

//==============================================================================

 

int randomtime()

{

int i;

srand(97);

for(i=0;i<No_Rows;i++)

{

printf("%d,",rand()%14);

break;

}

 

return rand();

}

Δημοσ.

νομίζω ότι πρέπει να το γράψεις με τις πιο κάτω αλλαγές

 

>
.............
#define No_Rows 300


//==============================================================================
void randomtime(int*,int);
...............
printf("\n\nAKOLOU8IA ARI8MWN: ");
   randomtime(P,No_Rows);
   getchar();
..........
void  randomtime(int * P,int size){
   int i;
   srand(time(NULL));//97);
   for(i=0;i<size;i++){
       P[i]=rand()%14;
       printf("%d,",P[i]);
       //break;
   }
   //return rand();
}

Δημοσ.

Αχα..δουλεύει αυτο!!

Η getchar την εκανε τη δουλεια?ή η συναρτηση με τα ορισματα?Δεν καταλαβαίνω..

Αλλα οποιαδηποτε printf κατω απο την κληση της randomtime παλι δεν την εμφανιζει..και αντε πες τις βαζω ολες πιο πανω,αλλα γιατι????

 

Με την εκτέλεση,εμφανιζει τα μηνύματα που θέλω και την ακολουθια..οταν πατησω enter και εκτελούνται τα παρακάτω,πάλι εμφανίζει απο το 5ο μερικό αθροισμα και οχι απ το πρώτο (δεν ειναι οι πρώτοι τυχαίοι αριθμοί 0)

Τι εχεις να πείς για αυτό? :)

Δημοσ.

/edit

 

Δοκίμασε αυτό:

 

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

#define No_Rows 100


//==============================================================================
void randomtime(int* P, int size);
int sum1(int *S,int *P,int rows);
int sum2(int *S,int *P,int rows);

//==============================================================================

main(void)
{
   int *S1, *S2,*P; 
   int i,n;
   int sumi1,sumi2;

   P=(int *)malloc(No_Rows*sizeof(int));
   assert(P!=NULL);
   S1=(int *)malloc(No_Rows*sizeof(int));
   assert(S1!=NULL);
   S2=(int *)malloc(No_Rows*sizeof(int));
   assert(S2!=NULL);

   printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
   printf(" PROGRAMMA YPOLOGISMOY MERIKOY A8ROISMATOS ME 2 TROPOUS");
   printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
   printf("\n\nAKOLOU8IA ARI8MWN: ");

   randomtime(P,No_Rows);

   printf("\nPINAKES: S,P");

   sumi1=sum1(S1,P,No_Rows);
   sumi2=sum2(S2,P,No_Rows);

   printf("\n\n1os Tropos! \t\t\t\t2os TROPOS!\n[Xrisimopoiontas typo a8roismatos]\t[Apo typo S[i]=S[i-1]+P[i]]\n");

   for(n=0;n<No_Rows;n++) { /*EMFANISH APOTELESMATWN*/
       printf("\nTo %d meriko a8roisma einai: %1d | To %d meriko a8roisma einai: %1d ",n+1,S1[n],n+1,S2[n]);
       printf("\n\n");
   }

   printf(" PLH8OS PRA3EWN: %d\t\t\t PLH8OS PRA3EWN: %d",sumi1,sumi2);
   printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

   free(S1);
   free(S2);
   free(P);
   system("pause");
   getchar();
}

//==============================================================================

int sum1(int *S,int *P,int rows){
   int i,n;
   int adds=0;
   for(n = 0; n < rows; n++)
   {
       S[n]=P[0];
       for(i=1;i<n+1;i++)
       {
           S[n] += P[i];
           adds++;
       }
   }
   return adds;
}
//==============================================================================


int sum2(int *S,int *P,int rows){
   int i;
   int adds=0;
   S[0]=P[0];
   for(i=1;i<rows;i++)
   {
       S[i] = S[i-1] + P[i];
       printf("\n %d ", S[i]);
       adds++;
   }
   return adds;
}
//==============================================================================

void randomtime(int* P, int size){
   int i;
   srand(97);
   for(i=0; i < size; i++)
   {
       P[i] = rand()%14;
   }
}

Δημοσ.

Ούτε αυτό πέτυχε..ευχαριστώ για τη βοήθεια όπως και να χει!

Οταν μάθω τι φταίει,θα σας ειδοποιήσω! :)

Δημοσ.

Αχα..δουλεύει αυτο!!

Η getchar την εκανε τη δουλεια?ή η συναρτηση με τα ορισματα?Δεν καταλαβαίνω..

Αλλα οποιαδηποτε printf κατω απο την κληση της randomtime παλι δεν την εμφανιζει..και αντε πες τις βαζω ολες πιο πανω,αλλα γιατι????

 

Με την εκτέλεση,εμφανιζει τα μηνύματα που θέλω και την ακολουθια..οταν πατησω enter και εκτελούνται τα παρακάτω,πάλι εμφανίζει απο το 5ο μερικό αθροισμα και οχι απ το πρώτο (δεν ειναι οι πρώτοι τυχαίοι αριθμοί 0)

Τι εχεις να πείς για αυτό? :)

 

1) το παράθυρο δεν κρατάει τα πάντα που τυπώνεις αλλά ένα μέρος αυτών

για να τα δεις όλα πρέπει να σταματάς την εκτέλεση του προγράμματος π.χ. έτσι

>
.........
   printf("\n\n1os Tropos! \t\t\t\t2os TROPOS!\n[Xrisimopoiontas typo a8roismatos]\t[Apo typo S[i]=S[i-1]+P[i]]\n");
   for(n=0;n<No_Rows;n++){ /*EMFANISH APOTELESMATWN*/
       printf("\nTo %d meriko a8roisma einai: %1d | To %d meriko a8roisma einai: %1d ",n+1,S[n],n+1,S[n]);
       if (n%20==0 && n>19) system("pause");
   }
...........

Δημοσ.

Ούτε αυτό πέτυχε..ευχαριστώ για τη βοήθεια όπως και να χει!

Οταν μάθω τι φταίει,θα σας ειδοποιήσω! :)

 

 

Όταν λες δεν πέτυχε; Το έτρεξα και μου φαίνεται ΟΚ. Τι ακριβώς δεν λειτουργεί... εάν είναι να το παρατηρήσω και εγώ στο δικό μου μηχάνημα... μήπως είναι κάτι άλλο... (λέω μήπως :P ).

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...