Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C - retazec jednotlive slova vo vete opacne

Ahoj rad by som spravil program ktory si od vas vyziada hocijaku vetu a vsetky jej slova prehadze napr. Ahoj volam sa Kubo ........ johA malov as obuK. Nechcem prevratit celu vetu ale jednotlive slova samostatne ale je to asi tazsie nez som si myslel :D

/*
* File: Retazec4_Main.c
* Author: Alohaman
*
* Created on Sobota, 2013, december 14, 10:36
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Retazec4_Header.h"

/*
*
*/
int main()
{
const unsigned short MAX=40;
char veta[MAX];

printf("Napiste vetu zakoncenu medzerov: ");
fgets(veta,MAX,stdin);
slova_opacne(veta);
return 0;
}

void slova_opacne(char veta[])
{
int delitel=0;
int dlzka1=0;
int dlzka2=0;
int i=0;
int dlzka=strlen(veta);
char veta_opacne[dlzka];

while(veta[i]!='\n')
{
if(veta[i]==' ')
{
delitel=dlzka2/2;

for(dlzka1=dlzka2,dlzka2=i;dlzka1<delitel;dlzka2-- ,dlzka1++)
{
veta[dlzka1]=veta[dlzka2];
}
}
i++;
}
printf("%s",veta);
}

Předmět Autor Datum
Jen co mě tak rychle napadlo: Budeš hledat slova. Uložíš si index začátku a konce každého slova (zač…
Niko Bellic 14.12.2013 15:58
Niko Bellic
Tak to najdes v mojom kode :D ale asi mi pretekaju premenne musim na to este mrknut :D
Alohaman 14.12.2013 16:07
Alohaman
Rad by som sa spytal ci existuje prikaz na prehodenie hodnot premennych napriklad char a = char b al…
Alohaman 14.12.2013 16:14
Alohaman
Přes pomocnou proměnnou. char temp; temp = a; a = b; b = temp; Na to si můžeš udělat vlastní funk…
Niko Bellic 14.12.2013 16:16
Niko Bellic
takze taka funkcia neexistuje?? Musim si ju teda vytvorit??
Alohaman 14.12.2013 16:18
Alohaman
V C myslím nic takového není..
Niko Bellic 14.12.2013 16:19
Niko Bellic
OK spravil som to takto ten swap mam ok?? Lebo tam menim hodnoty v retazci /* * File: Retazec4_Main…
Alohaman 14.12.2013 16:25
Alohaman
Měl bys té funkci swap předávat ukazatele, ne hodnoty. Takže swap(&veta[j],&veta[k]); Pak je může mě…
Niko Bellic 14.12.2013 16:32
Niko Bellic
Ok uz som spravil vsetko ako som mal a program mi spravi z Ahoj moje meno je Adam ...... johAmoje me… poslední
Alohaman 14.12.2013 16:41
Alohaman

Jen co mě tak rychle napadlo: Budeš hledat slova. Uložíš si index začátku a konce každého slova (začátek je nějaké písmeno, konec je mezera) a budeš vypisovat to slovo opačně od indexu konce k indexu začátku (budeš dekrementovat index). Tohle uděláš pro každé slovo.

Tvůj kód jsem nestudoval.

Rad by som sa spytal ci existuje prikaz na prehodenie hodnot premennych napriklad char a = char b ale char b sa uz nemoze rovnat char a ked char a = char b :D dufam ze ste pochopili proste naraz vymenit ich hodnoty

OK spravil som to takto ten swap mam ok?? Lebo tam menim hodnoty v retazci

/*
* File: Retazec4_Main.c
* Author: zurek
*
* Created on Sobota, 2013, december 14, 10:36
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Retazec4_Header.h"

/*
*
*/
int main()
{
const unsigned short MAX=40;
char veta[MAX];

printf("Napiste vetu zakoncenu medzerov: ");
fgets(veta,MAX,stdin);
slova_opacne(veta);
return 0;
}

void swap(char* a, char* b)
{
char temp = *a;
*a = *b;
*b = temp;
}

void slova_opacne(char veta[])
{
int delitel=0;
int dlzka1=0;
int dlzka2=0;
int i=0;
int j=0;
int k=0;
int dlzka=strlen(veta);
char veta_opacne[dlzka];

while(veta[i]!='\n')
{
if(veta[i]==' ')
{
delitel=dlzka2/2;
dlzka1=dlzka2;
dlzka2=i;

for(j=dlzka2,k=i;k<delitel;j--,k++)
{
swap(veta[j],veta[k]);
}
}
i++;
}
printf("%s",veta);
}

Ok uz som spravil vsetko ako som mal a program mi spravi z Ahoj moje meno je Adam ...... johAmoje meno je Adam nemozem najst chybu prosiiim :|

/*
* File: Retazec4_Main.c
* Author: zurek
*
* Created on Sobota, 2013, december 14, 10:36
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Retazec4_Header.h"

/*
*
*/
int main()
{
const unsigned short MAX=40;
char veta[MAX];

printf("Napiste vetu zakoncenu medzerov: ");
fgets(veta,MAX,stdin);
slova_opacne(veta);
return 0;
}

void swap(char* a, char* b)
{
char temp = *a;
*a = *b;
*b = temp;
}

void slova_opacne(char veta[])
{
int delitel=0;
int dlzka1=0;
int dlzka2=0;
int i=0;
int j=0;
int k=0;
int dlzka=strlen(veta);
char veta_opacne[dlzka];

while(veta[i]!='\n')
{
if(veta[i]==' ')
{
dlzka1=dlzka2;
dlzka2=i;
delitel=dlzka2/2;

for(j=dlzka1,k=dlzka2;j<delitel;j++,k--)
{
swap(&veta[j],&veta[k]);
}
}
i++;
}
printf("%s",veta);
}

Zpět do poradny Odpovědět na původní otázku Nahoru