Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[C] Jak przerobić mój program by użyta została funkcja.

#1
[C] Jak przerobić mój program by użyta została funkcja.
Napisałem program, który wylicza ile razy wystąpiła podana na samym początku liczba. Liczby kolejno porównywane podaję do momentu, aż podam 0. Wtedy program zwraca wynik. Chcę jednak, aby program liczył to w funkcji. Próbowałem to zrobić, ale program się wieszał. Może ktoś doradzić jak ta funkcja powinna wyglądać w tym programie?

Kod:
#include<stdio.h>

int main(){
    
    int x,y[1000],i=0;
    int licznik=0;               //licznik wystąpień liczby x
    
    scanf("%d",&x);     // wczytuje liczbe x
    while(y[i]!=0){
    i++;
    scanf("%d",&y[i]);  //wczytuje kolejne liczby i porownuje je z x
                  
    if(x==y[i]){
    licznik++;}
    };
    
    printf("%d",licznik);  //program zwraca wynik
    
    return 0;
    }
 System operacyjny: windows_seven Przeglądarka: opera
#2
RE: [C] Jak przerobić mój program by użyta została funkcja.
Zanim przerobimy program tak żeby używał funkcji ...
Zwróć uwagę na warunek pętli while. Skąd pewność, że przy pierwszym przebiegu
y[0] będzie różne od 0 ? Nie inicjujesz tablicy y[] więc nie wiesz co tam będzie.
Pętla może się nie wykonać ani razu
 System operacyjny: windows_seven Przeglądarka: firefox
#3
RE: [C] Jak przerobić mój program by użyta została funkcja.
Kod PHP:
#include<stdio.h>

int porownaj(int x)
{
    
int licznik,i,y[1000];
    
licznik 0;
    
0;
    while (
y[i] != 0)
    {
        
i++;
        
scanf("%d",&y[i]);
        if (
== y[i])
            
licznik++;
    }
    return 
licznik;
}
int main(){
    
    
int x,ilosc;
    
    
scanf("%d",&x);     // wczytuje liczbe x
    
ilosc porownaj(x);
    
printf("Wystapilo: %d",ilosc);
    
    return 
0;


AtUp: Lokalne zmienne nie są automatycznie zerowane?
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#4
RE: [C] Jak przerobić mój program by użyta została funkcja.
(22.01.2012, 12:11)igorkoch napisał(a): Zanim przerobimy program tak żeby używał funkcji ...
Zwróć uwagę na warunek pętli while. Skąd pewność, że przy pierwszym przebiegu
y[0] będzie różne od 0 ? Nie inicjujesz tablicy y[] więc nie wiesz co tam będzie.
Pętla może się nie wykonać ani razu

Jeżeli będzie zero, to poda wynik 0 i zakończy program. Nie jest powiedziane, że pierwszy y musi być różny od zera. To jest ok. Teraz skupmy się na funkcji.
AtDarekg11, dzięki, teraz widzę jakie robilem błędy. "+" dla Ciebie Wesoły
 System operacyjny: windows_seven Przeglądarka: opera
#5
RE: [C] Jak przerobić mój program by użyta została funkcja.
Za pierwszym razem warunek while NIE ma nic wspólnego z wprowadzanym x. Więc niezależnie od tego co wprowadzisz pętla się nie wykona
 System operacyjny: windows_seven Przeglądarka: firefox
#6
RE: [C] Jak przerobić mój program by użyta została funkcja.
(22.01.2012, 12:22)igorkoch napisał(a): Za pierwszym razem warunek while NIE ma nic wspólnego z wprowadzanym x. Więc niezależnie od tego co wprowadzisz pętla się nie wykona

Ok. Nie wykona się, ale wynik będzie 0, czyli poprawny.
---
A gdybym chciał sprawdzić kilka takich zestawów danych (liczba x i ciąg y), co powinienem zrobić? Użyć pętli for?
 System operacyjny: windows_seven Przeglądarka: opera
#7
RE: [C] Jak przerobić mój program by użyta została funkcja.
Napisz jak dokładnie chcesz żeby to wyglądało.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#8
RE: [C] Jak przerobić mój program by użyta została funkcja.
Np. na początek podaję liczbę zestawów: n. Potem liczba x i ciąg liczb. Np. jeśli na początku podam liczbę 3, to 3 razy będę podawał liczbę x i ciag y-greków i za każdym tym razem otrzymam wynik.

Z pętlą for cos mi nie wychodzi:
Kod:
#include<stdio.h>

int porownaj(int x)
{
    int licznik,i,y[1000];
    licznik=0;
    i=0;
    while (y[i]!=0)
    {
        i++;
        scanf("%d",&y[i]);
        if (x == y[i])
        licznik++;
    }
    return licznik;
}
int main(){
    int n,i;
    int x,ilosc;
    
    scanf("%d",&n);
    for(i=0;i<n;i++){
    
    
              
    scanf("%d",&x);
    ilosc = porownaj(x);
    printf("Wystapilo: %d",ilosc);
}
    
    return 0;
}
 System operacyjny: windows_seven Przeglądarka: opera
#9
RE: [C] Jak przerobić mój program by użyta została funkcja.
Zmieniłem tego while'a:
Kod PHP:
#include <stdio.h>

int porownaj(int x)
{
    
int licznik,i,y[1000];
    
licznik 0;
    
0;
    while (
true)
    {
        
scanf("%d",&y[i]);
        if (
== y[i])
            
licznik++;
    if (
y[i] == 0)
        break;
    
i++;
    }
    return 
licznik;
}
int main(){
    
    
int x,ilosc,ile;
    
printf("Ile razy sprawdzac: ");
    
scanf("%d",&ile);
    
    for (
int i 0ilei++)
    {
    
printf("Podaj liczbe do sprawdzenia: ");
    
scanf("%d",&x);     // wczytuje liczbe x
    
ilosc porownaj(x);
    
printf("Wystapilo: %d\n",ilosc);
    }
    return 
0;

 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#10
RE: [C] Jak przerobić mój program by użyta została funkcja.
Super. Przeszedłeś na c++, ale spoko Wesoły
 System operacyjny: windows_seven Przeglądarka: opera
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
jak przerobić programjak przerobić program na funkcje c++jak+zrobić+w+c#+program+do+przerabiania+z+km+na+m

Podobne wątki ([C] Jak przerobić mój program by użyta została funkcja.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Niezrozumiały program z książki (funkcja rekurencyjna) szefusik 4 7588 28.05.2015, 21:27
Ostatni post: szefusik
  Klasa, a funkcja zapisująca dane do pliku. Dreamer1x6xX 3 7662 26.03.2015, 08:47
Ostatni post: Szachista
Ściana c++ obiektowe funkcja wstawiajaca znaki w odpowienich miejscach nie działa Mordrak 4 7987 21.01.2015, 00:27
Ostatni post: Mordrak

Skocz do:


Wybrane wątki ([C] Jak przerobić mój program by użyta została funkcja.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Programowanie Batch (CMD) Informatyk2019 0 6077 11.12.2019 18:30
Ostatni post: Informatyk2019
  [JavaScript] Znajdowanie przedziału czasu rafal12999 0 2779 10.12.2019 17:58
Ostatni post: rafal12999
  Przekazywanie wskaźnika przez referencję w Qt Trojan3000 3 14032 10.12.2019 13:16
Ostatni post: Ajgor
  Proszę o pomoc w uzupełnieniu ankiety dt. Zawodu Programisty MaleMonki 0 3295 17.11.2019 12:47
Ostatni post: MaleMonki
  Spring framework – jakie strony polecacie do nauki? olek23 5 8073 15.11.2019 15:57
Ostatni post: Alsenas
  Programowanie windy (problem) w C++ mysza2323 2 7192 06.11.2019 23:04
Ostatni post: mysza2323
  Programy w C ~Anonim 1 7432 22.10.2019 17:48
Ostatni post: Szachista
  Książki do nauki C# olek23 14 21694 17.10.2019 13:06
Ostatni post: Ajgor
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 8459 16.09.2019 11:18
Ostatni post: Ajgor
  Błąd przy uruchamianiu programu w Java z wiersza poleceń Physicist 3 4612 30.08.2019 14:16
Ostatni post: Physicist
  Python z wiersza poleceń Physicist 15 22661 21.08.2019 20:14
Ostatni post: Physicist
  Transfer plików via FTP Visual Basic FireBytes 3 7125 15.08.2019 07:41
Ostatni post: Szachista
  Menu wysuwane z boku patryk67 1 8225 07.08.2019 12:43
Ostatni post: aht
  Visual Basic Excel l.całkowitą przedstawić w postaci szesnastkowej fugaz 4 10167 18.06.2019 21:36
Ostatni post: fugaz
  Nauka do Olimpiady Informatycznej? piotr0905 1 9573 08.06.2019 16:50
Ostatni post: wlisik