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

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

Войти
Регистрация
Восстановить пароль
 
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,108
#1

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

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

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

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

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

Подскажите, как исправить ошибку - C++
void crop(char *str) { while (*str) { char i = 'q'; if (*str == ' ') { *str = i; //ошибка здесь cout &lt;&lt; str &lt;&lt; '\n'; ...

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

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

8
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
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
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,108
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
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
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
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,108
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
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.05.2012, 01:04 #6
Цитата Сообщение от Helldrg Посмотреть сообщение
Cпасибо, и еще почему у меня вот эта часть кода не работает:
что именно не работает? Выдает ошибку или не еще что-то?
0
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,108
19.05.2012, 01:13  [ТС] #7
когда у меня выполняется вот эта функция у меня ничего не выводит программа:
Цитата Сообщение от Helldrg Посмотреть сообщение
fun(1,str);
А по идее должна слово на оборот вывести
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
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
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,108
19.05.2012, 01:25  [ТС] #9
Спасибо большое!!!
0
19.05.2012, 01:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2012, 01:25
Привет! Вот еще темы с ответами:

Подскажите, как исправить 1 ошибку в программе? - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; double min = 0; /* зовнiшня змiнна */ int...

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

Написала программу, выводит ошибку, подскажите как исправить - C++
Вот сама задача:Вычислить и вывести на экран значения функции y = f(x) в точках x0=xнач, x1=x0+h, x2=x1+h, … xN = xкон, где h =(xкон –...

Вот код, подскажите как исправить ошибку, пожалуйста??? - C++
Вот вибивает такие ошибки: 1&gt;c:\users\user\desktop\ооп 6\ооп 6\ооп6.cpp(40) : error C2661: D3:: D3: нет перегруженной функции,...


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

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

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