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

Описать алгоритм - ступенчатая аннотация - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Do While операторы http://www.cyberforum.ru/cpp-beginners/thread219444.html
Как эту программу сделать с помощью операторов do while? #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> int main() { char str; int mas={0}, len, i;
C++ Опять работа с текстовыми файлами!! Привет всем!! Отодрал всю гуглю, не могу найти внятные ответы на внятный вопрос - как мне открыть текстовый файл, изнасиловать его, записать, и закрыть. Первые же результаты поиска дали вполне замечательные куски кода с использованием пространства FILE. Сходу пишем: FILE e = fopen(filename); http://www.cyberforum.ru/cpp-beginners/thread219429.html
Распечатать в столбик среднее геометрическое чисел C++
Нужно написать простенькую на вид программку: Написать программу с использованием цикла for, которая вводит с клавиатуры два вещественных числа и распечатывает в столбик их среднее геометрическое.
работа со строками!! C++
В заданном файле найти и напечатать строки заголовка. Строкой заголовка считать строку, до и после которой оставлена хотя бы одна пустая строка (состоящая только из разделителей).
C++ Изменить вывод матрицы на консоль согласно условию http://www.cyberforum.ru/cpp-beginners/thread219395.html
Ребят, помогите, пожалуйста с доп. вопросом по лабе. Надо немного изменить прогу, чтобы переформированная матрица выводилась в форме матрицы, т.е. в программе выводит а(0.0)=1 в(0.1)=2 а должно быть так: матрица (1 2) Вот код программы
C++ Записать матрицу, как квадратную Всем здравствуйте. Ребят, помогите, пожалуйста с доп. вопросом по лабе. Надо записать переформированную матрицу, которая получилась, как квадратную Было задание: Дана матрица из N строк и М столбцов (1<N<=100, 1<M<=50). Выполнить заданную операцию над матрицей: Переоформить матрицу таким образом, чтобы ее строки располагались по неубыванию их поэлементных сумм. Вот код программы подробнее

Показать сообщение отдельно
SHMELE
1 / 1 / 0
Регистрация: 22.12.2010
Сообщений: 4

Описать алгоритм - ступенчатая аннотация - C++

24.12.2010, 15:48. Просмотров 407. Ответов 2
Метки (Все метки)

Программа должна делать ступенчатую аннотацую, хотел делать считывание посимвольное но там тогда очень громоздко и неудобно пришлось бы отслеживать слова . например case ,
пришлось читать построчно и грузить строку в массив
пока что проблема в том что нельзя контролировать отступ читаемой в данный момент строки.
т.е.

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 <iostream>
#include <stdio.h>
using namespace std;
int main()
{
char Buf[10000], NameIn[50], NameOut[50];
char openedBracket = '{';
char closedBracket = '}';
char nextString = '\n';
int N=0,n=0, j, i, check=0, check2=0, tabs;
FILE *in, *out;
 
printf("Enter Input File Name:\n"); 
scanf("%s",NameIn);
printf("Enter Output File Name:\n"); 
scanf("%s",NameOut);
 
in=fopen(NameIn,"r");
out=fopen(NameOut,"w");
 
if ( in!=NULL ) 
{ 
 
    while((fgets(Buf, 10000, in))!=NULL)
    {
        for (int i=0; i<10000; i++)
        {
    //----------------------------------------------------------------------------------------------------------------------------------
            if (Buf[i] == openedBracket)
            {
                N++;
            }
            if (Buf[i] == closedBracket)
            {
                N--;
                n=1;
            }
 
    //----------------------------------------------------------------------------------------------------------------------------------
        }
        fprintf(out,"%s",Buf);      //вот тут выводитмся строка, но она в конце уже имеет символ 
        for (tabs=0;tabs<N-n;tabs++)  //перехода на новую , т .е.  я могу отследить скобку 
                    {                     //в этой строке и сделать отступ в следующей,
                        fprintf (out,"\t"); //но, если в этой строке у нас 
                    }//закрывающая скобка то мне нужно и её тоже сместить 
                                                           //влево на 1 табуляцию
        n=0;
    }
}
else 
{
    cout << "Can't find file!\n";
    system("Pause");
    return 0;
}
 
fclose (in);
fclose (out);
}
вот результат работы программы
БЫЛО

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
#include <stdio.h> 
#include <stdlib.h> 
#include <cstring.h> 
//---------------------------------------------------------------------------  
struct students 
{ 
char FIO [50]; 
char VUZ [50]; 
double kol_bal; 
int god; 
unsigned int vozrast; 
}; 
  
int main(int argc, char* argv[]) 
{ 
students ST_MY[10];       
char S1[256],NM[50];    
FILE *f; 
int K,nn,i;                     
nn=0; 
printf("Enter File Name:\n"); 
scanf("%s",NM); 
f=fopen(NM,"r"); 
if ( f!=NULL ) { 
while ( !feof(f)) 
{ 
K=1; 
fgets(S1,50,f); 
for (char *t=strtok(S1," ") ; t ;t=strtok(0," ")) 
{ 
switch (K) {                                       
case 1: 
strcpy(ST_MY[nn].FIO,t); K++;  break; 
case 2: 
strcpy(ST_MY[nn].VUZ,t);  K++; break; 
case 3: 
ST_MY[nn].kol_bal=static_cast<double>(*t); K++;  break; 
case 4: 
ST_MY[nn].god=static_cast<int>(*t);  K++; break; 
case 5: 
ST_MY[nn].vozrast=static_cast<unsigned int>(*t); K++;  break; 
default: 
printf("Error\n"); 
; 
} 
} 
nn++;          
} 
fclose(f); 
} 
else 
{ 
printf("error\n"); 
} 
f=fopen("out.txt","w");    
for (i = 0; i <= 10; i++) { 
fprintf(f,"%s\n",ST_MY.FIO); 
fprintf(f,"%s\n",ST_MY.VUZ); 
fprintf(f,"%lf\n",ST_MY.kol_bal); 
fprintf(f,"%d\n",ST_MY.god); 
fprintf(f,"%d\n",ST_MY.vozrast); 
} 
fclose(f); 
system("Pause"); 
return 0; 
}
-------------------------------------------------------------------------------------------------
СТАЛО

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
#include <stdio.h> 
#include <stdlib.h> 
#include <cstring.h> 
//---------------------------------------------------------------------------  
struct students 
{ 
    char FIO [50]; 
    char VUZ [50]; 
    double kol_bal; 
    int god; 
    unsigned int vozrast; 
    }; 
  
int main(int argc, char* argv[]) 
{ 
    students ST_MY[10];       
    char S1[256],NM[50];    
    FILE *f; 
    int K,nn,i;                     
    nn=0; 
    printf("Enter File Name:\n"); 
    scanf("%s",NM); 
    f=fopen(NM,"r"); 
    if ( f!=NULL ) { 
        while ( !feof(f)) 
        { 
            K=1; 
            fgets(S1,50,f); 
            for (char *t=strtok(S1," ") ; t ;t=strtok(0," ")) 
            { 
                switch (K) {                                       
                    case 1: 
                        strcpy(ST_MY[nn].FIO,t); K++;  break; 
                        case 2: 
                        strcpy(ST_MY[nn].VUZ,t);  K++; break; 
                        case 3: 
                        ST_MY[nn].kol_bal=static_cast<double>(*t); K++;  break; 
                        case 4: 
                        ST_MY[nn].god=static_cast<int>(*t);  K++; break; 
                        case 5: 
                        ST_MY[nn].vozrast=static_cast<unsigned int>(*t); K++;  break; 
                        default: 
                        printf("Error\n"); 
                        ; 
                        } 
                } 
            nn++;          
                } 
        fclose(f); 
            } 
    else 
        { 
            printf("error\n"); 
            } 
    f=fopen("out.txt","w");    
        for (i = 0; i <= 10; i++) { 
            fprintf(f,"%s\n",ST_MY.FIO); 
            fprintf(f,"%s\n",ST_MY.VUZ); 
            fprintf(f,"%lf\n",ST_MY.kol_bal); 
            fprintf(f,"%d\n",ST_MY.god); 
            fprintf(f,"%d\n",ST_MY.vozrast); 
            } 
    fclose(f); 
        system("Pause"); 
        return 0; 
        }
Все строки с закрывающимися скобками нужно сместить влево на 1 таб
помогите кто чем может
не хотелось бы усложнять все это и уходить от fgets
буду очень благодарен

Добавлено через 9 минут
Вопрос снят, другой вопрос, как отследить и сдвинуть на 1 таб вправо код между двумя case?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru