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

προβλημα σε προγραμμα c


vellamos_power

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

Δημοσ.

καλησπερα παιδια.εχω καποια θεματα που εχω λυσει απο μια προοδο αλλα απο το πρωτο θεμα τα 2 πωτα ερωτηματα δεν μπορω να τα κανω. εχω σκαναρει τα θεματα

 

th_66581_programmatismos001_122_137lo.jpg

Δημοσ.

Εφόσον, όπως υπονοείς, έχεις λύσει το τρίτο και τέταρτο ερώτημα της πρώτης άσκησης, γιατί δε μας τα επισυνάπτεις για να μπούμε και πιο γρήγορα στο νόημα; Θεωρώ ότι το πρώτο και δεύτερο ερώτημα είναι κάτι αρκετά εύκολο για κάποιον που έχει λύσει το τέταρτο.

Δημοσ.

Κάτι τέτοιο για το πρώτο??

 

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

int main()
{
   int arithmoi[5][5],ar1=0,ar2=0,ar3=0,ar4=0,ar5=0,i,j;
   float mes1=0,mes2=0,mes3=0,mes4=0,mes5=0;
   srand(time(NULL));
   for (i=0;i<5;++i)
   {
       for (j=0;j<5;++j)
       {
           arithmoi[i][j] = rand() % 10 + 1;
       }
   }
   for (i=0;i<5;++i)
   {
       ar1 += arithmoi[0][i];
   }
    for (i=0;i<5;++i)
   {
       ar2 += arithmoi[1][i];
   }
    for (i=0;i<5;++i)
   {
       ar3 += arithmoi[2][i];
   }
    for (i=0;i<5;++i)
   {
       ar4 += arithmoi[3][i];
   }
    for (i=0;i<5;++i)
   {
       ar5 += arithmoi[4][i];
   }
}

Δημοσ.
Κάτι τέτοιο για το πρώτο??

 

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

int main()
{
   int arithmoi[5][5],ar1=0,ar2=0,ar3=0,ar4=0,ar5=0,i,j;
   float mes1=0,mes2=0,mes3=0,mes4=0,mes5=0;
   srand(time(NULL));
   for (i=0;i<5;++i)
   {
       for (j=0;j<5;++j)
       {
           arithmoi[i][j] = rand() % 10 + 1;
       }
   }
   for (i=0;i<5;++i)
   {
       ar1 += arithmoi[0][i];
   }
    for (i=0;i<5;++i)
   {
       ar2 += arithmoi[1][i];
   }
    for (i=0;i<5;++i)
   {
       ar3 += arithmoi[2][i];
   }
    for (i=0;i<5;++i)
   {
       ar4 += arithmoi[3][i];
   }
    for (i=0;i<5;++i)
   {
       ar5 += arithmoi[4][i];
   }
}

 

ευχαριστω πολυ. αυτο ειναι να σαι καλα

Δημοσ.

Υποτιμάς τη νοημοσύνη σου.

Σε οποιοδήποτε βιβλίο με τα στοιχειώδη μπορείς να βρεις παρόμοια πράγματα.

Να ένα παράδειγμα :

 

>#define N 5

int main()
{
int   mat[N][N], i,j, sum;
float mean;


for (i=0 ; i<N; ++i)
  for (j=0 ; j<N; ++j)
     mat[i][j]=i+j;


for (i=0 ; i<N; ++i)
{
  sum=0;
  for (j=0 ; j<N; ++j)
  sum +=mat[i][j];

  printf(" sum at row %d :   %d \n",i,sum);
}


for (j=0 ; j<N; ++j)
{
  sum=0;
  for (i=0 ; i<N; ++i)
  sum +=mat[i][j];

  mean= sum/((float) N);
  printf(" mean at column %d :   %f \n",i,mean);
}



for (i=0 ; i<N; ++i)
     mat[i][i]=0;


for (i=0 ; i<N; ++i)
{   for (j=0 ; j<N; ++j)
      printf(" %d ",mat[i][j]);
      printf(" \n");
}


return 0;

}

Δημοσ.
Υποτιμάς τη νοημοσύνη σου.

Σε οποιοδήποτε βιβλίο με τα στοιχειώδη μπορείς να βρεις παρόμοια πράγματα.

Να ένα παράδειγμα :

 

>#define N 5

int main()
{
int   mat[N][N], i,j, sum;
float mean;


for (i=0 ; i<N; ++i)
  for (j=0 ; j<N; ++j)
     mat[i][j]=i+j;


for (i=0 ; i<N; ++i)
{
  sum=0;
  for (j=0 ; j<N; ++j)
  sum +=mat[i][j];

  printf(" sum at row %d :   %d \n",i,sum);
}


for (j=0 ; j<N; ++j)
{
  sum=0;
  for (i=0 ; i<N; ++i)
  sum +=mat[i][j];

  mean= sum/((float) N);
  printf(" mean at column %d :   %f \n",i,mean);
}



for (i=0 ; i<N; ++i)
     mat[i][i]=0;


for (i=0 ; i<N; ++i)
{   for (j=0 ; j<N; ++j)
      printf(" %d ",mat[i][j]);
      printf(" \n");
}


return 0;

}

 

Γιατί νομίζω ότι το κάνεις πολύ μπερδεμένο χωρίς λόγο? Όχι τόσο μπερδεμένο, αλλά κάνεις κάποια πράματα χωρίς λόγο. Καταλαβαίνεις τι εννοώ? Βέβαια δεν έχω και αρκετή εμπειρία για να κρίνω αλλά σε κουβέντα να βρισκόμεθα... :P

Δημοσ.

>
for (j=0 ; j<N; ++j){
  for (sum=i=0 ; i<N; ++i)
     sum +=mat[i][j];
  mean= sum/((float) N);
  printf(" mean at column %d :   %f \n",i,mean);
}

 

αυτό θα άλλαζα μόνο για να φενεται καλύτερα το nester loop χωρίς highlighting ><

Δημοσ.
Είναι μια ενδεικτική απάντηση σε όλα τα ερωτήματα ένα προς ένα.

Πού βλέπεις το μπέρδεμα ;

Απλά βλέπω define σε κάτι που έχει ένα ψηφίο...
Δημοσ.
Απλά βλέπω define σε κάτι που έχει ένα ψηφίο...

 

Χρησιμοποιεί το #define ώστε να μή χρειάζεται να αλλάξει σε πολλά σημεία τον κώδικα (παρά μόνο σε ένα), αν αλλάξει το μέγεθος του πίνακα από 5Χ5 σε κάτι άλλο. Είναι μια σωστή επιλογή, καθώς έτσι αποφεύγονται οι magic numbers στο πρόγραμμα.

Δημοσ.
Χρησιμοποιεί το #define ώστε να μή χρειάζεται να αλλάξει σε πολλά σημεία τον κώδικα (παρά μόνο σε ένα), αν αλλάξει το μέγεθος του πίνακα από 5Χ5 σε κάτι άλλο. Είναι μια σωστή επιλογή, καθώς έτσι αποφεύγονται οι magic numbers στο πρόγραμμα.
Magic number?
Δημοσ.

 

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

 

Όλα αυτά τα αποφεύγεις με χρήση #define

 

EDIT: Χε, πρώτα απάντησα και μετά είδα το link. Με μπέρδεψε το ερωτηματικό στο τέλος.

Δημοσ.

εχω φτιαξει αυτο το προγραμμα και θελω να αντιστρεψω το δενδρο.για παραδειγμα αν βαλω το 5 τοτε αφηνει 4 κενα και ενα αστερακι.μετα 3 κενα 2 αστερακια και παει λεγοντας . αυτο που θελω να κανω ειναι να το αντιστρεψω. στην αρχη καθολου κενα και στο τελος 4 και 1 αστερακι

 

# include <stdio.h>

# include<stdlib.h>

void typos(int);

 

main()

{

 

int lines;

printf("Dwste enan arithmo:");

scanf("%d",& lines);

typos(lines);

 

system("PAUSE");

}

void typos(int lines)

{

int i,j;

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

{

 

for (j=1; j<=lines-i; j++)

{

printf(" ");

 

}

for (j=1; j<=2*i-1; j++)

printf("*");

printf("\n");

}

return;

}

 

---------- Προσθήκη στις 18:31 ---------- Προηγούμενο μήνυμα στις 17:46 ----------

 

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

#include<stdio.h>

#include<stdlib.h>

void ektupwsh (int);

main()

{

int x;

 

printf("Dwse enan akeraio arithmo:\n");

scanf("%d", &x);

 

printf("\n");

ektupwsh(x);

 

system("pause");

}

void ektupwsh (int a)

{

 

int st=0,sp=a-1, i, j, k;

 

for(i=a; i>0; i--)

{

for(j=a; j>sp; j--)

{

printf(" ");

}

for(k=a-1; k>st-a; k--)

{

printf("*");

}

sp=sp-1;

st=st+2;

printf("\n");

}

}

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

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

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