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);
}
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);
}