life24 Δημοσ. 22 Μαρτίου 2008 Δημοσ. 22 Μαρτίου 2008 kalispera sas.sas parathetw poio katw ton kwthika mou kai ena word document me to provlima pou exw.exw ena provlima kai xreiazomai tin voitheia sas.to provlima pou exw einai sto int Search.stin prwti periptwsi otan vazw 2345672 kai 756 mou vgazei to munuma "oti o m den emfanizetai pouthena mesa sto n" to idio omws munuma to pairnw kai stin deuteri periptwsi dilathi otan valw 7321332150 kai 321.stin deyteri periptwsi omws prepei na mou epistrefei 3.pou kanw lathos? 2.zip Doc1.zip
bokarinho Δημοσ. 22 Μαρτίου 2008 Δημοσ. 22 Μαρτίου 2008 > int Search(int N,int M) { int NlastDigit = lastDigit(N); int nN = N; int nM = M; int curNDigit, curMDigit = lastDigit(M); int Index, Index2, saveIndex; for(Index = 0; Index < Length(N); Index++) { curNDigit = lastDigit(nN); if(curNDigit == curMDigit) { saveIndex = Index; for(Index2 = 0; Index2 < Length(M) && saveIndex < Length(N); Index2++, saveIndex++) { curNDigit = lastDigit(nN); curMDigit = lastDigit(nM); if(curMDigit == curNDigit) { nM /= 10; nN /= 10; } else break; } if(Index2 == Length(M)) /*return NlastDigit;*/ return Length(N); } nN /= 10; } return 0; } Δεν καταλαβαίνω σε περίπτωση που το βρίσκουμε τι επιστρέφουμε ακριβώς, νομίζω αυτό σε καλύπτει, καλά δεν φοβάσαι μήπως σου αντιγράψουν τον κώδικα; Έτσι χύμα τον πετάς; Ένα ευχαριστώ είναι αρκετό.
life24 Δημοσ. 22 Μαρτίου 2008 Μέλος Δημοσ. 22 Μαρτίου 2008 se euxaristw gia tin voitheia sou.auto pou yaxnw einai stin prwti periptwsi dilathi 2345672 kai 756 na mou epistrefei 0 kai stin deyteri periptwsi vazotas tis poio katw times 7321332150 kai 321 na mou epistrefei 3.se euxaristw kai pali
bokarinho Δημοσ. 22 Μαρτίου 2008 Δημοσ. 22 Μαρτίου 2008 > #include <stdio.h> int Length (int N) { int L=0; while(N>0){ L=L+1; N=N/10; } return L; } int lastDigit(int M) { return (M % 10); } int Search(int N,int M) { int NlastDigit = lastDigit(N); int nN = N; int nM = M; int nnN; int curNDigit, curMDigit = lastDigit(M); int Index, Index2, saveIndex; for(Index = 0; Index < Length(N); Index++) { curNDigit = lastDigit(nN); if(curNDigit == curMDigit) { saveIndex = Index; nnN = nN; nM = M; for(Index2 = 0; Index2 < Length(M) && saveIndex < Length(N); Index2++, saveIndex++) { curNDigit = lastDigit(nnN); curMDigit = lastDigit(nM); if(curMDigit == curNDigit) { nM /= 10; nnN /= 10; } else break; } if(Index2 == Length(M)) return Length(M); } nN /= 10; } return 0; } int main(void) { int nRet = Search(73215650,321); printf("%d\n", nRet); getchar(); } Είχε ένα bug η προηγούμενη, χρησιμοποιήσε αυτή την search, αλλά αυτό που θέλεις δεν γίνεται με τόσο μεγάλους αριθμούς, ο τύπος int είναι 4 bytes και φτάνει ως ένα όριο, μεγαλύτεροι αριθμοί από αυτό το όριο INT_MIN, INT_MAX οπότε μεγαλύτεροι αριθμοί δεν περνάνε από την συνάρτηση. Για να κάνεις τέτοια κόλπα θα πρέπει να μπλέξεις με μετατροπή αριθμού σε string και εύρεση substring μέσα στο string. Κάτι το οποίο είναι ωραίο και γίνεται εύκολα, προς το παρόν βολέψου.
life24 Δημοσ. 22 Μαρτίου 2008 Μέλος Δημοσ. 22 Μαρτίου 2008 bokarinho polu swsto auto pou mou egrayes alla an eithes to programma mou exw xrisimopoihsei switch mazi me case. sto case tou search isws prepei na allaxw kati gia na mou dinei to swsto apotelesma stin deuteri periptwsi?
bokarinho Δημοσ. 22 Μαρτίου 2008 Δημοσ. 22 Μαρτίου 2008 Παρά την απλότητα δυσκολεύομαι να καταλάβω το πρόγραμμα σου γιατί δεν μπορώ να καταλάβω την λογική σου, αρχικά πήγα να διορθώσω το τι είχες κάνει σε 20 δευτερόλεπτα άλλαξα γνώμη και έγραψα δικό μου function. Έχεις την συνάρτηση παίξε όπως θέλεις μαζί της δεν καταλαβαίνω.
bokarinho Δημοσ. 22 Μαρτίου 2008 Δημοσ. 22 Μαρτίου 2008 Αυτό που μπορείς να κάνεις μεσα στην main είναι το εξής: Κάπου να παίρνεις την τιμή που επιστρέφει η συνάρτηση Search και να λες: > nSearchValue = Search(N,M); switch(nSearchValue) { case 0: .... break; case nSearchValue > 0: .... break; } Δες το σαν ψευδοκώδικα το από πάνω.
life24 Δημοσ. 22 Μαρτίου 2008 Μέλος Δημοσ. 22 Μαρτίου 2008 bokarinho na se rwtisw kai kati allo pou isws esi mporeis na me voithiseis.gnwrizeis pws mporw na ftiaxw tin grafiki parastasi tou imitounou kai tou sunimitonou otan X from 0 to 360 degrees in steps of 10?
parsifal Δημοσ. 23 Μαρτίου 2008 Δημοσ. 23 Μαρτίου 2008 life24, παρακαλώ κάνε μία επεξεργασία στα μηνύματά σου μετατρέποντάς τα από Greeklish σε Ελληνικά. Είναι πραγματικά κρίμα για τον χρόνο που διέθεσε ο bokarinho να διαγραφεί το θέμα...
m1cRo Δημοσ. 24 Μαρτίου 2008 Δημοσ. 24 Μαρτίου 2008 Πολύ απλά τα πράγματα - "3 γραμμές" >#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { unsigned int snum; // subnumber unsigned int num=123456; // number char number[10]; // converted number char snumber[10]; // converted subnumber scanf("%d",&snum); itoa(snum,snumber,10); // convert int to string itoa(num,number,10); char *s=strstr(number,snumber); if(s!=NULL){ printf("Where : %d",s-number+1); } getch(); return 0; }
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.