• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wskaźniki i Tablice

Object Storage Arubacloud
0 głosów
329 wizyt
pytanie zadane 3 grudnia 2017 w C i C++ przez MrSqoobany Początkujący (460 p.)

Cześć, od razu wspomnę, że przejrzałem już sporo programów tego typu ale były napisane albo bardzo nieczytelnie albo były tam takie rzeczy których zwyczajnie nie rozumiem. Mam do napisania program w języku C, który odwróci podany tekst i jeśli będzie poprawnie odwrócony to program ma zwrócić liczbę 1, a jeśli nie to 0. Pan profesor dał nam podpowiedź żeby wykorzystać taką funkcję: 

void reverse(char *s1, char *s2)

Domyślam się, że trzeba wykorzystać pętle, ale nie mam pojęcia jak je zapisać. Czy ktoś mógłby pomóc? Z góry dziękuję i pozdrawiam.

3 odpowiedzi

0 głosów
odpowiedź 3 grudnia 2017 przez j23 Mędrzec (194,920 p.)

"wykorzystać", czy "napisać" taką funkcję? Czym są parametry s1 i s2?

komentarz 3 grudnia 2017 przez MrSqoobany Początkujący (460 p.)
napisać, s1-wprowadzony tekst, s2-odwrócony. Tyle nam powiedział i nic więcej, laborki wygladaja tak że mówi dwa słowa i wychodzi na całe zajęcia eh.
komentarz 3 grudnia 2017 przez j23 Mędrzec (194,920 p.)

To jeszcze wytłumacz mi to, bo trochę jest dziwne:

jeśli będzie poprawnie odwrócony to program ma zwrócić liczbę 1, a jeśli nie to 0.

Co to znaczy "tekst poprawnie odwrócony"? Przecież każdy tekst da się poprawnie odwrócić ;)

komentarz 3 grudnia 2017 przez MrSqoobany Początkujący (460 p.)
no właśnie to jest pan profesor haha, wg. niego to ma być sprawdzenie czy jest dobrze odwrócone. (nie wiem po co to ma być jak pewnie za kazdym razem bedzie zwracalo 1 haha)
komentarz 3 grudnia 2017 przez j23 Mędrzec (194,920 p.)

Może o palindromy chodzi... No nieważne. Masz tu funkcję, resztę sam wykombinuj:

void reverse(char *s1, char *s2)
{
	s2 += strlen(s1);
	*s2 = '\0';
	while((*--s2 = *s1++));
}

 

0 głosów
odpowiedź 3 grudnia 2017 przez Knayder Nałogowiec (37,640 p.)

Polecam zacząć od zapoznania się z c-style stringiem
http://www.learncpp.com/cpp-tutorial/66-c-style-strings/

Każdy taki string, kończy się znakiem NULL. Teraz pytanie, czy NULL także zmienia swoje położenie? Zgaduję że nie, więc musisz zrobić to tak, że znajdujesz wielkość tych stringów (Zakładam  ze mają taką samą długość) i tworzysz pętle for, która będzie iterowała jeden string od przodu, a drugi od tyłu.

bool isReversed = true;
int i = 0;
for(i; i<size; ++i) {
    if(s1[i] != s2[size-1-i]) {
        isReversed = false;
        break;
    }
}
return isReversed;
0 głosów
odpowiedź 3 grudnia 2017 przez MrSqoobany Początkujący (460 p.)

Doszedłem do takiego czegoś: 

#include <stdio.h>
#include <stdlib.h>
char tekst[255];
void reverse(int i,char tekst[])
{
	if(tekst[i]!='\0')
	{
		reverse(++i,tekst--);
	}
	printf("%c",tekst[i-1]);
}


int main(void)
{
    int i=0;
	printf("PODAJ TEKST DO ZAMIANY: ");
	gets(tekst);
    reverse(i,tekst);
	printf("\n");
	system("pause");
	return 0;
}

ale dalej nie wykorzystałem wskaźników. Jak zmodyfikować ten program żeby wykorzystywał wskaźniki jak w poleceniu?

komentarz 4 grudnia 2017 przez j23 Mędrzec (194,920 p.)
Przecież dostałeś ode mnie funkcję, która robi to na wskaźnikach.

Podobne pytania

0 głosów
1 odpowiedź 208 wizyt
pytanie zadane 1 grudnia 2022 w C i C++ przez Pysa6 Nowicjusz (220 p.)
0 głosów
1 odpowiedź 259 wizyt
pytanie zadane 7 września 2022 w C i C++ przez benny13 Obywatel (1,150 p.)
0 głosów
0 odpowiedzi 430 wizyt

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...