By GokiSoft.com| 15:03 03/12/2021|
Lập Trình C

[Nâng cao] Tìm kiếm chuỗi trong chuỗi - Lập trình C

Khai báo 2 chuỗi s1, s2

Đếm số lần xuất hiện chuỗi s2 trong s1. Và in ra vị trí tìm thấy.

Phản hồi từ học viên

5

(Dựa trên đánh giá ngày hôm nay)

GokiSoft.com [Teacher]
GokiSoft.com

2021-12-06 07:35:51



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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	//khai bao 2 chuoi
	char s1[50], s2[50];
	
	//Nhap du lieu
	printf("\nNhap s1 = ");
	gets(s1);
	printf("\nNhap s2 = ");
	gets(s2);
	
	//giai thuat tim kiem
	int i, j, length1, length2;
	length1 = strlen(s1);
	length2 = strlen(s2);
	bool isFind;
	
	if(length1 >= length2) {
		for(i=0;i<=length1-length2;i++) {
			isFind = true;
			for(j=0;j<length2;j++) {
				if(s1[i+j] != s2[j]) {
					isFind = false;
					break;
				}
			}
			if(isFind) {
				printf("\nVi tri tim thay = %d", i);
			}
		}
	} else {
		//do dai s2 > doi dai s1 -> khong tim thay
		printf("\nChuoi nhap vao ko hop le!!!");
	}
	
	return 0;
}



Do Trung Duc [T2008A]
Do Trung Duc

2020-10-01 13:50:56



#include<stdio.h>
#include<string.h>


int dem(char s1[], char s2[]){
	int i,j,count =0,check;
	
		for(i=0;i<strlen(s1);i++){
			
			if(s1[i]==s2[0]){
				check =1;
				
				for(j=0;j<strlen(s2);j++){
					
					if(s2[j]!=s1[i+j]){
						check = 0;
						
						break;
					}	
					
			
				}
				
					if(check==1){
					count++;			
				}		
				
			}	

			
		}
	return count;
}


void Hienthi(char s1[], char s2[]){
	int i,j,check,k;
	
	for(i=0;i<strlen(s1);i++){
			
			if(s1[i]==s2[0]){
				check =1;
				
				for(j=0;j<strlen(s2);j++){
					
					if(s2[j]!=s1[i+j]){
						check = 0;
						
						break;
					}	
				}
			if(check==1){
				printf("\n");
				printf("%s", s2);
				for(k=i+strlen(s2);k<strlen(s1);k++){
					printf("%c",s1[k]);
				}
				
			}				
			}
				
		}	
	
}


int main(){
	char s1[200], s2[200];
	printf("Nhap chuoi ban dau s1: ");
	gets(s1);
	printf("Nhap chuoi tim kiem trong s1 la s2: ");
	gets(s2);
	
	
	printf("Chuoi s2 xuat hien trong chuoi s1 %d lan", dem(s1,s2));
	
	Hienthi(s1,s2);
	
	
    return 0;
}



Đặng Trần Nhật Minh [T2008A]
Đặng Trần Nhật Minh

2020-09-30 06:48:23



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

int countString(char s[],char s2[]) {
    
	int check = 1, cnt = 0;
	
	for (int i = 0; i < strlen(s); i++)
		if (s[i] == s2[0]) {
   
            check = 1;
   
            for (int j = 0; j < strlen(s2); j++) 
				if (s2[j] != s[i + j]) {check = 0; break;}
    
            if (check) cnt++;
       
	    }
	    
	return cnt;
	
}

int main() {

	char a[100], b[100];
	
	fflush(stdin); fflush(stdout);
	gets(a);
	
	fflush(stdin); fflush(stdout);
	gets(b);
	
	printf("\nSo lan xuat hien: %d", countString(a, b));
	
	return 0;
    
}



Nguyễn Tiến Đạt [T2008A]
Nguyễn Tiến Đạt

2020-09-27 15:54:32



#include<stdio.h>
#include<string.h>

int Dem(char s1[],char s2[]){
    int i,j,ok,dem=0;
    for(i=0; i<strlen(s1); i++){
        if(s1[i] == s2[0]){
            ok = 1;
            for(j=0; j<strlen(s2); j++){
                if(s2[j] != s1[i+j]){
                    ok = 0;
                    break;
                }
            }
            if(ok == 1){
        	dem++;
		    }
        }
    }
    return dem;
}

void Hienthi(char s1[],char s2[]){
	int i,j,k, ok;
	for(i=0;i<strlen(s1);i++){
		if(s1[i]==s2[0]){
			ok=1;
			for(j=0;j<strlen(s2);j++){
				if(s2[j]!=s1[i+j]){
					ok=0;
					break;
				}
			}
			if(ok == 1){
				printf("\n");
				printf("%s",s2);
				for(k=i+1;k<strlen(s1);k++){
					printf("%c",s1[k]);
				}
			}
		}
	}
}

int main(){
    char s1[100],s2[100];
    printf("Nhap chuoi ban dau: ");
    gets(s1);
    fflush(stdin);
    printf("Nhap chuoi can tim kiem: ");
    gets(s2);
    printf("Chuoi can tim kiem xuat hien %d lan",Dem(s1,s2));
    Hienthi(s1,s2);
    return 0;
}