Wielka Prośba ( C - Ciąg znaków znaczniki i wskazniki)

0

Mam takie zadanko program ma dzialac tak : z klawiatury podajemy jakis ciąg znaków (max 255). nastempnie podajemy 2 liczby x,y pierwsza oznacza od ktorego znaku wycinamy a druga oznacza ile liczb ma zostac wycietych , wyciety ciąg wprowadzamy do bufora długosci y tam sortujemy i wypisujemy na ekran

prosze o wskazówki na poczatek mógłby ktoś napisac jak sie tworzy tą dynamiczną tablice , nie znam sie zbytnio na C jestem wlasnie w szkole i potrzebuje zrobic to zadanie

#pragma hdrstop
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <stdlib.h>

//---------------------------------------------------------------------------

int ilosc_wycietych;
int *ptr;
char ciag_znakow[255];
char *zn_poczatku;

void Wyciecie(int wyciecie)
{
int licznik;
for(licznik =1; licznik<=ilosc_wycietych; licznik++)
{
*(ptr+licznik) = ciag_znakow[zn_poczatku];
zn_poczatku++;
}
}

#pragma argsused
int main(int argc, char* argv[])
{
int i;

// pobieranie ilosci
printf("podaj jakis ciąg znakow");
scanf("%d",&ciag_znakow);
printf("podaj wskaznik poczatku");
scanf("%d",&zn_poczatku);
printf("podaj ilosc wycietych znakow");
scanf("%d", &ilosc_wycietych);

ptr = malloc( ilosc_wycietych*sizeof(int));

wyciecie();

for(i=1;i<=ilosc_wycietych;i++);
{
for(i=1;i<ilosc_wycietych;i++);
{
if ((ptr[i++])<(ptr[i]));
schowek= ptr[i];
ptr[i]=ptr[i++];
ptr[i++]=schowek;
}
}
return 0;
}

jak na razie mam tyle

0

ten kod dziala dokladnie w taki sposob jak przedstawiles, wczytywanie znakow, potem dwoch liczb, wycinanie, a potem sortowanie i na ekran :)

#include <stdio.h>
#include <string>

using namespace std;

int main()
{
char txt[255];
char txtw[255];
int x,y;
int j;
scanf("%s",&txt);
scanf("%i %i",&x,&y);
x=x-1;
y=y-1;
j=0;
bzero(txtw,sizeof(txtw));
for (int i=x;i<=y;i++) {
txtw[j]=txt[i];
j=j+1;
}

sort(txtw,txtw+strlen(txtw));
printf("%s\n",txtw);

return 0;
}

0
#pragma hdrstop
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <stdlib.h>

//---------------------------------------------------------------------------

char* wyciecie(int pocz, int ile, char* tekst)
{
  char* sub = (char*)malloc(sizeof(char) * (ile + 1)); //jeden wiecej na znak 0
  char* zwracany = pocz;

  int licznik1, licznik2;
  for(licznik1 = pocz, licznik2 = 0; licznik2 < ilosc_wycietych; licznik1++, licznik2++)
  {
   *(sub + licznik2) = *(tekst + licznik1);
  }
*(sub + licznik2) = 0;  //koniec stringa
}

//------------

#pragma argsused
int main(int argc, char* argv[])
{

int ilosc_wycietych;
int zn_poczatku;
char *ptr;
char ciag_znakow[256];  // o jedno wiecej bo znak 0
int i;

// pobieranie ilosci

 printf("podaj jakis ciąg znakow");
 scanf("%s",&ciag_znakow);

 printf("podaj wskaznik poczatku");
 scanf("%d",&zn_poczatku);

 printf("podaj ilosc wycietych znakow");
 scanf("%d", &ilosc_wycietych);

ptr = wyciecie(zn_poczatku, ilosc_wycietych, ciagz_nakow);

for(i=1;i<=ilosc_wycietych;i++);
 {
   for(i=1;i<ilosc_wycietych;i++);
    {
     if ((ptr[i++])<(ptr[i]));
      schowek= ptr[i];
      ptr[i]=ptr[i++];
      ptr[i++]=schowek;
     }
 }
return 0;
}

Nie sprawdzalem fragmentu odpowiedzialnego za sort. Nie wiem czy dziala bo pisalem bez kompilatora. Pozdro!

0

Sluchajcie program wyglada tak

//---------------------------------------------------------------------------

#pragma hdrstop
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <stdlib.h>
#define MAX 255

//---------------------------------------------------------------------------

int ilosc_wycietych;
int *ptr;
char ciag_znakow[255];
char *zn_poczatku;
char schowek;

void Wyciecie(void)
{
int licznik;
for(licznik =1; licznik<=ilosc_wycietych ; licznik++)
{
*(ptr+licznik) = ciag_znakow[zn_poczatku];
zn_poczatku++;
}
}

#pragma argsused
int main(int argc, char* argv[])
{
int i;

// pobieranie ilosci
printf("podaj jakis ciąg znakow");
scanf("%s",&ciag_znakow);
printf("podaj wskaznik poczatku");
scanf("%d",&zn_poczatku);
printf("podaj ilosc wycietych znakow");
scanf("%d", &ilosc_wycietych);

ptr = malloc( ilosc_wycietych*sizeof(int));

Wyciecie();

for(i=1;i<=ilosc_wycietych;i++);
{
for(i=1;i<ilosc_wycietych;i++);
{
if ((ptr[i++])<(ptr[i]));
schowek = ptr[i];
ptr[i]=ptr[i++];
ptr[i++]=schowek;
}
}
for(i=1;i<=ilosc_wycietych;i++);
{
printf("%s",(ptr+i));
}

return 0;
}
//---------------------------------------------------------------------------

Ale mamy problem bo wywala mi bledy takie ..

[C++ Error] zadanie.cpp(23): E2034 Cannot convert 'char *' to 'int'
[C++ Error] zadanie.cpp(41): E2034 Cannot convert 'void *' to 'int *'

Prosze HELP :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1