30/09/2018, 19:09

Cần giúp về bài liệt kê những từ có tận cùng là nguyên âm trong c/c++

>     #include "stdafx.h"
>     #include<iostream>
>     #include<conio.h>
>     #include<math.h>
>     #include<string.h>
>     using namespace std;
>     int _tmain(int argc, _TCHAR* argv[])
>     {
>         do{
>     	        char s[50];
>               int len =strlen(s);
>           	char na[] = "ueoaiyUEOAIY";
>     		char d[50]; // chuoi chua tu nguyen am 
>     		int nd = 0;
>     		char c[50];
>     		int nc = 0;
>     		for (int i = len - 1; i >= 0; i --)
>     		{
>     			if (s[i] != 32 && s[i] != NULL)
>     			{
>     				c[nc++] = s[i];
>     			}
>     			else
>     			{
>     				c[nc] = NULL;
>     				if (strchr(na, c[0]) != NULL)
>     				{
>     					strcpy_s(d, c);
>     				}
>     				nc = 0;
>     			}
>     		}
>     		cout << d << endl;
>     		cout << " nhan ESC de thoat chuong trinh !!!" << endl;
>     	} while (_getch() != 27);
>     	return 0;
>     }
> giúp mình tìm lỗi với , mình thấy hướng làm cũng đúng mà sao không ra .
Nhóc Lãng Tử viết 21:11 ngày 30/09/2018

ai giúp mình với , mình sắp thi rồi mà dạng này cắt các từ ra một chuỗi khác chưa biết làm

Mít đồ viết 21:14 ngày 30/09/2018

len

biến đó khai bảo ở đâu vậy bạn

Mít đồ viết 21:14 ngày 30/09/2018

code này chắc copy quá vòng lặp do-while mà lại k có keyword:do

Nhóc Lãng Tử viết 21:15 ngày 30/09/2018

mình làm 2 ,3 bài trong đó mà chỉ copy bài đó ra nên thiếu

Nhóc Lãng Tử viết 21:17 ngày 30/09/2018

mình chỉnh lại rùi đó

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

Bài này nghĩa là cho một chuỗi kí tự rồi liệt kê nhưng từ có tận cùng là kí tự nguyên âm hả ?

Nhóc Lãng Tử viết 21:26 ngày 30/09/2018

đúng rùi bạn

Nguyễn Chiến Thắng viết 21:16 ngày 30/09/2018

Mình thấy bạn dùng 1 đống thư viện, mình nhìn thì k hiểu tác dụng của nó trong chương trình này như thế nào. Nhưng ở đây mình thấy bạn có khai báo biến s, rồi sau đó dùng biến s đó tính toán luôn, trong khi chưa có khai báo giá trị của nó thì chương trình chạy thế nào được

Nhóc Lãng Tử viết 21:18 ngày 30/09/2018

mình copy thiếu đó bạn , tại mình làm 3 bài trong đây nên lúc copy ra thiếu

Pham Ngoc Quynh viết 21:25 ngày 30/09/2018

Mình không rành cú pháp của C++ nhưng sẽ gợi ý cách làm cho bạn như sau:
Bước 1: Gọi chuỗi cho trước là strInput. Tạo một mảng mới, ví dụ với tên strSeperate. Tách từng từ trong chuỗi ban đầu dựa vào kí tự khoảng trắng (space) và lưu những từ đó vào mảng vừa strSeperate vừa tạo.

Bước 2: Vì đề bài yêu cầu kiểm tra từ có chữ cái tận cùng là nguyên âm => Tạo một hàm kiểm tra xem từ đang kiểm tra có thoả mãn yêu cầu không, nếu có trả hàm về true, ngược lại trả về false.

Bước 3: Tạo môt mảng mới, ví dụ mảng với tên strOutput. Sử dụng Foreach để duyệt qua từng từ trong mảng. Với mỗi vòng lặp, sử dụng hàm đã tạo ở bước 2 kiểm tra từ đang duyệt, nếu thoả mãn yêu cầu thì thêm từ đó vào mảng strOutput.

Gửi bạn đoạn code bằng ngôn ngữ Swift tham khảo.

//: Playground - noun: a place where people can play

import UIKit

var strInput = “Ngay hom qua troi trong xanh, hoa la cung tuoi xanh”
var strSeperate = strInput.componentsSeparatedByString(" ") //tách chuỗi thành mảng gồm nhiều từ dựa vào kí tự khoảng trắng
var strOutput = String

func testNguyenAm (str : String) -> Bool {
let char = str.characters.last! // lấy kí tự cuối cùng của từ
if (char == “u” || char == “o” || char == “e” || char == “i” || char == “a” || char == “y” || char == “U” || char == “O” || char == “E” || char == “I” || char == “A” || char == “Y”) {
return true
}
else {
return false
}
}

for word in strSeperate {
if testNguyenAm(word) {
strOutput.append(word) // thêm từ vào mảng
}
}

Nguyen Nam viết 21:23 ngày 30/09/2018
//dem so tu bat dau bang 1 nguyen am
// nhap chuoi
#include<stdio.h>
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
void nhap(char a[]);
void xuat(char a[]);
int dem_na(char a[]);
int main()
{
	char a[50];
	nhap(a);
	cout << "so ki tu nguyen am la:";
	cout << 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]);
}
int dem_na(char a[])
{
	int songuyenam = 0;
	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
	{
		if (a[i] != 32 && a[i - 1] == 32)
		{
			if (strchr(nguyenam, a[i]) != NULL)// tim phan tu thu i trong day nguyen am
				songuyenam++;
		}
	}
	return songuyenam;

}````
mình có code đếm các từ bắt đầu bằng 1 nguyên âm
bạn chỉnh lại len cho nó chạy từ cuối lên đầu xem
Bài liên quan
0