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

Стоит задача сравнение и подсчета символов строки. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Где ошибка в формуле ??? http://www.cyberforum.ru/cpp-beginners/thread350295.html
Задача Код void lab1::funB( double x, double y, double z ) { double b1 = pow( fabs( y + z ), 0.2 ); double b2 = pow( fabs( z ), 1.34 ); double b3 = pow( y - z, 2 ); double b4 = 1 + ( pow( sin( z ), 2 ) );
C++ Какое добавить условие чтобы произведение при отрицательных числах равнялось 0? #include<stdio.h> #include<conio.h> #include<iostream.h> #include<math.h> void main() { int sum,razn,proizv,i,minA,minB,min; const int n=4; int A,B,P,mina,minb; http://www.cyberforum.ru/cpp-beginners/thread350288.html
Вывести К-тый отрицательный элемент в упорядоченном дереве поиска с просмотром TLR C++
Должен выводиться К-тый отрицательный элемент в упорядоченном дереве поиска с просмотром TLR *.cpp #include "TREE.h" int main() { NodePtr t; int k, e, rez; TREE str;
C++ Где ошибки
Не получается отладить: *.cpp #include "strf.h" int main() { STRF strf; return 0; }
C++ найти ошибку в задаче шахматы http://www.cyberforum.ru/cpp-beginners/thread350278.html
здравствуйте! не могу найти ошибку в своем решений. у кого какие идеи? условие задачи: Азиз и Иван решили поиграть в шахматы. Однако у них не нашлось целой шахматной доски, поэтому Иван склеил ее из нескольких кусков. Каждый кусок вырезан из правильной шахматной доски. Однако Азиз считает что на полученной доске просто невозможно играть в шахматы. Поэтому вместо игры в шахматы они решили...
C++ помогите с решением написать программу составления пятиугольника с вершинами вершинами (100,100), (150,100), (170,120), (150,140), (100,100). Закрасить поле с другим цветом. на языке dev-c++ подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.09.2011, 17:03     Стоит задача сравнение и подсчета символов строки.
И плюс.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
char * DecToBinTetr(long num)
{
        int i = 0;
        char bin[] = "0000";
        do
        {
                bin[i] = '0';
                if(num%2)
                        bin[i] = '1';
                num /= 2;
                i++;
        }
        while(0 < num);
        return &bin[0];
}
 
int main()
{
    std::cout << (void*)DecToBinTetr(32568) << std::endl;
}
Код
forever@pterois:~/My_pro1$ ./test_cpp 
*** stack smashing detected ***: ./test_cpp terminated
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x50)[0xb7621df0]
/lib/i386-linux-gnu/libc.so.6(+0xe5d9a)[0xb7621d9a]
./test_cpp[0x80486c6]
./test_cpp[0x80486dd]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0xb7552e37]
./test_cpp[0x80485c1]
======= Memory map: ========
08048000-08049000 r-xp 00000000 fb:03 5507222    /home/forever/My_pro1/test_cpp
08049000-0804a000 r--p 00000000 fb:03 5507222    /home/forever/My_pro1/test_cpp
0804a000-0804b000 rw-p 00001000 fb:03 5507222    /home/forever/My_pro1/test_cpp
09e3c000-09e5d000 rw-p 00000000 00:00 0          [heap]
b753a000-b753c000 rw-p 00000000 00:00 0 
b753c000-b7696000 r-xp 00000000 fb:01 654142     /lib/i386-linux-gnu/libc-2.13.so
b7696000-b7697000 ---p 0015a000 fb:01 654142     /lib/i386-linux-gnu/libc-2.13.so
b7697000-b7699000 r--p 0015a000 fb:01 654142     /lib/i386-linux-gnu/libc-2.13.so
b7699000-b769a000 rw-p 0015c000 fb:01 654142     /lib/i386-linux-gnu/libc-2.13.so
b769a000-b769d000 rw-p 00000000 00:00 0 
b769d000-b76b7000 r-xp 00000000 fb:01 654614     /lib/i386-linux-gnu/libgcc_s.so.1
b76b7000-b76b8000 r--p 00019000 fb:01 654614     /lib/i386-linux-gnu/libgcc_s.so.1
b76b8000-b76b9000 rw-p 0001a000 fb:01 654614     /lib/i386-linux-gnu/libgcc_s.so.1
b76b9000-b76ba000 rw-p 00000000 00:00 0 
b76ba000-b76de000 r-xp 00000000 fb:01 682081     /lib/i386-linux-gnu/libm-2.13.so
b76de000-b76df000 r--p 00023000 fb:01 682081     /lib/i386-linux-gnu/libm-2.13.so
b76df000-b76e0000 rw-p 00024000 fb:01 682081     /lib/i386-linux-gnu/libm-2.13.so
b76e0000-b77bf000 r-xp 00000000 fb:01 135842     /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14
b77bf000-b77c3000 r--p 000de000 fb:01 135842     /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14
b77c3000-b77c4000 rw-p 000e2000 fb:01 135842     /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14
b77c4000-b77cb000 rw-p 00000000 00:00 0 
b77df000-b77e1000 rw-p 00000000 00:00 0 
b77e1000-b77e2000 r-xp 00000000 00:00 0          [vdso]
b77e2000-b77fe000 r-xp 00000000 fb:01 682083     /lib/i386-linux-gnu/ld-2.13.so
b77fe000-b77ff000 r--p 0001b000 fb:01 682083     /lib/i386-linux-gnu/ld-2.13.so
b77ff000-b7800000 rw-p 0001c000 fb:01 682083     /lib/i386-linux-gnu/ld-2.13.so
bf93d000-bf95e000 rw-p 00000000 00:00 0          [stack]
Аварийный останов
Добавлено через 2 минуты
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
#include <stdlib.h>//malloc realloc
#include <stdio.h>  //i\o
#include <ctype.h>  //toupper
#include <string.h>
 
//Ввод тектса пока не встретим ch_end
char * GetInputText(char * str, long &sLen, char ch_end);
//Получение тетрады из 10-го числа
char * DecToBinTetr(long num);
bool CompStrTetrada(char * str, const char * sTetrada);
 
int main()
{
        long i,j,sLen,n = 16;
        //Всего тетрад 16 : 1111 = 2^0 + 2^1 + 2^2 + 2^3 = 15
        int iTetrads[16];//Число каждой тетерады в тектсе 
    
        char buf[4];
        char * s;
        char * str = (char *)malloc(sizeof(char));
                for(j = 0; j < n; j++)
                {
                        printf("%s\r\n",strcpy(buf,DecToBinTetr(j)));
                        iTetrads[j] = 0;//Обнуляем счётчики тетерад
                }
 
/*              printf("Enter text\r\n:>");
        str = GetInputText(str, sLen, '\n');
                //Добавляем текст нулями текст если строка содержала не кратное 4 число символов
                if((j = sLen % 4) != 0)
                {
                        str = (char *)realloc(str,(sLen + (4 - j))/sizeof(char));
                        for(i = sLen; i < sLen + (4 - j); i++)
                                str[i] = '0';
                        str[sLen + (4 - j)] = '\0';
                }
 
        printf("\tSplit string on tetrads\r\n");
        for(i = 0; i < sLen; i += 4)
                {
                        s = str + i;
                        printf("%c%c%c%c ",s[0],s[1],s[2],s[3]);
                        for(j = 0; j < n; j++)
                        {
                                strcpy(buf,DecToBinTetr(j));
                                //Если нашли тетраду увеличиваем счётчик соответсвующей тетрады на 1-цу
                                if(CompStrTetrada(s, buf))
                                        iTetrads[j] += 1;
                        }
                }
                printf("\r\n\tList of tetrads in text\r\n");
                for(j = 0; j < n; j++)
                {
                        strcpy(buf,DecToBinTetr(j));
                        printf("%s : %d\r\n", buf, iTetrads[j]);
                }*/
        free((void *)str);
        free((void *)iTetrads);
    return 0;
}
 
char * GetInputText(char * str, long &sLen, char ch_end)
{
        if(str != NULL)
    {
                sLen = 0;
        while((str[sLen] = getchar()) != ch_end)
                        str = (char *)realloc(str,(1 + (sLen = sLen + 1))*sizeof(char));
        str[sLen] = '\0';//Убрали мусор вконце
    }
    return str;
}
 
char * DecToBinTetr(long num)
{
        int i = 0;
        char bin[] = "0000";
        do
        {
                bin[i] = '0';
                if(num%2)
                        bin[i] = '1';
                num /= 2;
                i++;
        }
        while(0 < num);
        return &bin[0];
}
 
bool CompStrTetrada(char * str, const char * sTetrada)
{
        bool bRet = false;
        char sCmp[4];
        strncpy(sCmp,str,4);//Копируем 4 первых символа строки str
        if(strcmp(sCmp,sTetrada) == 0)
                bRet = true;
        return bRet;
}
Код
forever@pterois:~/My_pro1$ ./test_cpp 
�
1000
0100
1100
0010
1010
0110
1110
0001
1001
0101
1101
0011
1011
0111
1111
Ошибка сегментирования
 
Текущее время: 16:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru