2 / 2 / 0
Регистрация: 26.11.2009
Сообщений: 49
1

Не могу до конца разобрать код программы

30.07.2010, 16:47. Показов 905. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание выглядит следующим образом дан код программы его надо прочитать и разобрать, т.е. объяснить выполнение программы. И вот непосредственно сам код
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
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#include<string.h>
#include<ctype.h>
void faili()
{FILE *xp;char S[256],s,sim[]={'i','u','o','e','a','I','O','A','U','E'};
int i=0,nb=0,kb=0,c,n,k=0;
xp=fopen("1.dat","r");
if(xp==NULL){perror("Oshibka!!!\n");}
puts("\n Sodergimoe Faila");
 
 
 
while((c=getc(xp))!=EOF)
{
S[i]=c;printf("%c",S[i]);
i++;}
n=i;
s=10;
printf("\n\n slova nachinaushiesya s glasnih \n");
for(i=0;i<=n;i++)
if(S[i]!=' ' && kb!=n && S[i]!=s)kb++;
else
{c=0;
for(int j=0;j<10;j++)
if(S[nb]==sim[j])c++;
if(c==1)
{printf("\n");
for(nb;nb<kb;nb++)
{printf("%c",S[nb]);
if(nb==kb-1) k++;}
nb=kb+=1;
}
else nb=kb+=1;
}
printf("\n kol-vo slov %d",k);
 
 
 
 
 
 
fclose(xp);
 
/*xp=fopen("vz.dat","a");
if(xp==NULL){perror("Oshibka!!!\n");}
 
while((s=getchar())!='e')fprintf(xp,"kolvo slov nachinaushihsya s glasnih ravno %d .",k++);
fclose(xp);*/
getch();
 
}
main()
{
clrscr();faili();
 
 
 
getch();}
Мне непонятно зачем s=10 ? Что это значит? И почему в условии S[i]!=s?Для чего это?ну и непонятен смысл вот этой строки nb=kb+=1; что оно делает?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2010, 16:47
Ответы с готовыми решениями:

Не могу разобрать код структуры
struct point { int x, y; point(int xx = 0, int yy = 0) : x(xx), y(yy) {}; // &lt;-что это? };...

Как приведенный код выводит ближайшую степень двойки? Разобрать работу программы
unsigned k ; cin&gt;&gt;k; for (--k;k&amp;(k+1);k|=k+1); cout&lt;&lt;++k; вот есть программа?что она делает - я...

Не могу разобрать код
String a = &quot;Antonov:Vlad , aa : b&quot;; String kk = a.split(Pattern.quote(&quot;:&quot;)); Log.d(kk);Объясните...

Не могу разобрать код
Есть расширение для хрома, но не могу разобраться в коде, а нужно поменять мелочь. Кто сможет...

10
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
30.07.2010, 17:09 2
s = 10 присваевает переменной индекс 10 элемента множества, которого нет. так, проверка S[i] != s как бы должна проверять наличие символа в множестве
0
Эксперт С++
5827 / 3478 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
30.07.2010, 17:16 3
Цитата Сообщение от iama Посмотреть сообщение
s = 10 присваевает переменной индекс 10 элемента множества, которого нет. так, проверка S[i] != s как бы должна проверять наличие символа в множестве
Не индекс, а символ под порядковым номером 10. Зачем - неизвестно.
Неудивительно, что разобрать ничего не получается. Автор, наверно, ни разу не слышал про форматирование кода. А что программа должна делать?
0
2 / 2 / 0
Регистрация: 26.11.2009
Сообщений: 49
30.07.2010, 17:19  [ТС] 4
Что-то не очень я тебя понял факт еще в том что если s присваивать другие значения то программа правильно не выполняется....вот я и спрашиваю почему символьной переменной дано именно это значение???

Добавлено через 1 минуту
Как я понял программа считывает текст из файла и выводит его на экран а потом выводит слова начинающиеся с гласных но вот ну не могу понять для чего эта s и почему именно 10?
0
Эксперт С++
5827 / 3478 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
30.07.2010, 17:22 5
Попробуй убрать s из программы.
0
2 / 2 / 0
Регистрация: 26.11.2009
Сообщений: 49
30.07.2010, 17:23  [ТС] 6
Цитата Сообщение от Nameless One Посмотреть сообщение
Попробуй убрать s из программы.
пробовал программа тогда не правильно работает(((
0
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
30.07.2010, 17:29 7
число 10 - несуществующий элемент множества. по логике, раз тут работает, с 11 тоже должно сработать
0
2 / 2 / 0
Регистрация: 26.11.2009
Сообщений: 49
30.07.2010, 17:31  [ТС] 8
Цитата Сообщение от iama Посмотреть сообщение
число 10 - несуществующий элемент множества. по логике, раз тут работает, с 11 тоже должно сработать
в том то и соль что работает только когда 10 пробовал все остальные числа работает неправильно..
0
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
30.07.2010, 21:34 9
Вспомним Макколнела - "Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете".
Вы знаете того, кто это сделал?
0
2 / 2 / 0
Регистрация: 26.11.2009
Сообщений: 49
31.07.2010, 14:58  [ТС] 10
к сожалению нет(((( если бы знал я бы у него все спросил...
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12242 / 7409 / 1741
Регистрация: 25.07.2009
Сообщений: 13,602
01.08.2010, 03:46 11
Цитата Сообщение от Kashtan$$$ Посмотреть сообщение
программа считывает текст из файла и выводит его на экран а потом выводит слова начинающиеся с гласных
+ считает все слова и отдельно те, что с гласной начинаются (кстати, буква Y в английском алфавите тоже гласной считается)
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
#ifndef MAX_PATH
#define MAX_PATH 1024
#endif
    
#define DELIM " ,.;:!?\t\n"
 
int main(void){
    char path[MAX_PATH], * p, * buf;
    long len, cntVowels, cntAll;
    FILE * f;
    const char * VOWELS = "AEIOUY";
    
    printf("File name: ");
    if ( ! fgets(path, MAX_PATH, stdin) ){
        perror("fgets");
        exit(EXIT_FAILURE);
    }
    if ( p = strrchr(path, '\n') )
        *p = '\0';
    
    if ( ( f = fopen(path, "rb") ) == NULL ){
        perror("fopen");
        exit(EXIT_FAILURE);
    }
    
    fseek(f, 0, SEEK_END);
    if ( ( len = ftell(f) ) < 1 ){
        fprintf(stderr, "Wrong or empty file!\n");
        exit(EXIT_FAILURE);
    }
    rewind(f);
    if ( ( buf = (char*)malloc(len + 1) ) == NULL ){
        perror("malloc");
        exit(EXIT_FAILURE);
    }
    if ( fread(buf, 1, len, f) != len ){
        fprintf(stderr, "Error reading file!\n");
        exit(EXIT_FAILURE);
    }
    buf[len] = '\0';
    
    if ( fclose(f) ){
        perror("fclose");
        exit(EXIT_FAILURE);
    }
    
    printf("\nFile contents:\n\n%s\n", buf);
    cntVowels = cntAll = 0;
    printf("Start by vowels:\n");
    for ( p = strtok(buf, DELIM); p; p = strtok(NULL, DELIM) ){
        ++cntAll;
        if ( strchr(VOWELS, toupper(*p)) ){
            ++cntVowels;
            printf("%s\n", p);
        }
    }
    
    printf("\nAll words: %d\nStarts by vowels: %d\n", cntAll, cntVowels);
    
    free(buf);
    exit(EXIT_SUCCESS);
}
0
01.08.2010, 03:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.08.2010, 03:46
Помогаю со студенческими работами здесь

Не могу разобрать код
Здравствуйте! Объясните пожалуйста, как понимать вот этот код: var multTable = ; for (var v = 0;...

Разобрать код программы
Дана строка символов. Группы символов, разделенные одним или несколькими пробелами и не содержащие...

Разобрать код программы
#include &lt;stdio.h&gt; int main() { int i=1, sum=0, s=1, N, n; printf(&quot;Enter N\n&quot;); ...

Ввод данных; не могу разобрать код
Добрый день. Моей конечной целью является программирование игр для Android. Поэтому я решил хотя бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru