Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: nhập 1 xâu từ bàn phím(quá trình nhập dừng khi gặp# hoặc độ dài >50) ?

  1. #1
    Ngày gia nhập
    11 2010
    Nơi ở
    Hà Nội
    Bài viết
    76

    Red face nhập 1 xâu từ bàn phím(quá trình nhập dừng khi gặp# hoặc độ dài >50) ?

    mọi người cho mình hỏi, mình có 1 bài này mà mãi ko giải đc, hoặc có giải rồi nhưng mà sai

    Code:
    Nhập 1 xâu từ bàn phím, quá trình nhập dừng khi gặp ký tự # hoặc độ dài >50 ký tự.
    Các bạn giúp mình với, mình ko hiểu nhập 1 chuỗi thì làm sao mà kiểm tra đc người đó nhập ký tự # chứ
    Cách của mình là ko nhập theo 1 chuỗi luôn mà mình nhập từng ký tự và lưu vào 1 mảng nếu gặp ký tự # thì kết thúc. Nhưng mà sai
    I will wait you

  2. #2
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    dùng mã ASCII bạn
    I'll come back

  3. #3
    Ngày gia nhập
    11 2010
    Bài viết
    49

    Theo mình thì lấy mã của # và dùng biến đếm tăng theo mỗi lần lặp, Quá số lượng thì thoát hoặc st[i]==# ( theo mã ascii).
    Bạn đưa code lên nếu sai thì mọi người sẻ chi cho bạn. ok

  4. #4
    Ngày gia nhập
    11 2010
    Nơi ở
    Hà Nội
    Bài viết
    76

    Đây là code của mình
    Code:
    #include<stdio.h>
    #include<conio.h>
    main()
    {
    	int i=0,n,dem=0;
    	char str[50];
    	char c;
    	
    	printf("Nhập 1 chuỗi từ bàn phím, quá trình nhập dừng khi gặp phím # hoặc độ dài>50 ký tu\n");
    	while(1)
    	{
    		scanf("%c",&c);	// nhập từng ký tự từ bàn phím
    		dem++;
    		if(dem>50 || c=='#') // Nếu ko hợp lệ thì kết thúc
    			break;
    		else
    		{
    			str[i]=c;// nếu ký tự đó hợp lệ thì lưu vào 1 mảng khác
    			i++;
    		}
    	}
    	n=i;	
    	
    	//sử lý các câu khác ở đây
    	getch();	
    }
    Các bạn thử xem hộ mình nhé
    I will wait you

  5. #5
    Ngày gia nhập
    12 2010
    Nơi ở
    Cần thơ
    Bài viết
    273

    Trích dẫn Nguyên bản được gửi bởi tan408 Xem bài viết
    Đây là code của mình
    Code:
    #include<stdio.h>
    #include<conio.h>
    main()
    {
    	int i=0,n,dem=0;
    	char str[50];
    	char c;
    	
    	printf("Nhập 1 chuỗi từ bàn phím, quá trình nhập dừng khi gặp phím # hoặc độ dài>50 ký tu\n");
    	while(1)
    	{
    		scanf("%c",&c);	// nhập từng ký tự từ bàn phím
    		dem++;
    		if(dem>50 || c=='#') // Nếu ko hợp lệ thì kết thúc
    			break;
    		else
    		{
    			str[i]=c;// nếu ký tự đó hợp lệ thì lưu vào 1 mảng khác
    			i++;
    		}
    	}
    	n=i;	
    	
    	//sử lý các câu khác ở đây
    	getch();	
    }
    Các bạn thử xem hộ mình nhé
    Tớ thấy thay scanf("%c",&c); bằng c=getch(); hay c=getche(); và thêm các đoạn hổ trợ (hổ trợ xóa, hổ trợ khi nhấn enter dựa và ascii) sẽ hay hơn
    Ai bất tài, tôi nhìn hoài chẳng thấy,
    Đi khắp phòng tôi lấy 1 tấm gương,
    Khẽ đặt lên một góc phía bức tường,
    Nhìn vào đó, tôi tận tường kẻ đó.

  6. #6
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Mặc định nhập 1 xâu từ bàn phím(quá trình nhập dừng khi gặp# hoặc độ dài >50) ?

    Dùng getch hay getchar gì đó để lấy từng ký tự.
    Dùng vòng lặp for 0-49 để giới hạn số kt tối đa là 50.
    Khi kt nhập vào đúng mã dừng (#) thì dùng lệnh break để nhảy khỏi vòng lặp.
    Sau khi ra khỏi vòng lặp thì đặt s[i] = '\0'

  7. #7
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    bạn xem có giống ý bạn không
    Code:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    	int i=0,n,dem=0;
    	char* str=new char[50];
    	char c;
    	
    	do
    	{
    		printf("\n nhap ki tu: ");
    		flushall();
    		scanf("%c",&c);
    		if((int)c!=35)
    		{
    			str[i++]=c;
    			dem++;
    		}
    		else
    			break;
    	}while(dem<50||(int)c!=35);
    	str[i]='\0';
    	printf("\n %s",str);
    	//n=i;	
    	
    	//sử lý các câu khác ở đây
    	getch();	
    }
    I'll come back

  8. #8
    Ngày gia nhập
    11 2010
    Nơi ở
    Hà Nội
    Bài viết
    76

    cảm ơn mọi người rất nhiều,
    đúng ý của mình rồi
    cho mình hỏi thêm 1 câu nữa là các bạn xem cách làm đó có hợp lý đối với bài tập đó ko
    tại lúc đầu khi đọc đề mình hơi phân vân là: đề bài nói là nhập 1 xâu, ko biết có bắt buộc nhập 1 xâu liền 1 lúc ko hay phải nhập từng ký tự
    I will wait you

  9. #9
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Trong lớp basic_stream của C++ có hai hàm này, có thể đúng với yêu cầu của bạn:
    C++ Code:
    1. template<> basic_istream< char > & getline (char_type *__s, streamsize __n, char_type __delim)
    2.  template<> basic_istream< wchar_t > & getline (char_type *__s, streamsize __n, char_type __delim)

    String extraction.
    Parameters: s A character array in which to store the data.
    n Maximum number of characters to extract.
    delim A "stop" character.


    Returns:
    *this

    Extracts and stores characters into s until one of the following happens. Note that these criteria are required to be tested in the order listed here, to allow an input line to exactly fill the s array without setting failbit.
    the input sequence reaches end-of-file, in which case eofbit is set in the stream error state
    the next character equals delim, in which case the character is extracted (and therefore counted in gcount()) but not stored
    n-1 characters are stored, in which case failbit is set in the stream error state

    If no characters are extracted, failbit is set. (An empty line of input should therefore not cause failbit to be set.)

    In any case, a null character is stored in the next location in the array.

    Definition at line 402 of file istream.tcc.
    Trong trường hợp này:
    C++ Code:
    1. cin.getline(str,50,'#');

Các đề tài tương tự

  1. Quy hoạch động. tìm dãy con có độ dài lớn nhất
    Gửi bởi anhhp trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 25-05-2012, 10:13 AM
  2. Nhận miễn phí vé Lễ Hội Truyện Tranh – Phim Hoạt Hình Nhật Bản – MAF VIỆT NAM 2011 - 08/09/11
    Gửi bởi steven.thien trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 08-09-2011, 12:23 AM
  3. Bài tập C++ đếm số phần tử yên ngựa (phần tử lớn nhất dòng và nhỏ nhất cột. Hoặc nguợc lại)
    Gửi bởi danielh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 30-06-2011, 10:37 AM
  4. Bài tập C Lặp lại việc nhập đến khi ấn phím 'n' hoặc 'N'
    Gửi bởi thuatbg trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 15-10-2010, 06:04 PM
  5. Trả lời: 4
    Bài viết cuối: 16-04-2008, 08:18 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn