freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

πρόγραμμα c το οποίο να διαβάζει μια ακολουθία...


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [6 Μηνύματα]      Bookmarks Tags: Πρόγραμμα Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
ΑποστολέαςΜήνυμα
geotheod


Μέλος από: 19 Απρ 2005
Μηνύματα: 54
Περιοχή: Αθήνα
View users profile Visit posters website
ΜήνυμαΣτις: 24 Μαη 2005 23:29    Θέμα: πρόγραμμα c το οποίο να διαβάζει μια ακολουθία... Απάντηση με παράθεση  Mark this post and the followings unread

Παιδια αν καποιος γνωριζει πως λυνεται το παρακατω προγραμμα θα με εσωνε... Μας το εβαλαν ασκηση και οσο κι αν προσπαθω δεν μου βγαινει!

Γράψετε πρόγραμμα C το οποίο να διαβάζει μια ακολουθία από Ν τυχαίους ακέραιους αριθμούς όπου Ν σταθερά. Το πρόγραμμα σας να βρίσκει και να εκτυπώνει τους αριθμούς από μια φορά τον καθένα. Δηλαδή να μην εκτυπώνει τις επαναλήψεις ενός αριθμού. Για παράδειγμα, για είσοδο 10 6 10 3 6 10 7 10 7 6 να δίνει έξοδο 10 6 3 7. Σημείωση: Να χρησιμοποιήσετε μόνο μονοδιάστατους πίνακες.
greekbytes
WebDev Moderator

Μέλος από: 15 Νοε 2002
Βοηθήματα: 5
Νέα: 1
Templates: 2
Μηνύματα: 256+

Περιοχή: Αθήνα
View users profile Visit posters website
flickr 
ΜήνυμαΣτις: 25 Μαη 2005 01:11    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Μία απλή σκέψη είναι η εξής:
Εισάγεις τα δεδομένα του πρώτου πίνακα (έστω arxikos ο πρώτος πίνακας) με μία επανάληψη για i από 1 μέχρι Ν.
Παράλληλα περνάς την πρώτη τιμή του πίνακα σε έναν άλλον δηλ. περνάς την τιμή arxikos[1] στον πίνακα telikos (telikos[1]) * και για κάθε τιμή που εισάγεις ελέγχεις αν υπάρχει στον πίνακα telikos και αν δεν υπάρχει την περνάς σ'αυτόν. Για αναζήτηση/εισαγωγή των στοιχείων στον telikos μπορείς να χρησιμοποιήσεις κάποια βοηθητική μεταβλητή σαν δείκτη. Πχ. θέτεις μία μεταβλητή A=2 και για κάθε στοιχείο που περνάς το Α αυξάνεται κατά 1 ώστε το επόμενο να μπεί στη θέση telikos[A+1].
Μετά με μία 2η επανάληψη for/while κλπ. τυπώνεις τα δεδομένα του telikos.

_________________
Νίκος MyNextEpisode - Your TV shows air dates | Backslash.gr - web development blog
agrippas
Script Master

Μέλος από: 18 Ιουλ 2002
Βοηθήματα: 3
Μηνύματα: 256+

Περιοχή: Υπερπέραν
View users profile Visit posters website
twitter 
ΜήνυμαΣτις: 25 Μαη 2005 04:18    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Λύση 1.

Βασικά η λογική του greekbytes πιο αναλυτικά: Παίρνουμε το πρώτο νούμερο και το βάζουμε πρώτο στοιχείο σε ένα δεύτερο array:

κώδικας:
array1 = {10, 6, 10, 3, 6, 10, 7, 10, 7, 6}
array2 = {10}


Τσεκάρουμε αν το δεύτερο νούμερο του array1 είναι μέσα στον array2. Αν όχι το χώνουμε στον array2 κι αυτό:

κώδικας:
array1 = {10, 6, 10, 3, 6, 10, 7, 10, 7, 6}
array2 = {10, 6}


Τσεκάρουμε αν το τρίτο νούμερο του array1 είναι μέσα στον array2. Στην περίπτωσή μας είναι και δεν κάνουμε τίποτα.

Τσεκάρουμε αν το τέταρτο νούμερο του array1 είναι μέσα στον array2. Δεν είναι, άρα το χώνουμε μέσα:

κώδικας:
array1 = {10, 6, 10, 3, 6, 10, 7, 10, 7, 6}
array2 = {10, 6, 3}


...

Όταν θα έχουμε τελειώσει με το τελευταίο νούμερο του array1, ο array2 θα είναι ο πίνακας που θέλουμε.

Όπως καταλαβαίνεις θα χρειαστείς μια while loop ή θα πρέπει να κάνεις τη διαδικασία αυτή αναδρομική (recursive).

Λύση 2.

Φτιάχνεις ένα vector από τον {10, 6, 10, 3, 6, 10, 7, 10, 7, 6} (παράδειγμα) στο οποίο θα βάλεις ΜΟΝΟ εκείνα που δεν υπάρχουν ήδη.

Η δεύτερη λύση είναι προτιμότερη από πλευράς ταχύτητας, αλλά δεν ξέρω αν τη δεχτεί. Εν πάση περιπτώσει επειδή δεν ξέρω C, σου την έφτιαξα σε Java για να δεις το σκεπτικό - μη δώσεις σημασία στα objects:

κώδικας:
import java.util.LinkedList;
       
public class CheckNumbers {
   
   public static void main(String[] args){
     
       // logika esy ton array 8a ton kaneis input apo ton user

       int[] array1 = {10, 6, 10, 3, 6, 10, 7, 10, 7, 6};
       LinkedList list = new LinkedList();
       
       // vazoume to prwto stoixeio tou array1 sth list:
       list.addLast(new Integer(array1[0]));
       
       // tsekaroume an ta epomena stoixeia tou array1 einai sth list.
       for (int j = 1; j < array1.length; j++){
            // An oxi, ta xwnoume mesa:
            if (!list.contains(new Integer(array1[j])))
                  list.add(new Integer(array1[j]));
       }

       // output
       System.out.println(list.toString());
    }
}


Το πρόγραμμα αυτό δίνει έξοδο [10, 6, 3, 7] και είναι ανεξάρτητο του μεγέθους του array.
berserk


Μέλος από: 14 Σεπ 2005
Μηνύματα: 5
Περιοχή: Thessaloniki
View users profile Visit posters website
ΜήνυμαΣτις: 14 Σεπ 2005 18:00    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

κώδικας:
#include <stdio.h>
#include <alloc.h>

#define MAX_ELEMENTS 40

int main(int argc, char** argv) {
// Dinamiki desmeusi mnimis:
int* array = (int*)malloc(sizeof(array));
// an uparxei problima me ton compiler xrisimopoihse:
// int array[MAX_ELEMENTS];
int marked = 0, length = 0, n = 0;

printf("Enter a sequence of numbers, separeted by space.\n");
printf("Press '0' to invoke the duplicate-filtering process.\n");
do {
 scanf("%d",&array[n]);
} while ( array[n++] != 0 );

length = n;

for (int i=0; i<length; i++) {
 for (int j=0; j<length; j++)
  if ( array[j] == array[i] && j!=i )
   array[i] = marked;
}

printf("\nfiltering duplicates and printing ouput...\n");
for (int loop=0; loop<length; loop++)
  if ( array[loop] != marked )
     printf("%d ",array[loop]);   

free(array);
return 0;
}

_________________
"Technology is dominated by two types of people: those who understand what they do not manage, and those who manage what they do not understand." Putt's Law
myle


Μέλος από: 18 Ιουν 2005
Μηνύματα: 207
Περιοχή: Πάτρα
View users profile Visit posters website
ΜήνυμαΣτις: 21 Οκτ 2005 10:48    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Mipws gnorizete pos mporoume na dimiourgisoume synartisi h opoia na ypologizei thn tetragonikh riza xoris na kaloume bibliothiki?

(Signomi gia ta greeklish den mporo na grapso sta ellinika apo ton ypologisti pou eimai)

_________________
soteres2002
S. & H. Moderator

Μέλος από: 05 Μαρ 2004
Βοηθήματα: 1
Νέα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Ιωάννινα
View users profile
ΜήνυμαΣτις: 21 Οκτ 2005 14:24    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

boreis to px b^(1/2) na to kaneis fragment se poliarithmous orous kai na tous prosteseis olous autous.

iparxei kai ena allo kolpaki me to opoio bnoreis na breis mia riza ipologizontas mia mathimatiki seira me enan brogxo.

kalitera omos na kaleis tin libmath apo to programma sou kai kata to compile time me ton gcc na dineis ksero go:

gcc -o some some.c -lmath
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [6 Μηνύματα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Γλώσσες Προγραμματισμού » C, C++
Τώρα είναι 21 Ιαν 2017 21:43 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos