Xin ý tưởng bài C này

cũng sai thật :))
cái vấn đề là khi n rơi vào giữa của 1 từ thì ta không thể cắt đôi từ đó để xuống dòng đc.

Mình cũng mới học C , code của mình thì sử dụng nhiều thư viện nên hơi nặng với lại mình coi kí tự Space cũng là 1 ký tự bình thường !!
có ae nào đơn giản được thì giúp mình nhé : ( mình chỉ test chuỗi string gồm 20 ký tự thôi nhé ...bạn muốn tăng string thì tăng vòng For nhé )



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<ctype.h>
int n=0;
int xuly(char chuoi[])
{
for (int x=n;x>0;x--)

if (isblank(chuoi[x]))
{ chuoi[x]='\n';break;}
for(int i=0;i<n;i++)
printf("%c",chuoi) ;


};




int main()


{
char chuoi[99]=""; char chuoi2[99]="";
printf("nhap n: ");
scanf("%d",&n);

fflush(stdin);


for (int i=0;i<20;i++)
{ chuoi=getchar();}

xuly(chuoi);
for (int i=n,j=0;i<20;i++,j++)
chuoi2[j]=chuoi;
xuly(chuoi2);





}
 
nôm na vẫn còn tí lỗi .. nhưng ý tưởng là :
1=>20 nhập chuỗi 1;
cho chạy từ N về 0 nếu phát hiện dấu cách thì chuyển nó thành \n
in ra N ký tự đầu!
sau đó gán các ký tự còn lại của chuỗi 1 cho những ký tự đầu mảng 2 !
thực hiện hàm xử lý(chuỗi 2) ;

Vd: N=6 chuỗi: 12 34 56 79 thì display firstline: 12 34 \n second line:5
(dòng 2 có sắn 1 ký tự '5' rồi nên chỉ có thể in ra N-1 ký tự , nhưng mình không có time để fix, mong là có thể tạm chấp nhận dc)
 

taplamhacker

♥ Thanh Trâm ♥
:conan: sao 30p ngâm cứu cái code trên của e thì fixx lại 1 chổ
mấy cao thủ check xem có chuỗi + n nào làm code sai k nhé :hakhoc: e đã cố găn hết sức
[AH]
Mã:
#include<stdio.h>#include<string.h>
#include<stdlib.h>
void output(char s[] ,int n,int j)
{
    int dem=-1;
    int tmp=-1;
    for (int i = 0 ; i < j ; i ++)
        {
            dem++;
            if ( s[i] == ' ' && dem<=n)
                {
                    if(tmp >= 0)
                        s[tmp] = ' ';
                    s[i]='\n';
                    tmp = i;
                }
            if (dem >= n)
                {
                    dem=-1;
                    tmp=-1;
                }
        }
        puts(s);
}
int main()
{
    char s[999];
    printf("nhap chuoi\n");
    fflush(stdin);
    gets(s);
    int j = strlen(s);
    int n;
    printf("\n nhap n \n");
    printf("\n so ky tu tren 1 dong = n+1 \n");
    scanf("%d",&n);
    int dem=0;
    for ( int i= 0 ; i < j ; i ++)
    {
        if (s[i]==' ')
            dem++;        
        if( i > n-1 && dem==0 )
            {
                printf("loi ");
                exit(0);                            
            }
    }
    output(s,n,j);
    
}
[/AH]

:conan: thêm ít hình cho sinh động
vd1: dien dan cong nghe vfo.vn, n=10
[AH]
GnwNtNM.png
[/AH]
vd2: a a a a a a , n=1
[AH]
fndoPiT.png
[/AH]
vd3: anh anh nghien, n=9
[AH]
IYUU42W.png
[/AH]
vd4: anh anh nghien, n=2
[AH]
uNNbWJI.png
[/AH]
:rage1:
 

VSupport

Ngây thơ trong tối
Code của Cong ANh có vẻ đúng rồi nhỉ test ko thấy sai :oh:
 

Thống kê

Chủ đề
102,311
Bài viết
469,958
Thành viên
340,422
Thành viên mới nhất
Công Nghiệp Cường Thịnh

Bài viết được quan tâm nhiều

Top