Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Kopiowanie co drugiego znaku

Ostatnio zmodyfikowano 2012-12-10 17:12
Autor Wiadomość
Nindix
Temat założony przez niniejszego użytkownika
[C++] Kopiowanie co drugiego znaku
» 2012-12-10 11:54:09
Mam takie zadanie :
"Mamy dwie tablice znakowe o identycznej długości. W jednej z nich znajduje się c-string.

Napisz funkcje, która przekopiuje co 2 literę z jednej funkcji do 2. To znaczy : jeśli w jedne tablicy jest tekst "instytut" to w drugiej powinien znaleźć się C-string "isyu".

Poprawiałem ta funkcje i pisałem już na nowo 5 razy nie rozumiem gdzie robię błąd. Proszę was o pomoc oto kod :

C/C++
// z4.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>

using namespace std;

char cstring[ 80 ] = { "Witam serdecznie" };
char okrojony[ 80 ];

//****************************************
void przepisz_co_2( char od_c[], char do_c[] );
//****************************************
int _tmain( int argc, _TCHAR * argv[] )
{
    przepisz_co_2( cstring, okrojony );
   
   
    for( int i = 0;; i++ )
    {
        cout << cstring[ i ];
       
        if( cstring[ i ] == 0 )
             break;
       
    }
   
    cout << endl;
   
    for( int i = 0;; i++ )
    {
        cout << okrojony[ i ];
       
        if( okrojony[ i ] == 0 )
             break;
       
    }
   
    cout << endl;
    system( "pause" );
    return 0;
}
//****************************************
void przepisz_co_2( char od_c[], char do_c[] )
{
    for( int i = 0;; i++ )
    {
       
        if( i == 0 )
        {
            do_c[ i ] = od_c[ i ];
            continue;
        }
       
        do_c[ i ] = od_c[ i + 1 ];
        if( od_c[ i ] == 0 || od_c[ i - 1 ] == 0 ) break;
       
    }
}
P-70701
kubawal
» 2012-12-10 16:44:43
C/C++
for( int i = 0;; i++ )
{
    cout << okrojony[ i ];
   
    if( okrojony[ i ] == 0 )
         break;
   
}
 

C/C++
for( int i = 0;; i++ )
{
    cout << cstring[ i ];
   
    if( cstring[ i ] == 0 )
         break;
   
}
 

Co?!

Co do tej funkcji robisz tak:
C/C++
for( int i = 0, i2 = 0; i <= strlen( od_str ); i++ )
{
    if(( i % 2 ) == 0 ) // parzysta liczba lub 0
    {
        do_str[ i2 ] = od_str[ i ];
        i2++;
    }
}
 
P-70705
Nindix
Temat założony przez niniejszego użytkownika
» 2012-12-10 16:50:02
To wyświetla c-string czyli kolejne elementy tablicy, aż napotka 0, ponieważ każdy c-string jest zakończony znakiem NULL czyli 0.
P-70706
kubawal
» 2012-12-10 16:52:22
To wyświetla c-string czyli kolejne elementy tablicy, aż napotka 0, ponieważ każdy c-string jest zakończony znakiem NULL czyli 0.

CO? Wystarczy zwykłe
cout << cstring << ' ' << okrojony;
P-70707
Nindix
Temat założony przez niniejszego użytkownika
» 2012-12-10 17:03:59
Ooo.. Nie wiedziałem dzięki.

A co do funkcji to nie mogę tam używać takich funkcji jak
strlen( od_str )
Jedyne operacje dozwolone są na tablicach znakowych.
P-70709
kubawal
» 2012-12-10 17:09:29
Jedyne operacje dozwolone są na tablicach znakowych.
No to se napisz jakąś funkcje strlen'o-podobną
P-70711
Nindix
Temat założony przez niniejszego użytkownika
» 2012-12-10 17:12:02
dobra zrobiłem jakoś
C/C++
void przepisz_co_2( char od_c[], char do_c[] )
{
   
    for( int i = 0, i2 = 0;; i++ )
    {
       
        if(( i % 2 ) == 0 )
        {
            do_c[ i2 ] = od_c[ i ];
            i2++;
        }
       
        if( od_c[ i ] == 0 ) break;
       
       
    }
   
}

Dzięki za pomoc udało mi się zrobić i nauczyłem się czegoś.

Ciągle sobie zapominam co znaczy operator % :(

Temat do zamknięcia.
P-70712
« 1 »
  Strona 1 z 1