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

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

Δημοσ.

Καλησπέρα.Θα ήθελα να με βοηθήσετε και να μου δώσετε τα φώτα σας στην άσκηση αυτή.Η εκφώνηση της άσκησης είναι επισυναπτόμενη σε μορφή pdf.Θα εκτιμούσα ιδιαιτέρως αν με βοηθήσετε στην επίλυση της το συντομότερο δυνατό.Επίσης σας παραθέτω και ένα κομμάτι κώδικα για να δείτε στο σημείο στο οποίο βρίσκομαι.Ευχαριστώ εκ των προτέρων και ελπίζω μέσα από τις συζητήσεις και ανταλλαγή ιδεών να φτάσουμε στην τελική λύση.

 

[code/]

#include<stdio.h>
int main(void)
{
int i,ch,flag_diesi=1,flag_eis=0,;
ch=getchar();
while(ch!=EOF)
{
 
  
   
  if (ch == '#') 
  {
 flag_diesi=1;
     while( ch!= '\n')
     {
       putchar(ch);
       ch=getchar();
     }
  } 
             
  else 
  {
   while( ch!= ';' || flag_eis==1)
   {
  
  
   
             
          if(ch == '"')
          {
          if (flag_eis==0)
           flag_eis=1;
          else
           flag_eis=0;
          }
 
          if (ch == '{' && flag_eis==0)
          putchar(ch);
          else
          {
  
          printf("\n");
          for(i=0;i<=metr;i++)
          metr++;
                   printf("\t");
                   }
             
               
          if (ch == '}'&& flag_eis==0 )
          putchar(ch);
          else
          {
  
          printf("\n");
          metr--;
          for(i=0;i<=metr;i++)
          {
          printf("\t");
          }
  putchar(ch);
      }
      
       } 
        
      
  }
  ch=getchar();
    }
    return 0;
}
 

 

iphw1415_2.pdf

iphw1415_2.pdf

Δημοσ.

χαχα μπα δεν νομίζω....Κοίτα δεν απαιτώ ατόφια την λύση,εξάλου βλέπεις πως έχω προσπαθήσει..απλά θέλω να την συζητήσω για να προχωρήσω γιατί όπως βλέπεις έχω κολλήσει..Πρωτοετής και εσύ ή μεγαλύτερο έτος?;p

Δημοσ.

διδακτορικος :ph34r:  :ph34r:

 

Χωρις πλακα προσπαθησε την περισσοτερο μονος σου . Μονο ετσι θα μαθεις και αμα ζορισει η κατασταση βλεπεις.

Δημοσ.

Μπράβο ρε φίλε!Οπότε η άσκηση παίζει να σου φαίνεται αστεία έτσι?Τι θα έλεγες να μου δώσεις μια βοήθεια?:P


Έχει ζορίσει αρκετά..Η προθεσμία είναι μέχρι την παρασκευή και δεν αντέχω άλλο να σπάω το κεφάλι μου..Η προηγούμενη άσκηση(αν θυμάσαι με τους πρώτους αριθμούς είχε μια βάση,ένα μαθηματικό θεώρημα...αυτή τίποτα.....)Και συμφωνώ ότι με το παίδεμα και τη συνεχή ενασχόληση μαθαίνεις προγραμματισμό αλλά τώρα έχει ξεφύγει από τα λογικά πλαίσια:P

Δημοσ.

πλακα κανω. Ρε συ δεν ειμαι καν στην σχολη μας πια. ειμαι αλλου . Ημουν φοιτητης πριν αρκετα χρονια. Αν βρω χρονο θα την κοιταξω αυριο (απλα μην νομιζεις οτι χρονος περισσευει)

Δημοσ.

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

Δημοσ.

http://www.insomnia.gr/topic/549780-%CE%B1%CF%83%CE%BA%CE%B7%CF%83%CE%B7-c/
οπως λεει στο #7
 

#define FLAG_PRINT			( 1 << 0 )
#define FLAG_NEWLINE		( 1 << 1 )
#define FLAG_TABS			( 1 << 2 )

void print_tabs(int count)
{
	int i;
	for(i = 0; i < count; i++)
		putchar('\t');
}

int main()
{
	int ch;
	int fflags = 0;
	int lflags = 0;
	int tab = 0;
	while ( (ch = getchar()) != EOF )
	{
		//////////////// flag setting
		switch(ch)
		{
		case ';':
			fflags |= FLAG_PRINT;
			lflags |= FLAG_NEWLINE | FLAG_TABS;
			break;
		case '{':
			fflags |= 0 ;
			lflags |= FLAG_NEWLINE | FLAG_TABS | FLAG_PRINT;
			tab++;

			break;
		case '}':
			fflags |= FLAG_NEWLINE | FLAG_TABS;
			lflags |= FLAG_NEWLINE | FLAG_TABS | FLAG_PRINT;
			tab--;
			break;
		case ' ':
			fflags |= FLAG_PRINT;
			break;
		default:
			if(!isspace(ch))
				fflags |= FLAG_PRINT;
		}
		////////////////////////////////////////

		/// first order flags
		if(fflags & FLAG_PRINT)
			putchar(ch);
		if(fflags & FLAG_NEWLINE)
			putchar('\n');
		if(fflags & FLAG_TABS)
			print_tabs(tab);

		// last order flags
		if(lflags & FLAG_PRINT)
			putchar(ch);
		if(lflags & FLAG_NEWLINE)
			putchar('\n');
		if(lflags & FLAG_TABS)
			print_tabs(tab);

		//reset
		fflags = 0;
		lflags = 0;
	}
	
	return 0;
}

Εχω δυο set απο flags, τα οποια κανουν το ιδιο πραμα, με την διαφορα οτι πρωτα θα εκτελεστουν τα πρωτα, και δευτερα τα δευτερα.

 

πχ, οταν βλεπω ; λεω στο μηχανημα, πρωτα εκτυπωσε το ch, μετα βαλε newline και tabs. Το αποτελεσμα

int test(x){if(x){print("true");}else{print("false");}return 0;}^Z
int test(x){
        if(x){
                print("true");

        }
        else{
                print("false");

        }
        return 0;

}
→
  • Like 3
Δημοσ.

MetaXaS4 θύμισε μου λίγο πως φτιάχνω τα code tags..

Παπι αυτό το κομμάτι κώδικα καλύπτει κάθε περίπτωση?Δεν έχω καταλάβει 1ον τι σημαίνει αυτό ( 1 << 2 ) και 2ον τι σημαίνει η εντολή που περιέχει =| όπως  αυτό lflags |= FLAG_NEWLINE | FLAG_TABS | FLAG_PRINT;

Sorry για τις πολλές ερωτήσεις αλλά τώρα μαθαίνω σιγά σιγά και μπαίνω στο κλίμα..Ευχαριστώ πολύ

Δημοσ.

ο γούγλης είναι φίλος σου...

άλλο =| (δεν ξέρω αν υπάρχει τέτοιος operator) και άλλο |=
http://en.wikipedia.org/wiki/Bitwise_operations_in_C#Bitwise_operators

αν δεις λίγο τους bitwise operator θα καταλάβεις τι είναι το 1<<2 και το |= όπως και το | μόνο του.

 

[code ]

[/code ]

 

χωρίς τα κενά

Δημοσ.

Ναι η αλήθεια είναι ότι βιάστηκα να απαντήσω,με ένα απλό search το βρήκα πριν μου στείλεις;p

Btw ο κώδικας που έχω υλοποιήσει μέχρι τώρα είναι ο παρακάτω:

 

 

#include<stdio.h>
int main(void)
{
int i,ch,flag_diesi=1,flag_eis=0,;
ch=getchar();
while(ch!=EOF)
{
 
  
   
  if (ch == '#') 
  {
 flag_diesi=1;
     while( ch!= '\n')
     {
       putchar(ch);
       ch=getchar();
     }
  } 
             
  else 
  {
   while( ch!= ';' || flag_eis==1)
   {
  
  
   
             
          if(ch == '"')
          {
          if (flag_eis==0)
           flag_eis=1;
          else
           flag_eis=0;
          }
 
          if (ch == '{' && flag_eis==0)
          putchar(ch);
          else
          {
  
          printf("\n");
          for(i=0;i<=metr;i++)
          metr++;
                   printf("\t");
                   }
             
               
          if (ch == '}'&& flag_eis==0 )
          putchar(ch);
          else
          {
  
          printf("\n");
          metr--;
          for(i=0;i<=metr;i++)
          {
          printf("\t");
          }
  putchar(ch);
      }
      
       } 
        
      
  }
  ch=getchar();
    }
    return 0;
}

Το θέμα είναι να συνεχίσω με αυτό που έχω κάνει μέχρι τώρα ή να ακολουθήσω το σκεπτικό του παπι?

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

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

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

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

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

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

Σύνδεση

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

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