Guest User

Untitled

a guest
Jun 20th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int *evszamok(char k[], int *meret) {
  5. int i=0, j=0, state=0, evszam = 0, m=0, cm=0;
  6. int *evszamok = NULL, *evszamok2 = NULL;
  7.  
  8. while(k[i]){
  9. switch(state){
  10. case 1: //1 jegy?
  11. if ('0' < k[i] && k[i] <= '9') {
  12. evszam = 1000*(k[i]-'0');
  13. state = 2;
  14. } else {
  15. state = 0;
  16. }
  17. break;
  18. case 2: //2 jegy?
  19. if ('0' <= k[i] && k[i] <= '9') {
  20. evszam += 100*(k[i]-'0');
  21. state = 3;
  22. } else {
  23. state = 0;
  24. }
  25. break;
  26. case 3: //3 jegy?
  27. if ('0' <= k[i] && k[i] <= '9') {
  28. evszam += 10*(k[i]-'0');
  29. state = 4;
  30. } else {
  31. state = 0;
  32. }
  33. break;
  34. case 4: //4 jegy/pont?
  35. if ('0' <= k[i] && k[i] <= '9') {
  36. evszam += (k[i]-'0');
  37. state = 5;
  38. } else if( k[i] == '.') {
  39. evszam /= 10;
  40. if( evszam >= 895 && evszam <= 2010 ) m++;
  41. state = 0;
  42. } else {
  43. state = 0;
  44. }
  45. break;
  46. case 5: //pont?
  47. if (k[i] == '.') {
  48. if( evszam >= 895 && evszam <= 2010 ) m++;
  49. }
  50. state = 0;
  51. break;
  52. case 0: //szokoz?
  53. default:
  54. evszam = 0;
  55. if (k[i] == ' ') {
  56. state = 1;
  57. }
  58. break;
  59. }
  60. if (m > cm) {
  61. //enlarge ... array!
  62. evszamok2 = (int *)malloc(m*sizeof(int));
  63. for(j=0;j<cm;j++) {
  64. evszamok2[j] = evszamok[j];
  65. }
  66. evszamok2[j] = evszam;
  67. cm = m;
  68. evszamok = evszamok2;
  69. }
  70.  
  71. i++;
  72. }
  73. *meret = m;
  74.  
  75. return evszamok;
  76. }
  77.  
  78. int main(){
  79. int m,i;
  80. char konyv[] = "894. 2010. 2012. foo. magyarorszag tortenelmevel. foglalkozo konyv, 1986. ez nem datum:2006 ez viszont igen: 895. meg ezis: 2010.";
  81. int *evsz;
  82.  
  83. evsz = evszamok(konyv, &m);
  84.  
  85. for(i=0;i<m;i++){
  86. printf("%d\n", evsz[i]);
  87. }
  88.  
  89.  
  90. return 0;
  91. }
Add Comment
Please, Sign In to add comment