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

Скопировать строку - C++

Восстановить пароль Регистрация
 
|_|_|yTHuK
 Аватар для |_|_|yTHuK
1 / 1 / 0
Регистрация: 13.12.2009
Сообщений: 76
15.12.2011, 02:09     Скопировать строку #1
Нужно скопировать строку определенное количество раз.
Для этого нужно написать свою функцию.
Вот код:
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
#include <conio.h>
#include <stdio.h>
int funk (char *,char *,int);
 int main(void)
     {
     char s1[80];
     char s2[80];
     int otv,r;
     
         printf("Vvedi s1:");gets(s1);
         printf("\nvvedite skolko raz nuzno skopirovat:");scanf("%d", &r);
         otv=funk(s1,s2,r);
         if (otv==0) printf("\nrezult=%ld\nNorm vipolneno",otv);
         if (otv==-1) printf("\nrezult=%ld\nЫtrokф ne vvedena",otv);
     
     getch(); 
     return 0;        
     }
     
 
 int funk(char *s1, char *s2,int r)
     {
     int ver=2;
     int r1;
     int k,n;
      for (r1=0; *(s1 + r1); r1++);
       printf("\nr1=%d",r1);
       
       
     if (r1!=0)   
        for(k=0;;)
        {
         for(n=0;n<r1;n++,k++)
          s2[k]=s1[n];  
          r=r-1;               
         if (r<=0) break; 
         }                
         
            else ver=-1;    
 
     return ver;
          }
Програмка почему-то виснет после вывода r1. Помогите разобраться. Заранее спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
15.12.2011, 02:44     Скопировать строку #2
Цитата Сообщение от |_|_|yTHuK Посмотреть сообщение
Програмка почему-то виснет после вывода r1
строка 31
|_|_|yTHuK
 Аватар для |_|_|yTHuK
1 / 1 / 0
Регистрация: 13.12.2009
Сообщений: 76
15.12.2011, 16:58  [ТС]     Скопировать строку #3
Цитата Сообщение от alkagolik Посмотреть сообщение
строка 31
а что в ней не так? ограничение стоит в теле цикла.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
15.12.2011, 17:12     Скопировать строку #4
|_|_|yTHuK, да, похоже с ней все в порядке, тогда строка 26, нет условия выхода. Подход к решению никакаой. используйте strcpy, определитесь с языком.
Заботьтесь о тех кто читает вашу работу. "Выровненный" код удобно читать, давайте осмысленные имена переменным, непишитеслитно.

Добавлено через 1 минуту
кроме всего прочего скорее всего вы не поняли задание.
|_|_|yTHuK
 Аватар для |_|_|yTHuK
1 / 1 / 0
Регистрация: 13.12.2009
Сообщений: 76
15.12.2011, 23:14  [ТС]     Скопировать строку #5
Цитата Сообщение от alkagolik Посмотреть сообщение
|_|_|yTHuK, да, похоже с ней все в порядке, тогда строка 26, нет условия выхода. Подход к решению никакаой. используйте strcpy, определитесь с языком.
Заботьтесь о тех кто читает вашу работу. "Выровненный" код удобно читать, давайте осмысленные имена переменным, непишитеслитно.

Добавлено через 1 минуту
кроме всего прочего скорее всего вы не поняли задание.
Во-первых, уловием выхода в строке 26 является несуществование элемента строки(этот for просто подстчитывает количество элементов в строке), притом она выполняется и заканчивается нормально, т.к. на экран выводится "r1=".
Во-вторых, подход к решению вполне осмысленный. Я беру циклом for и копирую элементы в соответствующие позиции, при второй итерации уже будут присваиваться значения во вторую строку элементам с соотвестсвующими индексами, только увеличенными на r1(т.е. длину первой строки).
В-третьих, признаю, забыл. В задании было сказано, что никакие функции из "string.h" использовать нельзя.
В-четвертых, возможно переменные и не совсем понятны, но все же там есть смысл.
В-пятых, код выровнен по функциям.
В-шестых, в каком понимании слитно?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
15.12.2011, 23:33     Скопировать строку #6
|_|_|yTHuK, а вы уверены что программа не работает? я сейчас скопипастил, пока ровнял даже прочитать код получилось. Программа работает, и заканчивается с кодом 0. То что вы за целый день не смогли найти ошибку, так кто вам доктор? Хотите чтобы ваши программы читали? так потрудитесь их писать читабельно. Функция funk возвращает значение 2 как вы и написали, а потому не выполняются 2 условия в теле main.
Yandex
Объявления
15.12.2011, 23:33     Скопировать строку
Ответ Создать тему
Опции темы

Текущее время: 00:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru