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

в функцию передается два строковых указателя - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Отсортировать массив структур по фамилии или по году http://www.cyberforum.ru/cpp-beginners/thread178230.html
// structura.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <windows.h> #include <stdlib.h> #include <stdio.h> #include <time.h>
C++ Динамическое решение Всем привет! Что-то никак не соображу, как решить 2 задачи методом динамического программирования. Задачи очень сходны и поняв, как решается одна из них, думаю, со второй проблем не будет. Задача 1 Даны N (2 ≤ N ≤ 24) целых чисел X1, X2, ..., XN (0 ≤ Xi ≤ 50 000 000). Расставить между ними знаки "+" и "-" так, чтобы значение получившегося выражения было равно заданному целому S (-1 000 000... http://www.cyberforum.ru/cpp-beginners/thread178221.html
Уножение разряженных матриц C++
Здравствуйте, у меня задание создать метод класса matrix, для умножения. Саму структуру классов я понимаю, я не могу понять, как перемножить матрицы без перебора всех индексов (как с обычными матрицами), так как тогда нету смысла в разряженности. Вот код: #ifndef rmatr #define rmatr #include<iostream.h> #include<conio.h> #include<stdio.h>
Печать всех квадратов в интервале от А до Б C++
Печать всех квадратов в интервале от А до Б. Пример: Input:15; 29 Output:14; 49 Пожалуйста дяди программисты помогите!:wall:
C++ В символьной строке удалить все слова состоящие из нечётного количества букв. http://www.cyberforum.ru/cpp-beginners/thread178208.html
В символьной строке удалить все слова состоящие из нечётного количества букв.
C++ Программа с использованием множественного выбора Здравствуйте!Помогите пож-та решить задачу на Си: Пользователь вводит с клавиатуры наименование геометрического тела (шар, куб, цилиндр, конус), а затем необходимые размеры (радиус, длина или длины сторон, высоту и т.п.). Программа возвращает массу тела. Плотность задается с клавиатуры. Заранее всем огромное спасибо!!! подробнее

Показать сообщение отдельно
Don Vito
 Аватар для Don Vito
9 / 9 / 1
Регистрация: 22.11.2009
Сообщений: 162
20.10.2010, 21:05  [ТС]     в функцию передается два строковых указателя
Я понял тебя, спасибо за советы!))

Конечно, лучше не трогать указатель на выделенную память...

Знаешь, мне только одно не дает покой -

почему вот так вот код работает:
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
99
100
101
#include <iostream>
#include <string>
using namespace std;
 
char** sbp (char *A, char *B){
 
 
       int sizeA = 0;
       int sizeB = 0;
       int quant = 0;
       int count = 0;
       while (*A) {
 
               sizeA++;
               A++;
       }
       while (*B){
 
               sizeB++;
           B++;
       }
 
       char **p;
 
       p = new char *[sizeA];
 
       cout << p << endl;
 
       if (sizeA < sizeB){
 
               cout << "The second world bigger than sentance!" << endl;
               return 0;
       }else{
 
               A-=sizeA;
               B-=sizeB;
 
       while (*A){
 
               if (*A == *B) {
 
 
                       *p = A;
                       p++;
                       quant++;
                       count++;
                       cout << "At " << count <<" index!" << endl;
 
               }else{
 
                       count++;
                       cout << "No!"<< endl;
               }
 
               A++;
       }
       }
 
       cout << p << endl;
       cout << quant << "   "<< sizeA<< endl;
 
      
 
             /*  while (quant < sizeA  ){
 
               quant++;
                   cout << p << endl;
       p++;
               }*/
     
       cout << quant << "   "<< sizeA<< endl;
 
       p-=quant;
 
       cout << p << endl;
 
       for (int i = 0; i < quant; i ++){
       
           cout << *p << endl;
           p++;
               }
 
       p-=quant;
 
        cout << p << endl;
 
       return p;
       
}
 
int main(){
 
char s1[80], s2[80];
 
gets(s1);
gets(s2);
char **q;
 
q = sbp(s1,s2);
 
cout << *q << endl;
а вот так нет

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
99
100
101
102
103
#include <iostream>
#include <string>
using namespace std;
 
char** sbp (char *A, char *B){
 
 
       int sizeA = 0;
       int sizeB = 0;
       int quant = 0;
       int count = 0;
       while (*A) {
 
               sizeA++;
               A++;
       }
       while (*B){
 
               sizeB++;
           B++;
       }
 
       char **p;
 
       p = new char *[sizeA];
 
       cout << p << endl;
 
       if (sizeA < sizeB){
 
               cout << "The second world bigger than sentance!" << endl;
               return 0;
       }else{
 
               A-=sizeA;
               B-=sizeB;
 
       while (*A){
 
               if (*A == *B) {
 
 
                       *p = A;
                       p++;
                       quant++;
                       count++;
                       cout << "At " << count <<" index!" << endl;
 
               }else{
 
                       count++;
                       cout << "No!"<< endl;
               }
 
               A++;
       }
       }
 
       cout << p << endl;
       cout << quant << "   "<< sizeA<< endl;
 
      
 
               while (quant < sizeA  ){
 
                       quant++;
                                       cout << p << endl;
                       p++;
               }
     
       cout << quant << "   "<< sizeA<< endl;
 
       p-=quant;
 
       cout << p << endl;
 
       for (int i = 0; i < quant; i ++){
       
           cout << *p << endl;
           p++;
               }
 
       p-=quant;
 
        cout << p << endl;
 
       return p;
       
}
 
int main(){
 
char s1[80], s2[80];
 
gets(s1);
gets(s2);
char **q;
 
q = sbp(s1,s2);
 
cout << *q << endl;
 
}
Не могу понять, ведь если сдвинул указатель вперед на n и вернул назад на n должно ведь работать!

Добавлено через 6 минут
какой то касяк в этом цикле while
C++
1
2
3
4
5
6
  while (quant < sizeA  ){
 
                       quant++;
                       cout << p << endl;
              p++;
}
Добавлено через 1 час 28 минут
Вообщем я позаморачивался часок...

Указателю, наверное, не нравиться, что он не на что не указывает...

Вот так вот все работает

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
#include <iostream>
#include <string>
using namespace std;
 
char** sbp (char *A, char *B){
 
 
       int sizeA = 0;
       int sizeB = 0;
       int quant = 0;
       int count = 0;
       char *S  = "\0";
       while (*A) {
 
               sizeA++;
               A++;
       }
       while (*B){
 
               sizeB++;
           B++;
       }
 
       char **p;
 
       p = new char *[sizeA];
 
       if (sizeA < sizeB){
 
               cout << "The second world is bigger than sentance!" << endl;
               return 0;
       }else if ((sizeA == 0 || sizeB == 0) || (sizeA == 0)){
       
           cout << "You did not indicate latter!" << endl;
           return 0;
       
       }else{
 
               A-=sizeA;
               B-=sizeB;
 
       while (*A){
 
               if (*A == *B) {
 
 
                       *p = A;
                       p++;
                       quant++;
                       count++;
                       cout << "At " << count <<" index!" << endl;
 
               }else{
 
                       count++;
                       cout << "No!"<< endl;
               }
 
                       A++;
       }
    
 
              while (quant < sizeA  ){
                      
                       *p ="\0";
                       quant++;
                       p++;
 
               }
 
       p-=quant;
      
       return p;    
       }
}
 
int main(){
 
char s1[80], s2[80];
 
gets(s1);
gets(s2);
char **q;
 
q = sbp(s1,s2);
 
if (q){
 
while (**q){
 
    cout << q <<"   "<< **q++ << endl;
}
}
}
 
Текущее время: 01:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru