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);
}
}
}
Bài liên quan
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:
co em dung oldi de danh dau lai roi ma no chi tach dc tung ki tu
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?
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*