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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kashtan$$$
1 / 1 / 0
Регистрация: 26.11.2009
Сообщений: 49
#1

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

30.07.2010, 16:47. Просмотров 680. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2010, 16:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу до конца разобрать код программы (C++):

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

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

Не могу составить код программы - C++
В каждой строке текста записана (без ошибок) такая последовательность символов: a # b, де a i b - целые числа, # - одна из арифметических...

Не могу дописать код программы - C++
создать структуру типа: Код: struct employee {char*name; float salary; int stage; }; осуществить поиск элементов в...

Не могу сделать полиморфизм. Не могу до конца понять пример по этому поводу - C++
Есть такая задача: Класс Animal должен быть абстрактным, имеет имя и вес. Класс Reptile имеет habitate, который держит в себе среду...

Код программы на языке С++. Не могу понять в чем ошибка - C++
Где-то в коде есть ошибка... Помогите найти... Код: #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main () { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
30.07.2010, 17:09 #2
s = 10 присваевает переменной индекс 10 элемента множества, которого нет. так, проверка S[i] != s как бы должна проверять наличие символа в множестве
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
30.07.2010, 17:16 #3
Цитата Сообщение от iama Посмотреть сообщение
s = 10 присваевает переменной индекс 10 элемента множества, которого нет. так, проверка S[i] != s как бы должна проверять наличие символа в множестве
Не индекс, а символ под порядковым номером 10. Зачем - неизвестно.
Неудивительно, что разобрать ничего не получается. Автор, наверно, ни разу не слышал про форматирование кода. А что программа должна делать?
0
Kashtan$$$
1 / 1 / 0
Регистрация: 26.11.2009
Сообщений: 49
30.07.2010, 17:19  [ТС] #4
Что-то не очень я тебя понял факт еще в том что если s присваивать другие значения то программа правильно не выполняется....вот я и спрашиваю почему символьной переменной дано именно это значение???

Добавлено через 1 минуту
Как я понял программа считывает текст из файла и выводит его на экран а потом выводит слова начинающиеся с гласных но вот ну не могу понять для чего эта s и почему именно 10?
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
30.07.2010, 17:22 #5
Попробуй убрать s из программы.
0
Kashtan$$$
1 / 1 / 0
Регистрация: 26.11.2009
Сообщений: 49
30.07.2010, 17:23  [ТС] #6
Цитата Сообщение от Nameless One Посмотреть сообщение
Попробуй убрать s из программы.
пробовал программа тогда не правильно работает(((
0
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
30.07.2010, 17:29 #7
число 10 - несуществующий элемент множества. по логике, раз тут работает, с 11 тоже должно сработать
0
Kashtan$$$
1 / 1 / 0
Регистрация: 26.11.2009
Сообщений: 49
30.07.2010, 17:31  [ТС] #8
Цитата Сообщение от iama Посмотреть сообщение
число 10 - несуществующий элемент множества. по логике, раз тут работает, с 11 тоже должно сработать
в том то и соль что работает только когда 10 пробовал все остальные числа работает неправильно..
0
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
30.07.2010, 21:34 #9
Вспомним Макколнела - "Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете".
Вы знаете того, кто это сделал?
0
Kashtan$$$
1 / 1 / 0
Регистрация: 26.11.2009
Сообщений: 49
31.07.2010, 14:58  [ТС] #10
к сожалению нет(((( если бы знал я бы у него все спросил...
0
easybudda
Модератор
Эксперт CЭксперт С++
9627 / 5575 / 947
Регистрация: 25.07.2009
Сообщений: 10,710
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2010, 03:46
Привет! Вот еще темы с ответами:

Не могу разобрать задачу - C++
Когда вы вступите в Благотворительный Орден Программистов ( БОП ) , к вам могут обращаться на заседаниях БОП по вашему настоящему имени, по...

Разобрать код с++ - C++
Всем доброго времени суток. Дело такое нужно разобрать код явных ошибок нету но при компиляции вижуалка вылетает с ошибкой вроде в хидере...

Разобрать код - C++
Всем привет помогите разобрать код, программа создана для подсчета что вот это вот означает? double s = 1.0 / 6.0, e, t = 1.0 /...

Разобрать код - C++
Помогите разобраться с кодом!Можите рассписать где что находится пожалуйста! #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.08.2010, 03:46
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru