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);
}
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.
Tak to najdes v mojom kode :D ale asi mi pretekaju premenne musim na to este mrknut :D
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
Přes pomocnou proměnnou.
char temp;
temp = a;
a = b;
b = temp;
Na to si můžeš udělat vlastní funkci, třeba prohod(a,b);
takze taka funkcia neexistuje?? Musim si ju teda vytvorit??
V C myslím nic takového není..
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);
}
Měl bys té funkci swap předávat ukazatele, ne hodnoty. Takže swap(&veta[j],&veta[k]); Pak je může měnit přímo v tom poli.
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);
}