30/09/2018, 19:06

Cho em hỏi về code

// in cac tu bat dau bang mot nguyen am
#include<stdio.h>
#include<iostream>
#include<conio.h>
#include<math.h>
#include<string>
using namespace std;
void nhap(char a[]);
void xuat(char a[]);
void dem_na(char a[]);

int main()
{
	char a[50];
	nhap(a);
	dem_na(a);
}
void nhap(char a[])
{
	cout << "Nhap 1 chuoi ky tu:";
	cin.getline(a, 50);
}
void xuat(char a[])
{
	int n;
	n = strlen(a);
	for (int i = 0; i < n; i++)
		cout << (a[i]);
}
void dem_na(char a[])
{
	char temp[100],s[100];
	char nguyenam[] = "aeiouyAEIOUY";// danh sach nguyen am
	int len = strlen(a);
	for (int i = 0; i < len;i++)// di tung phan tu thu i trong chuoi
	{
		while (a[i] != 32)i++;
		int j = i + 1;
		if (strchr(nguyenam,a[j])!=NULL)
		{
				int oldi = j;		//dau tu
				while (a[j] != 32) j++;	//chay den ki tu cuoi
				strncpy_s(temp, a + oldi, j - oldi);	//trich ra mang temp
				temp[j - oldi] = 0;					//thêm ký tu ket thuc chuoi
				xuat(temp);
			}
		}
}
Gió viết 21:15 ngày 30/09/2018

Thuật toán đơn giản thôi! dùng 1 biến để dánh dấu xem đoạn nào cần in trong xâu là dc

VD:

#include <iostream>
using namespace std;


bool nguyen_am(char c){
	char nguyenam[] = "aeiouyAEIOUY";
	int i;
	for(int i=0;i<12;i++){
		if(c==nguyenam[i])return true;
	}
	return false;
}
int main() {
	string s;
	getline(cin,s);
	int i;
	bool print=false;
	for(i=0;i<s.size();i++){
		if(print and s[i]==' '){
                        /* ket thuc từ reset biến print */
			print=false;
			cout<<endl;
		}
		if((i==0 and nguyen_am(s[i])) or (s[i-1]==' ' and nguyen_am(s[i])) ){
                        /* từ là nguyên âm đầu câu hoặc giữa câu: print =true để in */
			print=true;
		}
		if(print) cout<<s[i];
		
	}
	return 0;
}
Nguyen Nam viết 21:13 ngày 30/09/2018

co em dung oldi de danh dau lai roi ma no chi tach dc tung ki tu

viết 21:11 ngày 30/09/2018

do vòng lặp ngoài chỉ có ++i nên i tăng từng ký tự chứ ko phải từng từ. Cái bạn muốn là a[i] phải ở đúng ký tự đầu tiên của từ tiếp theo.

gán i = j trước khi đóng vòng for xem coi đúng ko?

Nguyen Nam viết 21:15 ngày 30/09/2018

va


*[quote=“tntxtnt, post:4, topic:18380, full:true”]
do vòng lặp ngoài chỉ có ++i nên i tăng từng ký tự chứ ko phải từng từ. Cái bạn muốn là a[i] phải ở đúng ký tự đầu tiên của từ tiếp theo.

gán i = j trước khi đóng vòng for xem coi đúng ko?
[/quote]

vang em cam on*

Bài liên quan
0