Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int *evszamok(char k[], int *meret) {
- int i=0, j=0, state=0, evszam = 0, m=0, cm=0;
- int *evszamok = NULL, *evszamok2 = NULL;
- while(k[i]){
- switch(state){
- case 1: //1 jegy?
- if ('0' < k[i] && k[i] <= '9') {
- evszam = 1000*(k[i]-'0');
- state = 2;
- } else {
- state = 0;
- }
- break;
- case 2: //2 jegy?
- if ('0' <= k[i] && k[i] <= '9') {
- evszam += 100*(k[i]-'0');
- state = 3;
- } else {
- state = 0;
- }
- break;
- case 3: //3 jegy?
- if ('0' <= k[i] && k[i] <= '9') {
- evszam += 10*(k[i]-'0');
- state = 4;
- } else {
- state = 0;
- }
- break;
- case 4: //4 jegy/pont?
- if ('0' <= k[i] && k[i] <= '9') {
- evszam += (k[i]-'0');
- state = 5;
- } else if( k[i] == '.') {
- evszam /= 10;
- if( evszam >= 895 && evszam <= 2010 ) m++;
- state = 0;
- } else {
- state = 0;
- }
- break;
- case 5: //pont?
- if (k[i] == '.') {
- if( evszam >= 895 && evszam <= 2010 ) m++;
- }
- state = 0;
- break;
- case 0: //szokoz?
- default:
- evszam = 0;
- if (k[i] == ' ') {
- state = 1;
- }
- break;
- }
- if (m > cm) {
- //enlarge ... array!
- evszamok2 = (int *)malloc(m*sizeof(int));
- for(j=0;j<cm;j++) {
- evszamok2[j] = evszamok[j];
- }
- evszamok2[j] = evszam;
- cm = m;
- evszamok = evszamok2;
- }
- i++;
- }
- *meret = m;
- return evszamok;
- }
- int main(){
- int m,i;
- char konyv[] = "894. 2010. 2012. foo. magyarorszag tortenelmevel. foglalkozo konyv, 1986. ez nem datum:2006 ez viszont igen: 895. meg ezis: 2010.";
- int *evsz;
- evsz = evszamok(konyv, &m);
- for(i=0;i<m;i++){
- printf("%d\n", evsz[i]);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment