29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
1

Подскажите как исправить ошибку

18.05.2012, 23:16. Показов 727. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите, как исправить ошибку при выполнении программы:
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
#include <iostream>
#include <stdarg.h>
using namespace std;
 
void fun(int n,...)
{
    char *str3 = new char[100];
    va_list mas;
    va_start(mas,n);
    if (n == 1)
    {
        str3 = va_arg(mas,char*);
        char *str4 = new char[100];
        for (int i = 0; i!=strlen(str3);i++)
        {
            str4[i] = str3[strlen(str3)-i];
        }
        cout << str4 << endl;
        delete[] str4;
    }
    else if (n == 2)
    {
        for (int i = 1; i <= n; i++)
        {
            str3 = va_arg(mas,char*);
            cout << strlen(str3) << " | " << str3[strlen(str3)-1] << endl;
        }
    }
    va_end(mas);
    delete[] str3;
}
 
void main()
{
    char str[] = "Hello";
    char str2[] = "Helllo world!";
 
    fun(2,str,str2);
    cout << endl;
    fun(1,str);
 
    int tt;
    cin >> tt;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2012, 23:16
Ответы с готовыми решениями:

Подскажите как исправить ошибку. прога ломается на 79 строке. а ошибку не выдает
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int chisla(int...

подскажите как исправить ошибку
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #define eps 1.e-6 double f_ln(...

Подскажите как исправить ошибку
Мужики, программы пишу на Dev-C++ И при любой программе выдаёт ошибку,как исправить это?

Подскажите, как исправить ошибку
void crop(char *str) { while (*str) { char i = 'q'; if (*str == ' ') { *str = i;...

8
Эксперт С++
4726 / 2547 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
18.05.2012, 23:55 2
См. комментарии:
Цитата Сообщение от Helldrg Посмотреть сообщение
C++
1
2
3
4
for (int i = 0; i!=strlen(str3);i++)
 {
 str4[i] = str3[strlen(str3)-i];// при i равном 0, выход за границы массива str3
 }
0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
19.05.2012, 00:20  [ТС] 3
Цитата Сообщение от valeriikozlov Посмотреть сообщение
C++
1
2
3
4
for (int i = 0; i!=strlen(str3);i++)
{
str4[i] = str3[strlen(str3)-i];// при i равном 0, выход за границы массива str3
}
Я попробывал поставить так но все равно ошибка вылазит:
C++
1
2
3
4
for (int i = 1; i!=strlen(str3);i++)
        {
            str4[i] = str3[strlen(str3)-i];
        }
0
Эксперт С++
4726 / 2547 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
19.05.2012, 00:42 4
Цитата Сообщение от Helldrg Посмотреть сообщение
Я попробывал поставить так но все равно ошибка вылазит:
см комментарии:

Цитата Сообщение от Helldrg Посмотреть сообщение
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
void fun(int n,...)
{
 char *str3 = new char[100]// выделяете память, указатель на выделенную память в переменной str3;
 va_list mas;
 va_start(mas,n);
 if (n == 1)
 {
 str3 = va_arg(mas,char*);// вот в этой строке Вы меняете значение str3 (str3 больше не указывает на выделенную ранее память)
 char *str4 = new char[100];
 for (int i = 0; i!=strlen(str3);i++)
 {
 str4[i] = str3[strlen(str3)-i];
 }
 cout << str4 << endl;
 delete[] str4;
 }
 else if (n == 2)
 {
 for (int i = 1; i <= n; i++)
 {
 str3 = va_arg(mas,char*);// и в этой строке Вы меняете значение str3 (str3 больше не указывает на выделенную ранее память)
 cout << strlen(str3) << " | " << str3[strlen(str3)-1] << endl;
 }
 }
 va_end(mas);
 delete[] str3;// пытаетесь освободить ранее выделенную память, но str3 указывает совсем на другое место.
}
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
19.05.2012, 00:59  [ТС] 5
Cпасибо, и еще почему у меня вот эта часть кода не работает:
C++
1
2
3
4
5
6
7
8
9
10
11
if (n == 1)
{
str3 = va_arg(mas,char*);// вот в этой строке Вы меняете значение str3 (str3 больше не указывает на выделенную ранее память)
char *str4 = new char[100];
for (int i = 0; i!=strlen(str3);i++)
{
str4[i] = str3[strlen(str3)-i];
}
cout << str4 << endl;
delete[] str4;
}
0
Эксперт С++
4726 / 2547 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
19.05.2012, 01:04 6
Цитата Сообщение от Helldrg Посмотреть сообщение
Cпасибо, и еще почему у меня вот эта часть кода не работает:
что именно не работает? Выдает ошибку или не еще что-то?
0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
19.05.2012, 01:13  [ТС] 7
когда у меня выполняется вот эта функция у меня ничего не выводит программа:
Цитата Сообщение от Helldrg Посмотреть сообщение
fun(1,str);
А по идее должна слово на оборот вывести
0
Эксперт С++
4726 / 2547 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
19.05.2012, 01:21 8
Эту часть сделайте вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    if (n == 1)
    {
        str3 = va_arg(mas,char*);
        char *str4 = new char[100];
        for (int i = 0; i!=strlen(str3);i++)
        {
            str4[i] = str3[strlen(str3)-i-1];
        }
        str4[strlen(str3)]='\0';
        cout << str4 << endl;
        delete[] str4;
    }
1
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
19.05.2012, 01:25  [ТС] 9
Спасибо большое!!!
0
19.05.2012, 01:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2012, 01:25
Помогаю со студенческими работами здесь

Подскажите как исправить ошибку
писал программу по заданию и не могу понять где ошибка но у меня она решает не правильно...

Подскажите, как исправить 1 ошибку в программе?
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; double min = 0; ...

Подскажите, пожалуйста, как исправить ошибку
Условие задачи: Разработать программу для работы с БД, которая обеспечивает автоматизированную...

Ребят, подскажите как исправить ошибку...
не могу понять , много что перепробывал компилятор C++ builder codegear вот собственно сам код...


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

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

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