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

askisi stin c


spiner

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

Δημοσ.

οκ, τι βοηθεια θες, εχεις καταλαβει το παιχνιδι πως παιζεται;

Σου λεει πως θα αναπαραστησεις το πινακα του παιχνιδιου (προφανως με int array[9][9], πχ αν array[2][5]==4, θα σημαινει οτι στην 3η γραμμη και 5η στηλη ειναι ο αριθμος 4. Για τις θεσεις που δεν εχει μπει ακομα αριθμος μπορεις να βαλεις πχ -1 ή κατι άλλο εκτος 0..9 )

Σου λεει πως θα οριζει κινησεις ο χρηστης, θα γραφει εντολες της μορφης (γραμμη, στηλη)=αριθμος. Αυτο μεσα στο προγραμμα θα μεταφραζεται ως array[γραμμη-1][στηλη-1] = αριθμος επειδη η αριθμηση των γραμμων και των στηλων στη C ξεκινα απο το 0 ενω ο χρηστης θα δίνει 1 για την πρωτη, 2 για την 2η κτλ.

Πριν βαλεις τον αριθμο πρεπει να τσεκαρεις:

1) η θεση να ειναι αδεια δηλ array[γραμμη-1][στηλη-1]==-1

2) ολες οι θεσεις στην ιδια γραμμη να μην εχουν ηδη τον αριθμο που πας να βαλεις, αρα κανεις ενα λουπ για καθε μια απο τις θεσεις array[γραμμη-1][0..9] να ειναι != αριθμος

3) το ιδιο με το 2 αλλα για την ιδια στηλη, δηλ για τις array[0..9][στηλη-1] να ειναι != αριθμος

4)λιγο πιο ζορικο τωρα, ελεγχος για το υποτετραγωνο στο οποιο ανηκει η θεση. Πρεπει να βρεις σε ποιο υποτετραγωνο βρισκεται, πχ για το array[2][5] πρεπει να τσεκαρεις τις θεσεις που βρισκονται στις 3 πρωτες γραμμες και μεταξυ της 4ης και 6ης στηλης

 

Εεε, χονδρικα αυτα, αν θες να ρωτησεις κατι συγκεκριμενο, εδω ειμαστε

Δημοσ.

ksereis ti ithela na rotiso, pos tha kano ton elegxo gia to oti o xristis prepei na dinei se poia tetragona kai poion arithmo na valei me aftin tin morfi: (x,y)=z;

 

 

Efxaristo gia tin voithia sou

Δημοσ.

για δες εδω, η get_user_input διαβαζει απο τη κονσολα χαρακτηρα-χαρακτηρα και ελεγχει αν το ινπουτ πληρει τις προΥποθεσεις. Αν ναι τοτε καταχωρει τις τιμες στο row, col και value ( o χρηστης βαζει input της μορφης (row,col)=value

 

>
bool get_user_input(int* row,int *col,int *value)
{
int c,pos=0;

while((c=getchar())!=EOF)
{
	switch(pos++)
	{
	case 0:
		if(c!='(') return false;
		break;
	case 1:
		if( c>='0'&& c<='9' )
			*row = c-48;
		else
			return false;
		break;
	case 2:
		if(c!=',') return false;
	    break;
	case 3:
		if( c>='0'&& c<='9' )
			*col = c-48;
		else
			return false;
	    break;
	case 4:
		if(c!=')') return false;
		break;
	case 5:
		if(c!='=') return false;
		break;
		break;
	case 6:
		if( c>='0'&& c<='9' )
			*value = c-48;
		else
			return false;
	    break;
	case 7:
		return true;
	}

       }
return true;
}

 

 

για να την χρησιμοποιησεις:

 

>
int main(int argc, char* argv[])
{
int row,col,val;

if ( get_user_input( &row, &col, &val)  )
	printf("row=%d, col=%d, val=%d\n",row,col,val); 
else
	printf( "usage: (col,row)=val\n" );

return 0;
}

Δημοσ.

Η προηγούμενη έκδοση ελαφρώς βελτιωμένη:

 

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

/* flush to end of line 
  return EOF upon EOF, 0 upon end-of-line*/
int flushln(int c)
{
  int ch;
  if (c=='\n') return 0;
  while ('\n' != (ch = getchar()) && (EOF != ch));
  return ch==EOF?EOF:0;
}

int get_user_input(int* row,int *col,int *value)
{
int c,pos=0;

while((c=getchar())!=EOF)
{
	switch(pos++)
	{
	case 0:
		if(c!='(') 
                          return flushln(c);
		break;
	case 1:
		if( c>='0'&& c<='9' )
			*row = c-'0';
		else
			return flushln(c);
		break;
	case 2:
		if(c!=',') return flushln(c);
	        break;
	case 3:
		if( c>='0'&& c<='9' )
			*col = c-'0';
		else
			return flushln(c);
	    break;
	case 4:
		if(c!=')') return flushln(c);
		break;
	case 5:
		if(c!='=') return flushln(c);
		break;
	case 6:
		if( c>='0'&& c<='9' )
			*value = c-'0';
		else
			return flushln(c);
	    break;
	case 7:
		if (c!='\n') return flushln(c);
                       return 1;
        }

    }
    return EOF;
}

int main(void)
{
   int i,row,col,value;
   while ( (i=get_user_input(&row,&col,&value))!=1)
   {
      if (i==EOF) 
      {
         printf("Exiting, found EOF\n");
         exit(EXIT_SUCCESS);
      }
      else
         printf("Wrong input, try again\n");
      
   }
   
   printf("You entered (%d,%d)=%d\n",row,col,value);

   getchar();
   return 0;
}

Δημοσ.
Η προηγούμενη έκδοση ελαφρώς βελτιωμένη:

 

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

/* flush to end of line 
  return EOF upon EOF, 0 upon end-of-line*/
int flushln(int c)
{
  int ch;
  if (c=='\n') return 0;
  while ('\n' != (ch = getchar()) && (EOF != ch));
  return ch==EOF?EOF:0;
}

int get_user_input(int* row,int *col,int *value)
{
int c,pos=0;

while((c=getchar())!=EOF)
{
	switch(pos++)
	{
	case 0:
		if(c!='(') 
                          return flushln(c);
		break;
	case 1:
		if( c>='0'&& c<='9' )
			*row = c-'0';
		else
			return flushln(c);
		break;
	case 2:
		if(c!=',') return flushln(c);
	        break;
	case 3:
		if( c>='0'&& c<='9' )
			*col = c-'0';
		else
			return flushln(c);
	    break;
	case 4:
		if(c!=')') return flushln(c);
		break;
	case 5:
		if(c!='=') return flushln(c);
		break;
	case 6:
		if( c>='0'&& c<='9' )
			*value = c-'0';
		else
			return flushln(c);
	    break;
	case 7:
		if (c!='\n') return flushln(c);
                       return 1;
        }

    }
    return EOF;
}

int main(void)
{
   int i,row,col,value;
   while ( (i=get_user_input(&row,&col,&value))!=1)
   {
      if (i==EOF) 
      {
         printf("Exiting, found EOF\n");
         exit(EXIT_SUCCESS);
      }
      else
         printf("Wrong input, try again\n");
      
   }
   
   printf("You entered (%d,%d)=%d\n",row,col,value);

   getchar();
   return 0;
}

Se efxaristo polli gia tin voithia sou.

 

Des mono ti provlima iparxei:

An patiso (3,5)=2 to kataxorei

An ksanapatiso (3,5)=6 stamataei.

Δημοσ.

προφανως σταματαει, κοιταξες τον κωδικα να δεις τι κανει;

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

Προσπαθησε να καταλαβεις τι κανει ο κωδικας και μη ζητας να σου δωσουμε την ασκηση ετοιμη. Κανε μια προσπαθεια, δειξε μας τι εκανες και να σε βοηθησουμε.

Δημοσ.
προφανως σταματαει' date=' κοιταξες τον κωδικα να δεις τι κανει;

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

Προσπαθησε να καταλαβεις τι κανει ο κωδικας και μη ζητας να σου δωσουμε την ασκηση ετοιμη. Κανε μια προσπαθεια, δειξε μας τι εκανες και να σε βοηθησουμε.[/quote']

 

 

Oxi re pedia ego den zitisa na mou dosete tin askisi etoimi. Apla ego eipa oti afto den doulevei stin periptosi mou. Entaksei den peirazei tha to ftiakso.... Efxaristo polli pantos kai tous 2 sas...

Δημοσ.
Pedia gia sas..... Mipos mporei kaneis na me voithisei me mia askisi pou prepei na kano? Einai stin c. Opoios thelei kai mporei na me voithisei....http://147.52.126.35:1025/jetspeed/uploaded_files/CS150B/hw3.pdf

Einai i 2 askisi(me to sudoku)

Efxaristo ek ton proteron...

 

Θα έπρεπε να ντρέπεσαι για αυτό που κάνεις. Είσαι και CSD...

 

Άμα είσαι άσχετος πήγαινε σπίτι σου!

Δημοσ.
Θα έπρεπε να ντρέπεσαι για αυτό που κάνεις. Είσαι και CSD...

 

Άμα είσαι άσχετος πήγαινε σπίτι σου!

μη το παμε εκει' date=' οκ η εργασια του δεν ειναι ευκολη για αρχαριο. Απλα προσπαθησα να του εξηγησω οτι δε γινεται να του κανουμε εμεις τη δουλεια. Πρεπει να κανει κατι αυτος, και οπου κολλαει να τον ξεκολλαμε.

 

@Spinner

λες ας πουμε οτι αυτο που σου γραψαμε δε κανει για σενα. Προσεξε τωρα. Αυτο που σου δωσαμε ειναι η get_user_input και οχι η main. H main ηταν απλα ενα παραδειγμα για το πως να χρησιμοποιησεις την get_user_input. Αν ηθελες πχ να βαζεις συνεχεια ινπουτ (α,β)=γ και το προγραμμα να ελεγχει συνεχεια μεχρι να βρει EOF τοτε θα εγραφες

while ( (i=get_user_input(&row,&col,&value))!=EOF)

{

if (i==0)

{

printf("Wrong input, try again\n");

 

}

else

{

printf("You entered (%d,%d)=%d\n",row,col,value);

printf("That's a nice input, please enter another one\n");

}

}

 

printf("Exiting, found EOF\n");

 

ειναι για την get_user_input του Sta, ετσι; Δες τι δαφορα εχει το ενα while που ειχε στο main του o Sta απο αυτο που βαζω εδω... ΠΡΕΠΕΙ να καταλαβεις για να προχωρησουμε.

Δημοσ.
Se efxaristo polli gia tin voithia sou.

 

Des mono ti provlima iparxei:

An patiso (3' date='5)=2 to kataxorei

An ksanapatiso (3,5)=6 stamataei.[/quote']

 

Ο κορμός του προγράμματος είναι του georgemarios, οπότε σε αυτόν ανήκουν οι ευχαριστίες κυρίως. Πρέπει να κάνεις μια προσπάθεια να καταλάβεις τι κάνει ο κώδικας μόνος σου. Το πρόγραμμα που σου έδωσα εγώ περιμένει να του δώσεις μία έγκυρη είσοδο, αφού το κάνεις την επιβεβαιώνει αλλιώς σου λέει να ξαναπροσπαθήσεις. Αφού δώσεις έγκυρη είσοδο, καλείται η συνάρτηση getchar() που περιμένει απλώς να πατήσεις <Enter>, αυτό το κάνω γιατί χρησιμοποιώ το Dev-C++ για να μην κλείνει η κονσόλα του Dos απότομα (Αν το χρησιμοποιείς θα καταλάβεις τι εννοώ).

 

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

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

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

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