Форум программистов, компьютерный форум CyberForum.ru

Линейный список. выравнивание текста. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Циклический сдвиг элементов массива по диагонали влево вниз http://www.cyberforum.ru/cpp-beginners/thread225530.html
Квадратный массив N×N по диагонали влево вверх. //--------------------------------------------------------------------------- #include<iostream.h> #include<iomanip.h> #include <stdlib.h> //--------------------------------------------------------------------------- int main(int argc, char* argv) { const int M=4, N=4; int i,j,k;
C++ Срочно (списки) Пожалуйста, помогите очень срочно требуется( 1. Дано два односвязных списка. Определить какой из них длиннее 2. Дан односвязный список чисел(инт) найдите в нем наибольший элемент http://www.cyberforum.ru/cpp-beginners/thread225528.html
C++ Структуры и массивы, сортировка списка.
Задание звучит так... Написать программу, в которой необходимо создать структуру, элементами которой являются: имя, фамилия, год рождения студента и оценки по пяти экзаменам. Объявить массив данных о студентах группы типа структуры и ввести значения его элементов. Определить сумму баллов за сессию каждого студента и отсортировать список студентов по баллам в порядке возрастания. Сортировку...
Поменять местами два элемента массива C++
Помогите решить пжл! в С++ ваще не шарю , а скора сессия I сем – Алгоритмические языки программирования Разработать схемы алгоритмов и программ (на Cu или C++) решение следующих задач: 1) Поменять местами два элемента – a и b 2) Вычислить Y= x2+5, если x<=2 2x, если x>2 3) Вычислить -x+1, если 1<x<=3
C++ устранить ошибки http://www.cyberforum.ru/cpp-beginners/thread225519.html
Привет! Я уже обращался с подобной просьбой, но остался без ответа. помогите пожалуйста. срочно надо! задача такова что нужно написать программу которая сортирует массивы из 1000, 5000 и 10000 элементов двумя видами сортировок и ввыводит время для каждой сортировки каждого массива. вот код, но тут у меня выходит что сортировка пузырька сортирует массив из 1000 элементов быстрее чем сортировка...
C++ сортировка одномерного массива объясните пожалуйста алгоритм выполнения сортировки относительно компьютера(программы) подробнее

Показать сообщение отдельно
Гамбит
13 / 13 / 1
Регистрация: 19.10.2009
Сообщений: 93
09.01.2011, 17:55  [ТС]     Линейный список. выравнивание текста.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>
#include <string.h>
#include <alloc.h>
#include<conio.h>
#define n 15
typedef struct list {
char word;
struct list *next;
} LIST;
int i,a[100];
 
LIST * read_list(LIST *lst)
{
    LIST *p;
    FILE *f;
    int k;
    f=fopen("f:\\1\\bc\\bin\\1.txt","r");
    if (!feof(f))
    {
        i=1;
        a[1]=0;
        lst=(LIST*)malloc(sizeof(LIST));
        p=lst;
        while(1)
        {
            p->word=fgetc(f);
            if(p->word=='\n')
            {
            i++;
            a[i]=0;
            }
            a[i]++;
            if (!feof(f))
            {
                p->next=(LIST*)malloc(sizeof(LIST));
                p=p->next;
            }
            else break;
 
        }
        p->next=NULL;
    }
    else printf("File pustoi\n");
    fclose(f);
    return lst;
}
 
 
 
void main()
{
clrscr();
LIST *lst;
int k;
read_list(lst);
printf("%d\n",i);
for(k=1;k<=i;k++)
printf("%d\n",a[k]);
}
я сделал немного проще и понятнее для себя=) щас буду с остальным думать=)

Добавлено через 19 часов 17 минут
не получается=((((
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <stdio.h>
#include <string.h>
#include <alloc.h>
#include<conio.h>
typedef struct list {
char word;
struct list *next;
} LIST;
int i,a[100],n;
 
LIST * read_list(LIST *lst)
{
        LIST *p;
        FILE *f;
        int k;
        f=fopen("f:\\1\\bc\\bin\\1.txt","r");
        if (!feof(f))
        {
                i=1;
                a[1]=0;
                lst=(LIST*)malloc(sizeof(LIST));
                p=lst;
                while(1)
                {
                        p->word=fgetc(f);
                        if(p->word=='\n')
                        {
                        i++;
                        a[i]=0;
                        }
                        a[i]++;
                        if (!feof(f))
                        {
                                p->next=(LIST*)malloc(sizeof(LIST));
                                p=p->next;
                        }
                        else break;
 
                }
                p->next=NULL;
        }
        else printf("File pustoi\n");
        fclose(f);
        return lst;
}
 
void write_list(LIST *lst)
{
int j,l=0,k;
LIST *p=lst;
FILE *f;
f=fopen("2.txt","w");
while(p)
{
for (j=1;j<=i;j++)
if(a[j]<n)
    {
        l=(n-a[j]-1)/2;
        printf("%d\n",l);
        for (k=0;k<l;k++)
        fputc(' ',f);
        while(p->word!='\n')
        {
        fputc(p->word,f);
        p=p->next;
        }
        fputc(p->word,f);
        p=p->next;
    }
}
}
void main()
{
int k;
clrscr();
LIST *lst;
scanf("%s",&n);
lst=read_list(lst);
write_list(lst);
printf("%d\n",i);
for(k=1;k<=i;k++)
printf("%d\n",a[k]);
}
программа должна выравнивать строки, если длина строки меньше ширины строк пользователя (n) но почему то, кол-во пробелов коорые я считаю (l) получаются просто огромные (n=17, a[j]=10,l=7058) если вместо н ставить просто число в формуле, тогда норм работает, но в конец файла добавляет очень много всякой фигни=(

Добавлено через 53 минуты
сделал.

Добавлено через 2 часа 44 минуты
ещё раз привет.

в общем у меня получилась такая программа
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <stdio.h>
#include <string.h>
#include <alloc.h>
#include<conio.h>
typedef struct list {
char word;
struct list *next;
} LIST;
int i,a[100];
 
LIST * read_list(LIST *lst)
{
        LIST *p;
        FILE *f;
        int k;
        f=fopen("f:\\1\\bc\\bin\\1.txt","r");
        if (!feof(f))
        {
                i=1;
                a[1]=0;
                lst=(LIST*)malloc(sizeof(LIST));
                p=lst;
                while(1)
                {
                        p->word=fgetc(f);
                        if(p->word=='\n')
                        {
                        i++;
                        a[i]=0;
                        }
                        a[i]++;
                        if (!feof(f))
                        {
                                p->next=(LIST*)malloc(sizeof(LIST));
                                p=p->next;
                        }
                        else break;
 
                }
                p->next=NULL;
        }
        else printf("File pustoi\n");
        fclose(f);
        return lst;
}
 
void write_list(LIST *lst,int N)
{
int j,l=0,k=0;;
LIST *p=lst;
FILE *f;
f=fopen("2.txt","w");
while(p)
{
    for (j=1;j<=i;j++)
    {
        if(a[j]<=N)
        {
            l=(N-a[j]-1)/2;
            for (k=0;k<l;k++)
            fputc(' ',f);
            while(p)
            {
                if (p->word=='\n')
                {
                    fputc(p->word,f);
                    p=p->next;
                    break;
                }
                else
                {
                    fputc(p->word,f);
                    p=p->next;
                }
            }
            k=0;
        }
        else
        {
            k=0;
            while(p)
            {
                if(p->word!='\n')
                {
                if(k<=N)
                {
                    fputc(p->word,f);
                    p=p->next;
                    k++;
                }
                else
                {
                    fputc('\n',f);
                    k=0;
                }
                }
                else
                break;
           }
        }
    }
}
}
void main()
{
int k,N;
clrscr();
LIST *lst;
scanf("%d",&N);
lst=read_list(lst);
write_list(lst,N);
printf("%d\n",i);
for(k=1;k<=i;k++)
printf("%d\n",a[k]);
}
программа должна выравнивать по центру текст. она это делает, если ВСЕ строки меньше ширины. есл хоть одна больше, тогда программа их только переносит, хотя должна часть переносить, а часть выравнивать.Так же программа отказывается работать, если N меньше всех строк.почему?

P.S. как можно реализовать литературный перенос слов? например если взять 2 массива- гласные и согласные. Прошу помощи
 
Текущее время: 19:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru