niedzialajacy prosty program napisany w C

rahl

niedzialajacy prosty program napisany w C

Post autor: rahl »

witam,

chcialem napisac program, ktory po wpisaniu jakiegos wyrazu wyswietlalby go od konca. wyszlo mi cos takiego:

Kod: Zaznacz cały

#include <stdlib.h>
#include <stdio.h>
#define ROZMIAR 20

int main()
{
 char t[ROZMIAR]; // tutaj miesci sie wyraz
 int i, n;
 int l=0, p;
 char c;
 p = n-1;

 printf("liczba znakow: 
"); // osoba wpisuje liczbe znakow, z ktorej sklada sie dany wyraz
 scanf("%d", &n);

 for(i=0;i<n;i++)
 {
 printf("kolejny znak: 
");  // w tym momencie wpisywane sa kolejne znaki wyrazu
 scanf("%s", &t[i]);
 }

 while(l<p)   // zamiana kolejnosci
 {
  c=t[l];
  t[l]=t[p];
  t[p]=c;
  l++;
  p--;
 }

 i=0;
 for (i=0;i<n;i++)
     printf("%s", t[i]);  // wyswietlanie wyrazu w odwrotnej kolejnosci

 system("pause");
 return 0;
}
niestety program mi nie dziala i za bardzo nei wiem dlaczego, moglbys ktos napisac w ktorym miejscu jest blad czy teez moze caly kod jest do kitu? z gory dziekuje

edit: w komentarzach napisalem co chcialbym zeby program wtedy robil
Awatar użytkownika
Sokół
Użytkownik
Użytkownik
Posty: 451
Rejestracja: 17 wrz 2006, o 19:22
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 15 razy
Pomógł: 55 razy

niedzialajacy prosty program napisany w C

Post autor: Sokół »

nie znam sie na C, ale konstrukcja programu by mogla wygladac w taki sposob, ze wpisany wyraz jest tablica zlozona z n elementow (kazdy element to jedna litera). A jak wypisuje od konca, no to poprostu wypisuje poszczegolne elementy tablicy od konca.
rahl

niedzialajacy prosty program napisany w C

Post autor: rahl »

w takim razie program chyba powinien wygladac tak:

Kod: Zaznacz cały

#include <stdlib.h>
#include <stdio.h>
#define ROZMIAR 20

int main()
{
 char t[ROZMIAR]; // tutaj miesci sie wyraz
 int i, n;
 int l=0, p;
 char c;
 p = n-1;

 printf("liczba znakow: 
"); 
 scanf("%d", &n);

 for(i=0;i<n;i++)
 {
 printf("kolejny znak: 
"); 
 scanf("%s", &t[i]);
 }


 for (i=n-1;i>0;i--)
     printf("%s", t[i]); 

 system("pause");
 return 0;
}
a mimo to program dalej nie chce dzialac
Awatar użytkownika
robert179
Użytkownik
Użytkownik
Posty: 469
Rejestracja: 24 lip 2005, o 16:32
Płeć: Mężczyzna
Lokalizacja: Kęty
Podziękował: 111 razy
Pomógł: 13 razy

niedzialajacy prosty program napisany w C

Post autor: robert179 »

Może spróbuj użyć tablic.
ziper
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 27 lis 2006, o 19:52
Płeć: Mężczyzna
Lokalizacja: Lwówek Śląski

niedzialajacy prosty program napisany w C

Post autor: ziper »

Poprawiłem Twój program.
Zrobiłeś kilka błędów:
1. jeśli używasz flagi %s to nie musisz podawać znak po znaku. Wystarczy, że podasz cały wyraz. Jeśli chciałbyś podawać znak po znaku w pętli, to powinieneś używać w całym programie flag %c. i twój program chyba by działał.
2. Program zupełnie nic Ci nie wyświetlał przez to polecenie: printf("%s", t); Zapomniałeś dodać & przed nazwą tablicy.
3. for (i=n-1;i>0;i--) tutaj pętla powinna jeszcze obejmować zero, więc: for (i=n-1;i>=0;i--)
flaga %.1s oznacza, że wyświetlasz tylko jedną literę słowa a nie całe. przy zastosowaniu %s wyświetla wyraz za każdym razem od miejsca, które chciałeś czytać do końca, czyli pustego znaku.

teraz program działa tak jak chciałeś

Kod: Zaznacz cały

#include <stdlib.h>
#include <stdio.h>
#define ROZMIAR 20

int main()
{
 char t[ROZMIAR]; // tutaj miesci sie wyraz
 int i, n;
 int l=0, p;
 char c;
 p = n-1;

 printf("liczba znakow: 
");
 scanf("%d", &n);
printf("podaj wyraz: 
");
 scanf("%s", &t);

 for (i=n-1; i>=0; i--)
     printf("%.1s,", &t[i]); 

 system("pause");
 return 0;
}
ODPOWIEDZ