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

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

Δημοσ.

Στα 3 παράκατω παραδείγματα, παρατηρείται εσφαλμένη λειτουργία της scanf.

Όταν τρέχω ένα από τα 3 προγράμματα , το πρόγραμμα ζητάει μία ακόμη τιμή.

Παρ'όλα αυτά, το πρόγραμμα εκτελείται κανονικά και η επιπλέον τιμή που δίνεται, δεν παίζει ρόλο στο αποτέλεσμα του προγράμματος.

 

Μήπως θα μπορούσα να έχω μία ολοκληρωμένη απάντηση;

 

Παράδειγμα 1

 

#include <stdio.h>
int main()
{
    int SIZE;
    printf("dose to megethos tou pinaka SIZE\n");
    scanf("%d\n",&SIZE);

    int i,j,array[size-1][size-1];

    for(i=0;i<=SIZE-1;i++)
    {
      for(j=0;j<=i;j++)
      {
        if(j==0) array[j]=1;
        else if(i==j) array[j]=1;

        else
        {
          array[j]=array[i-1][j]+array[i-1][j-1];
        }
          printf("%3d",array[j]);
      }
        printf("\n");
    }
    return 0;
}

 

 

Παράδειγμα 2

 

#include <stdio.h>
int main()
{
   int num,i,j,N;
   printf("dose ton arithmo ton stoixeion N\n");
   scanf("%d",&N);
   int array[N];
   printf("dose ta stoixeia\n");

   for(i=0;i<=N-1;i++)
   {
     scanf("%d\n",&num);
     array=num;
   }
   int temp;
   for(i=0;i<=N-1;i++)
    {
     temp=array;
     j=i;
     while((j>0)&&(array[j-1]>temp))
     {
      array[j]=array[j-1];
      j--;
     }
     array[j]=temp;
    }
   for(i=0;i<=N-1;i++)
   {
     printf("%d\n",array);
   }
   return 0;
}
 

Παράδειγμα 3

 

 

#include <stdio.h>
#define size 7
int main()
{
  int i,x,arr,pin[size-1];
  printf("dwse times\n");
  for(i=0;i<=6;i++)
  {
    scanf("%d\n",&x);
    arr=x;
  }
  for(i=1;i<=6;i++)
  {
    pin[i-1]=arr*i;
  }
  for(i=0;i<=5;i++)
  {
    printf("%d\n",pin);
  }
return 0;
}
 

 

Δημοσ.

φιλε με ποιο προγραμμα τρεχεις τον κοδικα??

αν το τρεχεις με visual studio 2013 να ξες οτι την scanf πρεπει να την βαλεις scanf_s

Δημοσ.

Μία πιο ολοκληρωμένη απάντηση...

 

Λοιπόν, το πρόβλημα βρίσκεται στην scanf("%d\n", &x) και στην scanf("%d\n", &SIZE) και συγκεκριμένα στο \n όπως είπε και ο pitogiro.

 

Η scanf έτσι όπως την έγραψες περιμένει 2 πράγματα από το χρήστη σαν είσοδο με τη σειρά που θα τα γράψω:

  1. έναν ακέραιο
  2. ένα newline

Αφού λοιπόν εισάγεις τον ακέραιο και πατήσεις enter, τότε περιμένει από εσένα να εισάγεις κι ένα newline πριν

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

Άρα αν αφαιρέσεις το \n από τη scanf, τότε θα δουλέψει όπως περιμένεις.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...